Шейдеры тумана
Fog shaders are used to define how fog is added to (or subtracted from) a scene in
a given area. Fog shaders are always used together with
FogVolumes and volumetric fog. Fog shaders only have
one processing function, the fog() function.
Разрешение шейдеров тумана зависит от разрешения сетки фрокселей объёмного тумана. Соответственно, уровень детализации, который может добавить шейдер тумана, зависит от того, насколько близко FogVolume находится к камере.
Fog shaders are a special form of compute shader that is called once for every froxel that is touched by an axis-aligned bounding box of the associated FogVolume. This means that froxels that just barely touch a given FogVolume will still be used.
Встроенные функции
Значения, отмеченные как in, доступны только для чтения. Значения, отмеченные как out, могут быть записаны и не обязательно содержат осмысленные значения. В сэмплеры запись невозможна, поэтому они не отмечены.
Глобальные встроенные функции
Глобальные встроенные функции доступны везде, в том числе и в пользовательских функциях.
Встроенный |
Описание |
|---|---|
в плавающем TIME |
Global time since the engine has started, in seconds. It repeats after every |
в float PI |
A |
в float TAU |
A |
В float E |
An |
Встроенные противотуманные фары
Все выходные значения объёмов тумана перекрываются друг другом. Это позволяет эффективно визуализировать 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 |
Значение цвета выходного излучения, добавляемое к цвету во время прохождения света для получения окончательного цвета. Записывается только в объём тумана, если используется. |