uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку 👈

Прогаем с кенгурой

Прогаем с кенгурой

Відкрити в Telegram

Сидим с кенгурой под горой, запекаем текстуры... { программирование, процедурная генерация, графика, аудио, образование и немного про специфичные игры } https://gostrobrod.dev https://boosty.to/gostrobrod

Показати більше
236
Підписники
Немає даних24 години
Немає даних7 днів
+130 днів
Архів дописів
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

Вот исходник про sdf и безье в KodeLife

Это SDF точек на кубической кривой Безье, взятых с равным шагом t. Как видите, плотность точек неравномерная, то есть равный
+1
Это SDF точек на кубической кривой Безье, взятых с равным шагом t. Как видите, плотность точек неравномерная, то есть равный шаг между значениями параметра не гарантирует равного расстояния между результирующими точками. С другой стороны, как видно на второй картинке, плотность тем выше, чем выше кривизна. То есть, в принципе, можно отрисовать кривую Безье кусочно линейной интерполяцией, использую равный шаг t без лишних заморочек.

Не перерабатывайте. Если вы чувствуете усталость - идите отдыхать. Если чувствуете «второе дыхание» - немедленно бросайте работу и идите отдыхать! Иначе вы такого наворотите на этом «втором дыхании», что с утра волосы дыбом встанут. Потому что по сути ощущение вдохновения, потока, концентрации и прочего - состояние переутомления, и мозг работает в режиме выживания, что уже не совсем адекватно вашим рабочим задачам. Хотите раньше и качественнее закончить проект - идите проспитесь. Такой вот парадокс

Теперь она плавно переходит между состояниями. Обошелся без вью модели биндингами. Не люблю плодить сущности без необходимости

Ревью у яблок это тот еще квест. История: Акт 1. Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все
Ревью у яблок это тот еще квест. История: Акт 1. Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все ок. Расширять политику не возброняется - расширили. Акт 2. Удалили рекламу - убрали трекинг. Яблоки требуют указать флаги, что есть трекинг и спрашивать его, так как в политике (для стора) он укзан. Пишем, что трекинга нет, а политику поменять не можем, так как она для стора сразу, а в сторе трекинг есть. Таким образом провели несколько итераций режектов и сабмитом ревью. Акт 3. Решили наконец через апелляцию - иначе никак это не работает. Тут два вопроса к этой истории: - Почему рядовые проверяющие вообще не читают комментарии и переписки к ревью? - Почему за столько лет яблоки не исправили как-то эту проблему курицы и яйца (а она действительно старая)?

Яблоки наконец прочитали, что я им написал в Review notes (но все еще не ревьювнули покупки-донаты за 3 недели). Но не суть - я релизнул >>Physarum<< Если в клеточных автоматах мы меняем значения ячейки (пикселя), а в симуляции частиц - двигаем частицы, то здесь мы двигаем частицы, которые меняют значения пикселей. Более детально, как оно работает, сделаю видео позже, а пока можете потыкать тут

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

Через пару минут буду ковырять GBStudio - конструктор игр под GameBoy. Пару месяцев назад посоветовали потыкать - никак руки не доходили. Если делать нечего - подключайтесь https://www.youtube.com/live/HZyAZeCqKz8

Для тех, кто пишет под мак. Если передать в параметры запуска -_NS_4445425547 YES, то вам станет доступно дополнительное деба
+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