D3D12_RAY_FLAGS
列挙型フラグメンバー 12
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| D3D12_RAY_FLAG_NONE | 0 | 0x0 | オプションは選択されません。 |
| D3D12_RAY_FLAG_FORCE_OPAQUE | 1 | 0x1 | レイトレース中に検出されたレイとプリミティブのすべての交差が不透明として扱われます。そのため、ヒットしたジオメトリが D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE を指定しているかどうか、およびヒットしたインスタンスのインスタンスフラグに関係なく、any hit シェーダーは実行されません。 このフラグは RAY_FLAG_FORCE_NON_OPAQUE、RAY_FLAG_CULL_OPAQUE、RAY_FLAG_CULL_NON_OPAQUE とは相互排他です。 |
| D3D12_RAY_FLAG_FORCE_NON_OPAQUE | 2 | 0x2 | レイトレース中に検出されたレイとプリミティブのすべての交差が非不透明として扱われます。そのため、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 | 4 | 0x4 | レイトレース中に最初に検出されたレイとプリミティブの交差により、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 も同時に指定されていない限り、そのシェーダーが呼び出されます。レイ上により近い可能性のある他のヒットが調べられていない場合でも、見つかったその 1 つのヒットが「最も近い (closest)」ものとみなされます。 このフラグの代表的な用途は影の処理であり、ヒットを 1 つ見つけるだけでよい場合に使用します。 |
| D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER | 8 | 0x8 | 少なくとも 1 つのヒットがコミットされ、かつ最も近いヒットのヒットグループに closest hit シェーダーが含まれている場合でも、そのシェーダーの実行をスキップします。 |
| D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES | 16 | 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 | 32 | 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 | 64 | 0x40 | ジオメトリフラグおよびインスタンスフラグに基づいて不透明とみなされるすべてのプリミティブをカリングします。 このフラグは RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE、RAY_FLAG_CULL_NON_OPAQUE とは相互排他です。 |
| D3D12_RAY_FLAG_CULL_NON_OPAQUE | 128 | 0x80 | ジオメトリフラグおよびインスタンスフラグに基づいて非不透明とみなされるすべてのプリミティブをカリングします。 このフラグは RAY_FLAG_FORCE_OPAQUE、RAY_FLAG_FORCE_NON_OPAQUE、RAY_FLAG_CULL_OPAQUE とは相互排他です。 |
| D3D12_RAY_FLAG_SKIP_TRIANGLES | 256 | 0x100 | |
| D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES | 512 | 0x200 | |
| D3D12_RAY_FLAG_FORCE_OMM_2_STATE | 1024 | 0x400 |
公式ドキュメント
透明度、カリング、早期終了の動作を上書きするために TraceRay 関数に渡されるフラグです。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum D3D12_RAY_FLAGS : int {
D3D12_RAY_FLAG_NONE = 0,
D3D12_RAY_FLAG_FORCE_OPAQUE = 1,
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2,
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4,
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8,
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16,
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32,
D3D12_RAY_FLAG_CULL_OPAQUE = 64,
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128,
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256,
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512,
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024
} D3D12_RAY_FLAGS;[Flags]
public enum D3D12_RAY_FLAGS : int
{
D3D12_RAY_FLAG_NONE = 0,
D3D12_RAY_FLAG_FORCE_OPAQUE = 1,
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2,
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4,
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8,
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16,
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32,
D3D12_RAY_FLAG_CULL_OPAQUE = 64,
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128,
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256,
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512,
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024,
}<Flags>
Public Enum D3D12_RAY_FLAGS As Integer
D3D12_RAY_FLAG_NONE = 0
D3D12_RAY_FLAG_FORCE_OPAQUE = 1
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32
D3D12_RAY_FLAG_CULL_OPAQUE = 64
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024
End Enumimport enum
class D3D12_RAY_FLAGS(enum.IntFlag):
D3D12_RAY_FLAG_NONE = 0
D3D12_RAY_FLAG_FORCE_OPAQUE = 1
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32
D3D12_RAY_FLAG_CULL_OPAQUE = 64
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024// D3D12_RAY_FLAGS (flags)
pub const D3D12_RAY_FLAG_NONE: i32 = 0;
pub const D3D12_RAY_FLAG_FORCE_OPAQUE: i32 = 1;
pub const D3D12_RAY_FLAG_FORCE_NON_OPAQUE: i32 = 2;
pub const D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH: i32 = 4;
pub const D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER: i32 = 8;
pub const D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: i32 = 16;
pub const D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: i32 = 32;
pub const D3D12_RAY_FLAG_CULL_OPAQUE: i32 = 64;
pub const D3D12_RAY_FLAG_CULL_NON_OPAQUE: i32 = 128;
pub const D3D12_RAY_FLAG_SKIP_TRIANGLES: i32 = 256;
pub const D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES: i32 = 512;
pub const D3D12_RAY_FLAG_FORCE_OMM_2_STATE: i32 = 1024;// D3D12_RAY_FLAGS
const (
D3D12_RAY_FLAG_NONE int32 = 0
D3D12_RAY_FLAG_FORCE_OPAQUE int32 = 1
D3D12_RAY_FLAG_FORCE_NON_OPAQUE int32 = 2
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH int32 = 4
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER int32 = 8
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES int32 = 16
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES int32 = 32
D3D12_RAY_FLAG_CULL_OPAQUE int32 = 64
D3D12_RAY_FLAG_CULL_NON_OPAQUE int32 = 128
D3D12_RAY_FLAG_SKIP_TRIANGLES int32 = 256
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES int32 = 512
D3D12_RAY_FLAG_FORCE_OMM_2_STATE int32 = 1024
)const
D3D12_RAY_FLAG_NONE = 0;
D3D12_RAY_FLAG_FORCE_OPAQUE = 1;
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2;
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4;
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8;
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16;
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32;
D3D12_RAY_FLAG_CULL_OPAQUE = 64;
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128;
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256;
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512;
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024;// D3D12_RAY_FLAGS
pub const D3D12_RAY_FLAG_NONE: i32 = 0;
pub const D3D12_RAY_FLAG_FORCE_OPAQUE: i32 = 1;
pub const D3D12_RAY_FLAG_FORCE_NON_OPAQUE: i32 = 2;
pub const D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH: i32 = 4;
pub const D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER: i32 = 8;
pub const D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: i32 = 16;
pub const D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: i32 = 32;
pub const D3D12_RAY_FLAG_CULL_OPAQUE: i32 = 64;
pub const D3D12_RAY_FLAG_CULL_NON_OPAQUE: i32 = 128;
pub const D3D12_RAY_FLAG_SKIP_TRIANGLES: i32 = 256;
pub const D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES: i32 = 512;
pub const D3D12_RAY_FLAG_FORCE_OMM_2_STATE: i32 = 1024;const
D3D12_RAY_FLAG_NONE* = 0
D3D12_RAY_FLAG_FORCE_OPAQUE* = 1
D3D12_RAY_FLAG_FORCE_NON_OPAQUE* = 2
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH* = 4
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER* = 8
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES* = 16
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES* = 32
D3D12_RAY_FLAG_CULL_OPAQUE* = 64
D3D12_RAY_FLAG_CULL_NON_OPAQUE* = 128
D3D12_RAY_FLAG_SKIP_TRIANGLES* = 256
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES* = 512
D3D12_RAY_FLAG_FORCE_OMM_2_STATE* = 1024enum D3D12_RAY_FLAGS : int {
D3D12_RAY_FLAG_NONE = 0,
D3D12_RAY_FLAG_FORCE_OPAQUE = 1,
D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 2,
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 4,
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 8,
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 16,
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 32,
D3D12_RAY_FLAG_CULL_OPAQUE = 64,
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 128,
D3D12_RAY_FLAG_SKIP_TRIANGLES = 256,
D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 512,
D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 1024,
}#define global D3D12_RAY_FLAG_NONE 0x0
#define global D3D12_RAY_FLAG_FORCE_OPAQUE 0x1
#define global D3D12_RAY_FLAG_FORCE_NON_OPAQUE 0x2
#define global D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH 0x4
#define global D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER 0x8
#define global D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES 0x10
#define global D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES 0x20
#define global D3D12_RAY_FLAG_CULL_OPAQUE 0x40
#define global D3D12_RAY_FLAG_CULL_NON_OPAQUE 0x80
#define global D3D12_RAY_FLAG_SKIP_TRIANGLES 0x100
#define global D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES 0x200
#define global D3D12_RAY_FLAG_FORCE_OMM_2_STATE 0x400
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。