Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

著色器

霧著色器用於定義如何從給定區域的場景中新增(或減去)霧。霧著色器始終與 FogVolumes <class_FogVolume>` 和體積霧一起使用。霧著色器只有一個處理函式,即「fog()」函式。

霧著色器的解析度取決於體積霧 froxel 網格的解析度。因此,霧著色器可以新增的細節程度取決於 FogVolume <class_FogVolume> 與相機的距離。

霧著色器是計算著色器的一種特殊形式,對於由關聯的 FogVolume <class_FogVolume>` 的軸對齊邊界框所觸及的每個 froxel 呼叫一次。這表示僅接觸給定 FogVolume <class_FogVolume>` 的速像素仍將被使用。

內建

標記為 "in" 的值是唯讀的. 標記為 "out" 的值是可以選擇寫入的, 不一定包含合理的值. 標記為 "inout" 的值提供一個合理的預設值, 並且可以選擇寫入. 取樣器不是寫入的物件, 它們沒有被標記.

定數

全域內建的功能隨處可見, 包括自訂功能.

內建

說明

in float TIME

全球時間, 以秒為單位.

in float PI

一個“PI”常數(“3.141592”)。圓的周長與其直徑的比率以及半圈的弧度數。

in float TAU

一個“TAU”常數(“6.283185”)。相當於“PI * 2”和完整的弧度數。

in float E

一個“E”常數(“2.718281”)。歐拉數和自然對數的底數。

定數

霧量的所有輸出值都會相互重疊。這使得 FogVolumes <class_FogVolume>` 能夠有效率地渲染,因為它們可以同時繪製。

內建

說明

in vec3 WORLD_POSITION

目前片段體素單元在世界空間中的位置。

in vec3 OBJECT_POSITION

目前 FogVolume <class_FogVolume>` 在世界空間中的中心位置。

in vec3 UVW

三維 UV,用於將 3D 紋理對應到目前的 FogVolume 中。

in vec3 SIZE

目前 FogVolume <class_FogVolume>` 的大小(當其 shape<class_FogVolume_property_shape>` 具有大小時)。

in vec3 SDF

到 FogVolume <class_FogVolume>` 表面的有符號距離場。若內部成交量為負,否則為正。

out vec3 ALBEDO

輸出基色值,與光相互作用產生最終色。僅在使用時寫入霧量。

out float DENSITY

輸出密度值。可以是負數,以允許從一個體積中減去另一個體積。霧著色器必須使用密度才能寫入任何內容。

out vec3 EMISSION

輸出發射顏色值,在光通過期間新增到顏色以產生最終顏色。僅在使用時寫入霧量。