Создание динамического неба в Godot 4.0 с помощью новых шейдеров

Частой проблемой, с которой сталкивались пользователи Godot 3.x, была неспособность создавать динамическое небо, которое обновляется в режиме реального времени. Ситуация меняется с вводом шейдеров для неба. Реализацию можно посмотреть на Гитхабе.

Создание динамического неба в Godot 4.0 с помощью новых шейдеров

В Godot 3.x было два типа скайбокса: ProceduralSky и PanoramaSky. Общие элементы между ними были из родительского класса Sky. В Godot 4.0 вы будете использовать класс Sky напрямую. Класс содержит 3 свойства:

Вместо подклассов поведение теперь задаётся в материале. Для всех трёх типов SkyMaterial пользователи могут выбрать «Преобразовать в ShaderMaterial» и отредактировать код напрямую.

PanoramaSkyMaterial

PanoramaSkyMaterial ведёт себя точно так же, как и ранее PanoramaSky. Закрепите текстуру панорамы материалу, и всё готово!

ProceduralSkyMaterial

ProceduralSkyMaterial ведёт себя очень похоже на старый ProceduralSky с несколькими важными отличиями:

  • Поддерживает до 4 солнц.
  • Теперь обновляется мгновенно, так как вычисления выполняются на графическом процессоре.
  • Свойства солнца (направление, энергия и цвет) извлекаются из DirectionalLights на сцене.

Эти изменения делают ProceduralSkyMaterial отличным вариантом для быстрого создания неба, когда реализм не нужен. Его легко настроить и обновить, и он использует легкий шейдер, чтобы избежать использования ресурсов графического процессора.

PhysicalSkyMaterial

PhysicalSkyMaterial - это новый ресурс, который отрисовывает небо на основе различных физических свойств, в частности рассеяния Ми и Рэлея. PhysicalSkyMaterial основан на модели дневного света Preetham (с несколькими хаками, чтобы сделать его более удобным для пользователя за счёт уменьшения физической точности).

PhysicalSkyMaterial может иметь только одно солнце, и для освещения неба требуется наличие DirectionalLight на сцене.

Основным преимуществом PhysicalSkyMaterial является то, что вы определяете свойства неба, а затем в небе происходят правдоподобные изменения, основанные на времени суток (например, автоматический закат и восход солнца).

PhysicalSkyMaterial создан для быстрой и легкой настройки. Существуют более реалистичные модели дневного света, если пользователям нужно что-то более реалистичное, они могут использовать ShaderMaterials для реализации своих собственных моделей неба.

Создание динамического неба в Godot 4.0 с помощью новых шейдеров

Sky Shaders позволяет пользователям создавать произвольные сложные скайбоксы. Например, вот шейдер, перенесенный из Shadertoy под названием «Combustible Clouds»:

Создание динамического неба в Godot 4.0 с помощью новых шейдеров
30
1 комментарий