Хотите красивые объёмные облака как в Horizon? Вот открытый проект с полным разбором — от теории до готового кода.
Умеет показывать облака не как картинку на небе, а как настоящий объём. Можно пролетать сквозь, видеть как свет проходит насквозь, всё такое. Автор взял технику из Horizon Forbidden West и сделал рабочую реализацию с исходниками.
➡️ Как это работает
Грубо говоря, камера кидает лучи в небо. Каждый луч шагает вперёд маленькими шажками и проверяет — тут есть облако или пусто? Если есть — накапливает цвет и плотность, если пусто — шагает дальше. Чем больше шагов, тем красивее, но тем медленнее.
Насколько я понял, это не полноценная трассировка, иначе работало бы очень медленно. Куча упрощений и оптимизаций, о них лучше в статье почитайте.
➡️ Что нужно чтобы разобраться
🔘Базовое понимание шейдеров (что такое фрагментный шейдер, как передавать текстуры).
🔘Статья объясняет с нуля, но совсем без опыта в графике будет тяжело.
🔘Код на GLSL/C++, но принципы переносятся в любой движок.
➡️ Стоит ли заморачиваться
Для первой игры точно нет. Это продвинутая техника для проектов где небо важная часть геймплея (авиасимы, открытые миры). Для начала лучше взять готовый скайбокс или простые 2D-облака на плоскостях.
Но если хотите понять как работает магия AAA-облаков — отличный обучающий проект.
📎 Код на GitHub, статья на сайте автора, на видео демо
@make_game
Post #1770
2.71K