Fogシェーダー

Fogシェーダーは特定の領域のシーンからフォグを追加 (または削除) する方法を定義するために使用されます。Fogシェーダーは常に FogVolumes およびボリューメトリックフォグと一緒に使用されます。Fogシェーダーにはプロセッサー関数が1つだけあり、それは fog() 関数です。

Fogシェーダーの解像度はボリューメトリックフォグの視錐台ボクセルのグリッド解像度に依存します。したがってFogシェーダーが追加できるLODは、FogVolume がカメラにどれだけ近いかによって決まります。

Fogシェーダーは特別なコンピュートシェーダーで、関連する FogVolume の軸に整列したバウンディング ボックスに触れる視錐台ボクセルごとに 1 回呼び出されます。これは指定された FogVolume にかろうじて触れる視錐台ボクセルが引き続き使用されることを意味します。

ビルトイン

Values marked as in are read-only. Values marked as out can optionally be written to and will not necessarily contain sensible values. Samplers cannot be written to so they are not marked.

グローバルビルトイン

グローバルビルトインはカスタム関数を含めあらゆる場所で使用できます。

ビルトイン

説明

in float 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.

in float PI

PI 円周率の定数 (3.141592)。円の円周とその直径の比率、および半回転のラジアン量。

in float TAU

定数 TAU` は円周率の2倍 (6.283185)。 PI * 2 と、1回転のラジアン量に相当します。

in float E

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

Fogビルトイン

Fogボリュームの出力値はすべて互いに重なり合います。これにより FogVolumes をすべて一度に描画できるため、効率的にレンダリングできるようになります。

ビルトイン

説明

in vec3 WORLD_POSITION

ワールド空間における現在の視錐台ボクセルのセルの位置。

in vec3 OBJECT_POSITION

ワールド空間における現在の FogVolume の中心の位置。

in vec3 UVW

3-dimensional UV, used to map a 3D texture to the current FogVolume.

in vec3 SIZE

shape にサイズがあるときの、現在の FogVolume のサイズ。

in vec3 SDF

FogVolume の表面までのSigned Distance Field (SDF)。ボリューム内にある場合はマイナス値、外にある場合はプラス値です。

out vec3 ALBEDO

基本の色を出力します。これは光と相互作用して最終的なカラーを生成します。使用する場合はフォグボリュームにのみ書き込まれます。

out float DENSITY

密度の値を出力します。あるボリュームを別のボリュームから減算できるようにするにはマイナスの値を指定します。Fogシェーダーで何かに書き込む際は、この密度の指定は必須です。

out vec3 EMISSION

発光色を出力します。光の通過中にこの発光色が追加されて最終的な色が生成されます。使用した際はフォグボリュームにのみ書き込まれます。