Итак, вторая песочница
>>Квантум<<
Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000.
Я НЕ использовал всякие специально для этого созданные подходы типа Барнеса-Хута. Во-первых, оно вполне себе отлично работает на современном железе и так, во-вторых, не придумал быстро, как затащить его на видюху, а долго думать - свободного времени нет. Может, когда-нибудь затащу и можно будет на пару порядков увеличить число частиц (правда там уже их рендеринг встрянет).
Попробовать можно тут: https://apps.apple.com/app/apple-store/id6504465371
Как это работает, рассказывал тут: https://youtu.be/IPrP0BLocW4 и https://youtu.be/sSzRzFtI2KQ
>>Квантум<<
Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000.
Я НЕ использовал всякие специально для этого созданные подходы типа Барнеса-Хута. Во-первых, оно вполне себе отлично работает на современном железе и так, во-вторых, не придумал быстро, как затащить его на видюху, а долго думать - свободного времени нет. Может, когда-нибудь затащу и можно будет на пару порядков увеличить число частиц (правда там уже их рендеринг встрянет).
Попробовать можно тут: https://apps.apple.com/app/apple-store/id6504465371
Как это работает, рассказывал тут: https://youtu.be/IPrP0BLocW4 и https://youtu.be/sSzRzFtI2KQ
App Store
Quantum - Particle Life
Experience the Hidden World of Particles
Immerse yourself in Quantum, a cutting-edge simulation environment capable of modeling up to 10,000 particles in real time. Dive into the mesmerizing complexities of natural phenomena—from crystallization and thermodynamics…
Immerse yourself in Quantum, a cutting-edge simulation environment capable of modeling up to 10,000 particles in real time. Dive into the mesmerizing complexities of natural phenomena—from crystallization and thermodynamics…
🔥2❤1
Прогаем с кенгурой
Итак, вторая песочница >>Квантум<< Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000. …
Немного про реализацию:
Сделано оно максимально тупо.
- Есть два буфера: с одного читаем, в другой пишем, потом меняем местами - пинг-понг то бишь
- На число частиц создаем тредов на видюхе
- В каждом треде считаем данную частицу относительно всех остальных
Да, по сути у нас O(n^2) довольно тяжелых вычислений. Альтернатива
1. Затащить Барнеса-Хута, но там надо считать дерево на видюхе, при этом в худшем и среднем случаях оно все равно будет как и раньше + собственно дерево.
2. Делать несколько проходов и, например, сохранять расстояния, чтобы не пересчитывать каждый раз. И оно могло бы выстрелить, если б не уперлось в работу с памятью, которая на нынешних видюхах медленнее, чем арифметика.
Еще момент: для симуляции высоких скоростей пришлось масштабировать время, иначе частицы тупо пролетают сквозь друг друга.
По рендеру все просто: тупо рисуем .point-ы нужного размера. Таким образом, теоретически нет ограничений на размер поля - только на максимальный размер пойнта (256).
Сделано оно максимально тупо.
- Есть два буфера: с одного читаем, в другой пишем, потом меняем местами - пинг-понг то бишь
- На число частиц создаем тредов на видюхе
- В каждом треде считаем данную частицу относительно всех остальных
Да, по сути у нас O(n^2) довольно тяжелых вычислений. Альтернатива
1. Затащить Барнеса-Хута, но там надо считать дерево на видюхе, при этом в худшем и среднем случаях оно все равно будет как и раньше + собственно дерево.
2. Делать несколько проходов и, например, сохранять расстояния, чтобы не пересчитывать каждый раз. И оно могло бы выстрелить, если б не уперлось в работу с памятью, которая на нынешних видюхах медленнее, чем арифметика.
Еще момент: для симуляции высоких скоростей пришлось масштабировать время, иначе частицы тупо пролетают сквозь друг друга.
Туннельный эффект - доказательство, что наш мир - симуляция?
По рендеру все просто: тупо рисуем .point-ы нужного размера. Таким образом, теоретически нет ограничений на размер поля - только на максимальный размер пойнта (256).
💯5
Прогаем с кенгурой
Итак, вторая песочница >>Квантум<< Здесь - про взаимодействие частиц. В интернете оно зовется Particle Life, но у меня немного другие функции - более физические (kmM/r^2). То есть это симуляция почти про задачу трех тел, только тел может быть до 10000. …
Media is too big
VIEW IN TELEGRAM
Чтобы не было скучно и сухо, вот как это выглядит
🔥6
Прогаем с кенгурой
В преддверии релиза физарума расскажу, пожалуй про остальные песочницы. >>Тиамат<< Это первая песочница, про клеточные автоматы. Начиналась на тему потыкать SwiftUI, и симуляция там была тупо как заглушка. Теперь это уже полноценная песочница для экспериментов…
Media is too big
VIEW IN TELEGRAM
ну и про клеточный автоматы тоже сюда же
👍4
Media is too big
VIEW IN TELEGRAM
а завтра, если яблоки апрувнут, релизну физарум - он вот так выглядит
❤7
Пока яблоки делают мне мозг с ревью физарума, вот вам видео, как собрать амебку в шейдере на SDF (такое можно затащить в SwiftUI-ный .colorEffect начиная с iOS17 и будет вам кастомный компонент - выше есть запись с экрана его).
Собираю я ее в KodeLife. Если вам часто приходится писать шейдеры - советую. Отличный инструмент для их прототипирования.
https://youtu.be/za4wfmEnN6o
Собираю я ее в KodeLife. Если вам часто приходится писать шейдеры - советую. Отличный инструмент для их прототипирования.
https://youtu.be/za4wfmEnN6o
YouTube
SDF: Рисуем фантастическую тварь формулами в шейдере
В этом видео применяем знания о Signed Distance Functions (SDF) на практике — создаём процедурную амёбу в KodeLife! Построение формы, покраска, добавление деталей и интерактивности — всё происходит прямо в шейдере, без текстур и моделей.
Основы SDF: h…
Основы SDF: h…
👍8🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
натуральный глитч - тупо рисуем мусор из неинициализированной переменной или даже вот так:
У метала еще есть способ загрузки "фреймбуфера" .dontCare. Когда он не перекрывается новым цветом, там может оказаться что угодно - в основном мусор, но иногда и куски других текстур. То есть можно взять
float4 draw(float v) {
}У метала еще есть способ загрузки "фреймбуфера" .dontCare. Когда он не перекрывается новым цветом, там может оказаться что угодно - в основном мусор, но иногда и куски других текстур. То есть можно взять
loadAction=.dontCare, storeAction=.store и получить текстуру с глитчем натуральным на выходе - даже дроколы дергать не надо и шейдеры писать.👍3
Если вам надо заинтересовать школьников или студентов в полярной системе координат - вот, например, кленовый листочек)))
https://www.desmos.com/calculator/fttpzcif59
https://www.desmos.com/calculator/fttpzcif59
Desmos
Desmos | Graphing Calculator
Explore math with our beautiful, free online graphing calculator. Graph functions, plot points, visualize algebraic equations, add sliders, animate graphs, and more.
❤3
Для тех, кто пишет под мак.
Если передать в параметры запуска
Вдруг кому пригодится
Если передать в параметры запуска
-_NS_4445425547 YES, то вам станет доступно дополнительное дебажное меню, где вы сможете посмотреть и поменять всякое.Вдруг кому пригодится
🔥18
Через пару минут буду ковырять GBStudio - конструктор игр под GameBoy. Пару месяцев назад посоветовали потыкать - никак руки не доходили.
Если делать нечего - подключайтесь
https://www.youtube.com/live/HZyAZeCqKz8
Если делать нечего - подключайтесь
https://www.youtube.com/live/HZyAZeCqKz8
YouTube
GBStudio - конструктор игр под GameBoy. Смотрю, что оно умеет
В этом стриме изучаю GBStudio — визуальный движок/конструктор для создания игр под эмулятор Game Boy! Смотрим, как устроен редактор, что можно сделать без программирования, и пробуем поменять пример игры: создать сцены, добавить акторов, настроить взаимодействие…
👍1
В соседнем канале зашла речь за древности, вспомнил, что у меня есть книженция с 3.5” дискетой. Где-то еще была 5”, но затерялась при переездах.
Кто-то еще помнит, интересно, времена, когда архив разбивали на части, чтобы каждую уместить на дискету?
Кто-то еще помнит, интересно, времена, когда архив разбивали на части, чтобы каждую уместить на дискету?
🤝5👍2👀1
Media is too big
VIEW IN TELEGRAM
Яблоки наконец прочитали, что я им написал в Review notes (но все еще не ревьювнули покупки-донаты за 3 недели). Но не суть - я релизнул
>>Physarum<<
Если в клеточных автоматах мы меняем значения ячейки (пикселя), а в симуляции частиц - двигаем частицы, то здесь мы двигаем частицы, которые меняют значения пикселей.
Более детально, как оно работает, сделаю видео позже, а пока можете потыкать тут
>>Physarum<<
Если в клеточных автоматах мы меняем значения ячейки (пикселя), а в симуляции частиц - двигаем частицы, то здесь мы двигаем частицы, которые меняют значения пикселей.
Более детально, как оно работает, сделаю видео позже, а пока можете потыкать тут
🔥11
Ревью у яблок это тот еще квест. История:
Акт 1.
Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все ок. Расширять политику не возброняется - расширили.
Акт 2.
Удалили рекламу - убрали трекинг. Яблоки требуют указать флаги, что есть трекинг и спрашивать его, так как в политике (для стора) он укзан. Пишем, что трекинга нет, а политику поменять не можем, так как она для стора сразу, а в сторе трекинг есть. Таким образом провели несколько итераций режектов и сабмитом ревью.
Акт 3.
Решили наконец через апелляцию - иначе никак это не работает.
Тут два вопроса к этой истории:
- Почему рядовые проверяющие вообще не читают комментарии и переписки к ревью?
- Почему за столько лет яблоки не исправили как-то эту проблему курицы и яйца (а она действительно старая)?
Акт 1.
Делали эксперимент с рекламой. Затащили, настроили трекинг пользовтеля - все ок. Расширять политику не возброняется - расширили.
Акт 2.
Удалили рекламу - убрали трекинг. Яблоки требуют указать флаги, что есть трекинг и спрашивать его, так как в политике (для стора) он укзан. Пишем, что трекинга нет, а политику поменять не можем, так как она для стора сразу, а в сторе трекинг есть. Таким образом провели несколько итераций режектов и сабмитом ревью.
Акт 3.
Решили наконец через апелляцию - иначе никак это не работает.
Тут два вопроса к этой истории:
- Почему рядовые проверяющие вообще не читают комментарии и переписки к ревью?
- Почему за столько лет яблоки не исправили как-то эту проблему курицы и яйца (а она действительно старая)?
This media is not supported in your browser
VIEW IN TELEGRAM
Теперь она плавно переходит между состояниями.
Обошелся без вью модели биндингами. Не люблю плодить сущности без необходимости
Обошелся без вью модели биндингами. Не люблю плодить сущности без необходимости
🔥6👍2
Не перерабатывайте. Если вы чувствуете усталость - идите отдыхать. Если чувствуете «второе дыхание» - немедленно бросайте работу и идите отдыхать!
Иначе вы такого наворотите на этом «втором дыхании», что с утра волосы дыбом встанут.
Потому что по сути ощущение вдохновения, потока, концентрации и прочего - состояние переутомления, и мозг работает в режиме выживания, что уже не совсем адекватно вашим рабочим задачам.
Хотите раньше и качественнее закончить проект - идите проспитесь. Такой вот парадокс
Иначе вы такого наворотите на этом «втором дыхании», что с утра волосы дыбом встанут.
Потому что по сути ощущение вдохновения, потока, концентрации и прочего - состояние переутомления, и мозг работает в режиме выживания, что уже не совсем адекватно вашим рабочим задачам.
Хотите раньше и качественнее закончить проект - идите проспитесь. Такой вот парадокс
👍7
Это SDF точек на кубической кривой Безье, взятых с равным шагом
С другой стороны, как видно на второй картинке, плотность тем выше, чем выше кривизна. То есть, в принципе, можно отрисовать кривую Безье кусочно линейной интерполяцией, использую равный шаг
t. Как видите, плотность точек неравномерная, то есть равный шаг между значениями параметра не гарантирует равного расстояния между результирующими точками.С другой стороны, как видно на второй картинке, плотность тем выше, чем выше кривизна. То есть, в принципе, можно отрисовать кривую Безье кусочно линейной интерполяцией, использую равный шаг
t без лишних заморочек.🔥3👀1
Прогаем с кенгурой
Это SDF точек на кубической кривой Безье, взятых с равным шагом t. Как видите, плотность точек неравномерная, то есть равный шаг между значениями параметра не гарантирует равного расстояния между результирующими точками. С другой стороны, как видно на второй…
bezier_experiment.klproj
3.2 KB
Вот исходник про sdf и безье в KodeLife
🔥2
Forwarded from Генканал (George)
This media is not supported in your browser
VIEW IN TELEGRAM
Интересная реализация глитча от @coding_with_kangaroo.
Если вы пилите что-то на Метале, то можете воспользоваться UB в Metal Shading Lnaguage (С++14) и получить натуральный глитч:
Вариант 1. Через безвозвратную функцию:
Вариант 2. Через неинициализированную переменную:
Есть еще один способ - взять мусор и записать его в выходную текстуру, но он не стабилен и может возврщать черный или мадженту - без спецэффектов.
Самые классные спецэффекты с глитчем на весь монитор (или два - сколько их у вас) можно получить, устроив stack overflow на видюхе (например в кернеле).
#glitch
Если вы пилите что-то на Метале, то можете воспользоваться 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
❤2