Эксперимент с шейдером для тумана

Небольшой эксперимент с 🥔 шейдером тумана. Было бы здорово сделать так, чтобы свет реалистично распространялся в зависимости от плотности тумана, здесь же пока просто смешивание. Может кто нибудь знает хорошую базу по этой теме?

Основной проблемой было оценить высоту мира пикселей, не имея ее в g буфере (поскольку atlas sprite в Bevy пока не поддерживает шейдеры, я не уверен, что это хороший способ передать информацию о высоте пикселя). Пришлось изобретать небольшой хак – делать несколько семплов вниз от текущего пикселя с отступами 8, 16, 32… из текстуры слоя объектов которые над землей. Если мы попали в непрозрачный пиксель значит текущий пиксель скорее всего не очень высоко над землей. Это позволяет сделать дешевый эффект "огибания"

1.7K1.7K показов
209209 открытий
9 комментариев

Очень даже, красавчик.

Ответить
Автор

спс)

Ответить

Что у тебя за crate используется для вывода используемых ресурсов в правом верхнем углу?

Ответить
Автор

Это встроенный ХУД из Метала. Включается ```export MTL_HUD_ENABLED=1``` в OSX

Ответить

А ведь игра делается на bevy? Могу ли я узнать, почему именно на нём? Просто в crates так много различных фреймворков и бибилиотек, что аж путаешься в них... Bevy чем-то лучше остальных?

Ответить
Автор

А какие еще есть? Мне нужен был хороший эргономичный ECS и нормальная абстракция для графики (на расте из достойных есть только wgpu). В остальном в bevy не так много что еще работает из коробки.

Ответить