Прогаем с кенгурой
230 subscribers
199 photos
194 videos
17 files
160 links
Сидим с кенгурой под горой, запекаем текстуры...

{ программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры }

https://gostrobrod.dev
Download Telegram
Прогаем с кенгурой
Рандомно генерить амебок (визуализация параметров симуляции) вышло залипательнее, чем сама симуляция 🤠
Надо бы в будущих версиях сделать плавный переход между амебками при смене параметров.

Придется правда затаскивать вьюмодель для вьюхи - сейчас оно обходится без нее - контроль параметров осуществляется ее парентом, а она только рисует и ловит тачи, если попросили.

Не идеально, да, но для первой версии сгодится. Времени было одни выходные на собрать новую песочницу.
💯6
стащил слайд из какого-то доклада с какой-то демосценовской конфы (это все детали, которые я помню относительно этого слайда🤠, но идеи очень годные)

Upd:
Вообще, даже если вам не интересна демосцена как таковая, советую заглядывать туда за интересными решениями, алгоритмами и вдохновением
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Эксперименты по сбору пресетов к скорому релизу песочницы
👀1
В преддверии релиза физарума расскажу, пожалуй про остальные песочницы.

>>Тиамат<<

Это первая песочница, про клеточные автоматы. Начиналась на тему потыкать SwiftUI, и симуляция там была тупо как заглушка. Теперь это уже полноценная песочница для экспериментов с клеточными автоматами: редактор поля, правил и прочее.

На ней же отлаживали процессы в команде, делали эксперименты с яблочной инфрой и онбордили людей. Теперь просто ждет, когда я доделаю последнюю фичу про флотовые правила, но там вопрос исключительно в UX.

Попробовать можно тут: https://apps.apple.com/app/apple-store/id1580189385
Что такое клеточные автоматы рассказывал тут: https://youtu.be/F7z_MHX3AtA
🔥42
Forwarded from Генканал
Media is too big
VIEW IN TELEGRAM
Lambdas, lambdas and more lambdas

Встреча прошла с участием Питера Пасмы — генеративного художника из Нидерландов, который рассказал о своем исследовании минимальных представлений алгоритмов, бинарном λ-исчислении и компрессии программ. Обсуждались как теоретические основы (λ-исчисление, Колмогоровская сложность), так и практические эксперименты: генерация SVG-графики с помощью сверхкоротких программ, оптимизация кода, автоматизация перестановки аргументов и поиск минимальных описаний.

⏱️ Таймкоды:
00:00 — Приветствие, запуск записи, знакомство
02:10 — Введение в λ-исчисление, базовые понятия
06:40 — Числа Чёрча, функции, каррирование
11:30 — Колмогоровская сложность и минимальное описание
15:00 — Бинарное λ-исчисление: идея, кодировка, мотивация
20:45 — Примеры кодирования чисел и функций
26:00 — Парсер и исполнение λ-выражений на JavaScript
32:40 — Преобразование в бинарный вид, оптимизация
38:30 — Генерация SVG-графики через минимальные программы
45:00 — Автоматизация оптимизации, перестановка аргументов
50:20 — Вопросы про эффективность и кодирование
54:00 — Практические ограничения, перспективы
58:30 — Заключение, вопросы слушателей, ресурсы

#meetup
👍1
Итак, вторая песочница

>>Квантум<<

Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000.

Я НЕ использовал всякие специально для этого созданные подходы типа Барнеса-Хута. Во-первых, оно вполне себе отлично работает на современном железе и так, во-вторых, не придумал быстро, как затащить его на видюху, а долго думать - свободного времени нет. Может, когда-нибудь затащу и можно будет на пару порядков увеличить число частиц (правда там уже их рендеринг встрянет).

Попробовать можно тут: https://apps.apple.com/app/apple-store/id6504465371
Как это работает, рассказывал тут: https://youtu.be/IPrP0BLocW4 и https://youtu.be/sSzRzFtI2KQ
🔥21
Прогаем с кенгурой
Итак, вторая песочница >>Квантум<< Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000. …
Немного про реализацию:

Сделано оно максимально тупо.

