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 |
輸出發射顏色值,在光通過期間新增到顏色以產生最終顏色。僅在使用時寫入霧量。 |