D3D12_RAY_FLAGS列挙 (d3d12.h)

透過性、カリング、早期アウトの動作をオーバーライドするために TraceRay 関数に渡されるフラグ。

構文

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
レイトレースで最初にレイ プリミティブ交差が検出されると、ヒット シェーダーがない場合など、ヒット シェーダーの直後に AcceptHitAndEndSearch が自動的に呼び出されます。

唯一の例外は、前のヒット シェーダーが IgnoreHit を呼び出した場合です。その場合、レイは影響を受け続けず、次のヒットが最初のヒットになる別の候補になります。 この例外を適用するには、ヒット シェーダーを実際に実行する必要があります。 そのため、ヒットが不透明として扱われるためにヒット シェーダーがスキップされた場合 (たとえば、RAY_FLAG_FORCE_OPAQUE、D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE、D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUEが設定されているため)、 AcceptHitAndEndSearch が呼び出されます。

最も近いヒット シェーダーが最初のヒット時に存在する場合は、RAY_FLAG_SKIP_CLOSEST_HIT_SHADERも存在しない限り呼び出されます。 検出されたヒットは、レイに近い可能性のある他のヒットが訪問されていない可能性がある場合でも、"最も近い" と見なされます。

このフラグの一般的な用途は、1 つのヒットしか見つからないシャドウ用です。
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
値: 0x8
少なくとも 1 つのヒットがコミットされ、最も近いヒットのヒット グループに最も近いヒット シェーダーが含まれている場合でも、そのシェーダーの実行をスキップします。
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
ジオメトリとインスタンス フラグに基づいて非不透明と見なされるすべてのプリミティブをカリングします。

このフラグは、RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE、およびRAY_FLAG_CULL_OPAQUEと相互に排他的です。

必要条件

   
Header d3d12.h