Прогаем с кенгурой
Kanalga Telegram’da o‘tish
Сидим с кенгурой под горой, запекаем текстуры... { программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры } https://gostrobrod.dev https://boosty.to/gostrobrod
Ko'proq ko'rsatish236
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kun
+130 kun
Postlar arxiv
Repost from Генканал
Интересная реализация глитча от @coding_with_kangaroo.
Если вы пилите что-то на Метале, то можете воспользоваться UB в Metal Shading Lnaguage (С++14) и получить натуральный глитч:
Вариант 1. Через безвозвратную функцию:
float4 garbage() {
}
fragment float4 fshTextureQuad() {
return garbage();
}
Вариант 2. Через неинициализированную переменную:
fragment float4 fshTextureQuad() {
float4 garbage;
return garbage;
}
Есть еще один способ - взять мусор и записать его в выходную текстуру, но он не стабилен и может возврщать черный или мадженту - без спецэффектов.
let descriptor = MTLRenderPassDescriptor()
pass.colorAttachments[0].texture = someTexture
pass.colorAttachments[0].loadAction = .dontCare
if let encoder = commandBuffer.makeRenderCommandEncoder(descriptor: descriptor) {
encoder.endEncoding()
}
Самые классные спецэффекты с глитчем на весь монитор (или два - сколько их у вас) можно получить, устроив stack overflow на видюхе (например в кернеле).
#glitch+1
Это SDF точек на кубической кривой Безье, взятых с равным шагом
t. Как видите, плотность точек неравномерная, то есть равный шаг между значениями параметра не гарантирует равного расстояния между результирующими точками.
С другой стороны, как видно на второй картинке, плотность тем выше, чем выше кривизна. То есть, в принципе, можно отрисовать кривую Безье кусочно линейной интерполяцией, использую равный шаг t без лишних заморочек.Не перерабатывайте. Если вы чувствуете усталость - идите отдыхать. Если чувствуете «второе дыхание» - немедленно бросайте работу и идите отдыхать!
Иначе вы такого наворотите на этом «втором дыхании», что с утра волосы дыбом встанут.
Потому что по сути ощущение вдохновения, потока, концентрации и прочего - состояние переутомления, и мозг работает в режиме выживания, что уже не совсем адекватно вашим рабочим задачам.
Хотите раньше и качественнее закончить проект - идите проспитесь. Такой вот парадокс
Теперь она плавно переходит между состояниями.
Обошелся без вью модели биндингами. Не люблю плодить сущности без необходимости
Ревью у яблок это тот еще квест. История:
Акт 1.
Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все ок. Расширять политику не возброняется - расширили.
Акт 2.
Удалили рекламу - убрали трекинг. Яблоки требуют указать флаги, что есть трекинг и спрашивать его, так как в политике (для стора) он укзан. Пишем, что трекинга нет, а политику поменять не можем, так как она для стора сразу, а в сторе трекинг есть. Таким образом провели несколько итераций режектов и сабмитом ревью.
Акт 3.
Решили наконец через апелляцию - иначе никак это не работает.
Тут два вопроса к этой истории:
- Почему рядовые проверяющие вообще не читают комментарии и переписки к ревью?
- Почему за столько лет яблоки не исправили как-то эту проблему курицы и яйца (а она действительно старая)?
Яблоки наконец прочитали, что я им написал в Review notes (но все еще не ревьювнули покупки-донаты за 3 недели). Но не суть - я релизнул
>>Physarum<<
Если в клеточных автоматах мы меняем значения ячейки (пикселя), а в симуляции частиц - двигаем частицы, то здесь мы двигаем частицы, которые меняют значения пикселей.
Более детально, как оно работает, сделаю видео позже, а пока можете потыкать тут
+1
В соседнем канале зашла речь за древности, вспомнил, что у меня есть книженция с 3.5” дискетой. Где-то еще была 5”, но затерялась при переездах.
Кто-то еще помнит, интересно, времена, когда архив разбивали на части, чтобы каждую уместить на дискету?
Через пару минут буду ковырять GBStudio - конструктор игр под GameBoy. Пару месяцев назад посоветовали потыкать - никак руки не доходили.
Если делать нечего - подключайтесь
https://www.youtube.com/live/HZyAZeCqKz8
+1
Для тех, кто пишет под мак.
Если передать в параметры запуска
-_NS_4445425547 YES, то вам станет доступно дополнительное дебажное меню, где вы сможете посмотреть и поменять всякое.
Вдруг кому пригодитсяЕсли вам надо заинтересовать школьников или студентов в полярной системе координат - вот, например, кленовый листочек)))
https://www.desmos.com/calculator/fttpzcif59
натуральный глитч - тупо рисуем мусор из неинициализированной переменной или даже вот так:
float4 draw(float v) {
}
У метала еще есть способ загрузки "фреймбуфера" .dontCare. Когда он не перекрывается новым цветом, там может оказаться что угодно - в основном мусор, но иногда и куски других текстур. То есть можно взять loadAction=.dontCare, storeAction=.store и получить текстуру с глитчем натуральным на выходе - даже дроколы дергать не надо и шейдеры писать.Пока яблоки делают мне мозг с ревью физарума, вот вам видео, как собрать амебку в шейдере на SDF (такое можно затащить в SwiftUI-ный .colorEffect начиная с iOS17 и будет вам кастомный компонент - выше есть запись с экрана его).
Собираю я ее в KodeLife. Если вам часто приходится писать шейдеры - советую. Отличный инструмент для их прототипирования.
https://youtu.be/za4wfmEnN6o
Немного про реализацию:
Сделано оно максимально тупо.
- Есть два буфера: с одного читаем, в другой пишем, потом меняем местами - пинг-понг то бишь
- На число частиц создаем тредов на видюхе
- В каждом треде считаем данную частицу относительно всех остальных
Да, по сути у нас O(n^2) довольно тяжелых вычислений. Альтернатива
1. Затащить Барнеса-Хута, но там надо считать дерево на видюхе, при этом в худшем и среднем случаях оно все равно будет как и раньше + собственно дерево.
2. Делать несколько проходов и, например, сохранять расстояния, чтобы не пересчитывать каждый раз. И оно могло бы выстрелить, если б не уперлось в работу с памятью, которая на нынешних видюхах медленнее, чем арифметика.
Еще момент: для симуляции высоких скоростей пришлось масштабировать время, иначе частицы тупо пролетают сквозь друг друга.
Туннельный эффект - доказательство, что наш мир - симуляция?По рендеру все просто: тупо рисуем .point-ы нужного размера. Таким образом, теоретически нет ограничений на размер поля - только на максимальный размер пойнта (256).
Итак, вторая песочница
>>Квантум<<
Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000.
Я НЕ использовал всякие специально для этого созданные подходы типа Барнеса-Хута. Во-первых, оно вполне себе отлично работает на современном железе и так, во-вторых, не придумал быстро, как затащить его на видюху, а долго думать - свободного времени нет. Может, когда-нибудь затащу и можно будет на пару порядков увеличить число частиц (правда там уже их рендеринг встрянет).
Попробовать можно тут: https://apps.apple.com/app/apple-store/id6504465371
Как это работает, рассказывал тут: https://youtu.be/IPrP0BLocW4 и https://youtu.be/sSzRzFtI2KQ
Repost from Генканал
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
В преддверии релиза физарума расскажу, пожалуй про остальные песочницы.
>>Тиамат<<
Это первая песочница, про клеточные автоматы. Начиналась на тему потыкать SwiftUI, и симуляция там была тупо как заглушка. Теперь это уже полноценная песочница для экспериментов с клеточными автоматами: редактор поля, правил и прочее.
На ней же отлаживали процессы в команде, делали эксперименты с яблочной инфрой и онбордили людей. Теперь просто ждет, когда я доделаю последнюю фичу про флотовые правила, но там вопрос исключительно в UX.
Попробовать можно тут: https://apps.apple.com/app/apple-store/id1580189385
Что такое клеточные автоматы рассказывал тут: https://youtu.be/F7z_MHX3AtA
