Шейдеры тумана

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 3,600 seconds (which can be changed with the rollover setting). It's affected by time_scale but not by pausing. If you need a TIME variable that is not affected by time scale, add your own global shader uniform and update it each frame.

в float PI

A PI constant (3.141592). The ratio of a circle's circumference to its diameter and the number of radians in a half turn.

в float TAU

A TAU constant (6.283185). Equivalent to PI * 2 and the number of radians in a full turn.

В float E

An E constant (2.718281). Euler's number, the base of the natural logarithm.

Встроенные противотуманные фары

Все выходные значения объёмов тумана перекрываются друг другом. Это позволяет эффективно визуализировать FogVolumes, поскольку все они могут быть отрисованы одновременно.

Встроенный

Описание

in vec3 WORLD_POSITION

Положение текущей ячейки фрокселя в мировом пространстве.

in vec3 OBJECT_POSITION

Положение центра текущего FogVolume в мировом пространстве.

in vec3 UVW

3-мерный UV, используемый для наложения 3D-текстуры на текущий FogVolume.

in vec3 SIZE

Размер текущего FogVolume, когда его shape имеет размер.

in vec3 SDF

Поле расстояния со знаком до поверхности FogVolume. Отрицательное значение, если внутри объёма, положительное в противном случае.

out vec3 ALBEDO

Выводит базовое значение цвета, взаимодействует со светом для получения конечного цвета. Записывается только в объём тумана, если используется.

out float DENSITY

Выходное значение плотности. Может быть отрицательным, чтобы позволить вычитать один объём из другого. Для того, чтобы шейдер тумана хоть что-то записал, необходимо использовать плотность.

out vec3 EMISSION

Значение цвета выходного излучения, добавляемое к цвету во время прохождения света для получения окончательного цвета. Записывается только в объём тумана, если используется.