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

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

@coding_with_kangaroo

Сидим с кенгурой под горой, запекаем текстуры...

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

https://gostrobrod.dev

https://boosty.to/gostrobrod
Subscribers
236
Photos
227
Videos
204
Links
185

Showing posts older than #13 · Back to latest

Older Posts 8 shown
Post #12 2.5K
Рандомно генерить амебок (визуализация параметров симуляции) вышло залипательнее, чем сама симуляция 🤠
  • ❤ 9
  • 🔥 5
Post #10 389
На той неделе встретился с таким замечательным глитчем, который пердолит видеопамять, может наглухо повесить систему и отправить ее в ребут.

Случилось это на симуляторе. Обычно такое происходит, когда лезешь в памяти туда, куда не надо. Но я два часа потратил на проверки, и спамятью все было ок. Потом решил запустить на девайсе, так как с него больше полезного выпадает, и там нашел в логах, что беда не в памяти, а в переполнении стека.

То есть вот этот вызов одного ранда в другом все сломал.


float rand1(thread LCG &rng) {
rng.state = rng.state * 1664525u + 1013904223u;
return (float)(rng.state & 0x00FFFFFFu) / 16777215.0;
}

float rand(thread LCG &rng) {
return rand(rng) * 2.0 - 1.0;
}


Причем даже если объявить их inline, это не поможет, потому что это рекомендация.

В итоге пришлось сделать не красиво, но рабоче - с дублированием кода. Зато спецэффекты красивые - давно таких не встречал
  • 🔥 2
  • 👀 2
Post #9 360
На следующих выходных запилю видос, как собрать амебку из примитивов и заанимировать ее базово. Ну или про физарум, если успею его релизнуть.
  • ❤ 2
Post #8 355
Пилю сейчас очередную песочницу про физарум. Сделал для нее контрол с амебкой (есть несколько запросов на улучшение - так что это не конечный вариант).

Контрол на SwiftUI + Metal (.colorEffect). Все рисуется шейдером с помощью SDF.
  • ❤ 1
Post #7 369
Затемнение на краях
На краях экрана (слева и справа яркость падает) (это не виньетка!)

Принцип
Из-за большего отклонения на краях строки луч обладает меньшей энергией из-за более длинной траектории и расфокусировки. Как результат, ток падает и визуально края кажутся темнее.

Алгоритм
По гладкой кривой занижаем яркость по x, например:

float k = 1.0 - 5 * U.amount * pow(in.uv.x - 0.5, 4);
src.rgb *= k;
Post #6 344
Post #5 323
Bloom
Светлые области "засвечивают" растекаются на близлежащие темные.

Принцип
Из-за того, что луч имеет размер, он задевает яркие участки и засвечивает темные.

Алгоритм
Смешиваем картинку с блюренной по яркости блюренной (чем ярче, тем больше намешиваем. Есть два пути:
1. Правильный - по строкам
2. Простой - просто блюрим и мешаем
  • 👍 1
Post #1
Channel created
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →