D3D12_RAY_FLAGS列舉 (d3d12.h)

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

Syntax

typedef enum D3D12_RAY_FLAGS {
  D3D12_RAY_FLAG_NONE = 0,
  D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
  D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
  D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
  D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
  D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
  D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
  D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
  D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
  D3D12_RAY_FLAG_SKIP_TRIANGLES,
  D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES
} ;

常數

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

此旗標與RAY_FLAG_FORCE_NON_OPAQUE、RAY_FLAG_CULL_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE互斥。
D3D12_RAY_FLAG_FORCE_NON_OPAQUE
值: 0x2
在光線追蹤中遇到的所有光線基本交集都會被視為非不透明。 因此,如果存在,則會執行任何點擊著色器,不論點擊幾何是否指定D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE,以及叫用實例上的實例旗標為何。 此旗標與 RAY_FLAG_FORCE_\OPAQUE 互斥,RAY_FLAG_CULL_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE。
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
值: 0x4
在 raytrace 中遇到的第一個光線基本交集會自動在任何點擊著色器之後呼叫 AcceptHitAndEndSearch ,包括如果沒有任何點擊著色器。

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

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

此旗標的一般用途是陰影,其中只需要找到單一點擊。
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
值: 0x8
即使已認可至少一次點擊,且最接近點擊的點擊群組包含最接近的點擊著色器,也請略過該著色器的執行。
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES
值: 0x10
啟用反向三角形的擷取。 請參閱 D3D12_RAYTRACING_INSTANCE_FLAGS ,以選取哪個三角形正向每個實例。

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

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

此旗標與RAY_FLAG_CULL_FRONT_FACING_TRIANGLES互斥。
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
值: 0x20
啟用正面三角形的擷取。 請參閱 D3D12_RAYTRACING_INSTANCE_FLAGS ,以選取哪個三角形正向每個實例。

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

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

此旗標與RAY_FLAG_CULL_FRONT_FACING_TRIANGLES互斥。
D3D12_RAY_FLAG_CULL_OPAQUE
值: 0x40
根據其幾何和實例旗標,將視為不透明的所有基本類型。

此旗標與RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE和RAY_FLAG_CULL_NON_OPAQUE互斥。
D3D12_RAY_FLAG_CULL_NON_OPAQUE
值: 0x80
根據其幾何和實例旗標,將視為非不透明的所有基本類型進行 Cull。

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

需求

   
標頭 d3d12.h