- Есть два буфера: с одного читаем, в другой пишем, потом меняем местами - пинг-понг то бишь
- На число частиц создаем тредов на видюхе
- В каждом треде считаем данную частицу относительно всех остальных

Да, по сути у нас O(n^2) довольно тяжелых вычислений. Альтернатива
1. Затащить Барнеса-Хута, но там надо считать дерево на видюхе, при этом в худшем и среднем случаях оно все равно будет как и раньше + собственно дерево.
2. Делать несколько проходов и, например, сохранять расстояния, чтобы не пересчитывать каждый раз. И оно могло бы выстрелить, если б не уперлось в работу с памятью, которая на нынешних видюхах медленнее, чем арифметика.

Еще момент: для симуляции высоких скоростей пришлось масштабировать время, иначе частицы тупо пролетают сквозь друг друга.

Туннельный эффект - доказательство, что наш мир - симуляция?


По рендеру все просто: тупо рисуем .point-ы нужного размера. Таким образом, теоретически нет ограничений на размер поля - только на максимальный размер пойнта (256).
💯5
Media is too big
VIEW IN TELEGRAM
а завтра, если яблоки апрувнут, релизну физарум - он вот так выглядит
7
Пока яблоки делают мне мозг с ревью физарума, вот вам видео, как собрать амебку в шейдере на SDF (такое можно затащить в SwiftUI-ный .colorEffect начиная с iOS17 и будет вам кастомный компонент - выше есть запись с экрана его).

Собираю я ее в KodeLife. Если вам часто приходится писать шейдеры - советую. Отличный инструмент для их прототипирования.

https://youtu.be/za4wfmEnN6o
👍8🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
натуральный глитч - тупо рисуем мусор из неинициализированной переменной или даже вот так:

float4 draw(float v) {

}


У метала еще есть способ загрузки "фреймбуфера" .dontCare. Когда он не перекрывается новым цветом, там может оказаться что угодно - в основном мусор, но иногда и куски других текстур. То есть можно взять loadAction=.dontCare, storeAction=.store и получить текстуру с глитчем натуральным на выходе - даже дроколы дергать не надо и шейдеры писать.
👍3
Если вам надо заинтересовать школьников или студентов в полярной системе координат - вот, например, кленовый листочек)))

https://www.desmos.com/calculator/fttpzcif59
3
Для тех, кто пишет под мак.

Если передать в параметры запуска -_NS_4445425547 YES, то вам станет доступно дополнительное дебажное меню, где вы сможете посмотреть и поменять всякое.

Вдруг кому пригодится
🔥18
В соседнем канале зашла речь за древности, вспомнил, что у меня есть книженция с 3.5” дискетой. Где-то еще была 5”, но затерялась при переездах.

Кто-то еще помнит, интересно, времена, когда архив разбивали на части, чтобы каждую уместить на дискету?
🤝5👍2👀1
Media is too big
VIEW IN TELEGRAM
Яблоки наконец прочитали, что я им написал в Review notes (но все еще не ревьювнули покупки-донаты за 3 недели). Но не суть - я релизнул

>>Physarum<<

Если в клеточных автоматах мы меняем значения ячейки (пикселя), а в симуляции частиц - двигаем частицы, то здесь мы двигаем частицы, которые меняют значения пикселей.

Более детально, как оно работает, сделаю видео позже, а пока можете потыкать тут
🔥11
Ревью у яблок это тот еще квест. История:

Акт 1.
Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все ок. Расширять политику не возброняется - расширили.

Акт 2.
Удалили рекламу - убрали трекинг. Яблоки требуют указать флаги, что есть трекинг и спрашивать его, так как в политике (для стора) он укзан. Пишем, что трекинга нет, а политику поменять не можем, так как она для стора сразу, а в сторе трекинг есть. Таким образом провели несколько итераций режектов и сабмитом ревью.

Акт 3.
Решили наконец через апелляцию - иначе никак это не работает.

Тут два вопроса к этой истории:
- Почему рядовые проверяющие вообще не читают комментарии и переписки к ревью?
- Почему за столько лет яблоки не исправили как-то эту проблему курицы и яйца (а она действительно старая)?
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь она плавно переходит между состояниями.

Обошелся без вью модели биндингами. Не люблю плодить сущности без необходимости
🔥6👍2