語法
typedef enum D3D12_RAY_FLAGS
{
D3D12_RAY_FLAG_NONE = 0x00,
D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
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,
D3D12XBOX_RAY_FLAG_COHERENT_RAYS_HINT = 0x1000,
} D3D12_RAY_FLAGS
常數
| 常數 | 描述 |
|---|---|
| D3D12_RAY_FLAG_NONE | 未選取任何選項。 |
| D3D12_RAY_FLAG_FORCE_OPAQUE | 光線追蹤中遇到的所有光線與基本型別交集都會視為不透明。因此不會執行任何 any hit 著色器,無論命中的幾何是否指定 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 | 光線追蹤中遇到的所有光線與基本型別交集都會視為非不透明。因此若有 any hit 著色器,就會加以執行,無論命中的幾何是否指定 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 | 光線追蹤中遇到的第一個光線與基本型別交集,會在 any hit 著色器之後立即自動呼叫 AcceptHitAndEndSearch,即使沒有 any hit 著色器也是如此。 唯一的例外是前一個 any hit 著色器呼叫了 IgnoreHit,在此情況下光線會不受影響地繼續,使下一個命中成為第一個命中的另一個候選。若要套用此例外,any hit 著色器必須實際執行。因此,如果因為命中被視為不透明而略過 any hit 著色器 (例如因為設定了 RAY_FLAG_FORCE_OPAQUE、D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE 或 D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE),則會呼叫 AcceptHitAndEndSearch。 如果第一個命中有 closest hit 著色器,除非同時存在 RAY_FLAG_SKIP_CLOSEST_HIT_SHADER,否則會叫用該著色器。找到的這一個命中會被視為「最接近」,即使光線上可能更接近的其他潛在命中可能尚未被造訪。 此旗標的典型用途是陰影,只需要找到單一命中即可。 |
| D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER | 即使至少已認可一個命中,且最接近命中的命中群組包含 closest hit 著色器,也會略過該著色器的執行。 |
| D3D12_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 互斥。 |
| D3D12_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_FRONT_FACING_TRIANGLES 互斥。 |
| D3D12_RAY_FLAG_CULL_OPAQUE | 根據幾何與執行個體旗標,剔除所有被視為不透明的基本型別。 此旗標與 RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE 及 RAY_FLAG_CULL_NON_OPAQUE 互斥。 |
| D3D12_RAY_FLAG_CULL_NON_OPAQUE | 根據幾何與執行個體旗標,剔除所有被視為非不透明的基本型別。 此旗標與 RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE 及 RAY_FLAG_CULL_OPAQUE 互斥。 |
| D3D12XBOX_RAY_FLAG_COHERENT_RAYS_HINT | 提示周遊系統,此分派中的光線彼此具有一致性。可讓周遊稍微更有效率。 |
需求
標頭: d3d12_xs.h支援的平台: XBOX Series X|S
