Шейдеры тумана
Шейдеры тумана используются для определения того, как туман добавляется (или удаляется) из сцены в заданной области. Шейдеры тумана всегда используются вместе с FogVolumes и объёмным туманом. Шейдеры тумана имеют только одну функцию обработки — fog().
Разрешение шейдеров тумана зависит от разрешения сетки фрокселей объёмного тумана. Соответственно, уровень детализации, который может добавить шейдер тумана, зависит от того, насколько близко FogVolume находится к камере.
Шейдеры тумана — это особая форма вычислительного шейдера, который вызывается один раз для каждого froxel, соприкасающегося с ограничивающим прямоугольником, выровненным по оси, соответствующего FogVolume. Это означает, что froxel, едва соприкасающиеся с заданным FogVolume, будут по-прежнему использоваться.
Встроенные функции
Значения, отмеченные как in, доступны только для чтения. Значения, отмеченные как out, могут быть записаны и не обязательно содержат осмысленные значения. В сэмплеры запись невозможна, поэтому они не отмечены.
Глобальные встроенные функции
Глобальные встроенные функции доступны везде, в том числе и в пользовательских функциях.
Встроенный |
Описание |
|---|---|
в плавающем TIME |
Глобальное время с момента запуска движка, в секундах. Оно повторяется каждые |
в float PI |
Константа |
в float TAU |
Константа |
В float E |
Константа |
Встроенные противотуманные фары
Все выходные значения объёмов тумана перекрываются друг другом. Это позволяет эффективно визуализировать FogVolumes, поскольку все они могут быть отрисованы одновременно.
Встроенный |
Описание |
|---|---|
in vec3 WORLD_POSITION |
Положение текущей ячейки фрокселя в мировом пространстве. |
in vec3 OBJECT_POSITION |
Положение центра текущего FogVolume в мировом пространстве. |
in vec3 UVW |
3-мерный UV, используемый для наложения 3D-текстуры на текущий FogVolume. |
in vec3 SIZE |
|
in vec3 SDF |
Поле расстояния со знаком до поверхности FogVolume. Отрицательное значение, если внутри объёма, положительное в противном случае. |
out vec3 ALBEDO |
Выводит базовое значение цвета, взаимодействует со светом для получения конечного цвета. Записывается только в объём тумана, если используется. |
out float DENSITY |
Выходное значение плотности. Может быть отрицательным, чтобы позволить вычитать один объём из другого. Для того, чтобы шейдер тумана хоть что-то записал, необходимо использовать плотность. |
out vec3 EMISSION |
Значение цвета выходного излучения, добавляемое к цвету во время прохождения света для получения окончательного цвета. Записывается только в объём тумана, если используется. |