共用方式為


RAY_FLAG列舉

傳遞至 TraceRay 函式的旗標,以覆寫透明度、擷取和早期行為。

Syntax

enum RAY_FLAG : uint
{
    RAY_FLAG_NONE                            = 0x00,
    RAY_FLAG_FORCE_OPAQUE                    = 0x01,
    RAY_FLAG_FORCE_NON_OPAQUE                = 0x02,
    RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
    RAY_FLAG_SKIP_CLOSEST_HIT_SHADER         = 0x08,
    RAY_FLAG_CULL_BACK_FACING_TRIANGLES      = 0x10,
    RAY_FLAG_CULL_FRONT_FACING_TRIANGLES     = 0x20,
    RAY_FLAG_CULL_OPAQUE                     = 0x40,
    RAY_FLAG_CULL_NON_OPAQUE                 = 0x80,
    RAY_FLAG_SKIP_TRIANGLES                  = 0x100,
    RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES      = 0x200,
}; 

常數

RAY_FLAG_NONE

未選取任何選項。

RAY_FLAG_FORCE_OPAQUE

在光線追蹤中遇到的所有光線基本交集都會被視為不透明。 因此,不論點擊幾何是否指定D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE,以及叫用實例上的實例旗標為何,都不會執行任何點擊著色器。

此旗標與RAY_FLAG_FORCE_NON_OPAQUE、RAY_FLAG_CULL_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE互斥。

RAY_FLAG_FORCE_NON_OPAQUE

在光線追蹤中遇到的所有光線基本交集都會被視為非不透明。 因此,如果存在,則會執行任何點擊著色器,不論點擊幾何是否指定D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE,以及叫用實例上的實例旗標為何。 此旗標與 RAY_FLAG_FORCE_\OPAQUE 互斥,RAY_FLAG_CULL_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE。

RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH

在 raytrace 中遇到的第一個光線基本交集會自動在任何點擊著色器之後呼叫 AcceptHitAndEndSearch ,包括如果沒有任何點擊著色器。

唯一的例外狀況是上述任何點擊著色器呼叫 IgnoreHit,在此情況下,光線會繼續不受影響,讓下一次點擊成為第一次點擊的另一個候選項目。 若要套用此例外狀況,必須實際執行任何點擊著色器。 因此,如果因為點擊不透明而略過任何點擊著色器 (,例如因為RAY_FLAG_FORCE_OPAQUE或D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE或D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE設定) ,則會呼叫 AcceptHitAndEndSearch

如果第一次點擊時出現最接近的點擊著色器,除非RAY_FLAG_SKIP_CLOSEST_HIT_SHADER也存在,否則會叫用它。 找到的叫用視為「最接近」,即使可能較接近光線的其他潛在點擊可能尚未流覽。

此旗標的一般用途是陰影,其中只需要找到單一點擊。

RAY_FLAG_SKIP_CLOSEST_HIT_SHADER

即使已認可至少一次點擊,且最接近點擊的點擊群組包含最接近的點擊著色器,也請略過該著色器的執行。

RAY_FLAG_CULL_BACK_FACING_TRIANGLES

啟用反向三角形的擷取。 請參閱 D3D12_RAYTRACING_INSTANCE_FLAGS ,以選取哪個三角形正向每個實例。

在指定D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE的實例上,此旗標沒有任何作用。

在D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES以外的幾何類型上,此旗標沒有任何作用。

此旗標與RAY_FLAG_CULL_FRONT_FACING_TRIANGLES互斥。

RAY_FLAG_CULL_FRONT_FACING_TRIANGLES

啟用正面三角形的擷取。 請參閱 D3D12_RAYTRACING_INSTANCE_FLAGS ,以選取哪個三角形正向每個實例。

在指定D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE的實例上,此旗標沒有任何作用。

在D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES以外的幾何類型上,此旗標沒有任何作用。

此旗標與RAY_FLAG_CULL_BACK_FACING_TRIANGLES互斥。

RAY_FLAG_CULL_OPAQUE

根據其幾何和實例旗標,將視為不透明的所有基本類型。

此旗標與RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE互斥。

RAY_FLAG_CULL_NON_OPAQUE

根據其幾何和實例旗標,將視為非不透明的所有基本類型進行 Cull。

此旗標與RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE和RAY_FLAG_CULL_OPAQUE互斥。

規格需求

另請參閱

Direct3D 12 Raytracing HLSL 參考