Win32 API 日本語リファレンス
ホームGraphics.Direct3D12 › D3D12_RAYTRACING_GEOMETRY_FLAGS

D3D12_RAYTRACING_GEOMETRY_FLAGS

列挙型フラグ
基底型i4

メンバー 3

名前10進16進説明
D3D12_RAYTRACING_GEOMETRY_FLAG_NONE00x0オプションを指定しません。
D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE10x1レイがこのジオメトリに交差したとき、any hit シェーダーが存在しないものとして動作します。このフラグはレイ処理の重要な最適化を可能にするため、アプリケーションで積極的に使用することをお勧めします。なお、この動作は D3D12_RAYTRACING_INSTANCE_FLAGS によってインスタンス単位で、また TraceRay のレイ フラグによってレイ単位でオーバーライドできます。
D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION20x2

既定では、システムは 1 つのレイとプリミティブの交差に対して any hit シェーダーを複数回起動することが許されています。この柔軟性により、特定のケースで高速化構造のトラバーサル効率が向上します。たとえば、高速化構造が内部的にバウンディング ボリュームで実装されている場合、細長い三角形を 1 つの大きなボックスに格納するよりも、複数のバウンディング ボックスに分けて格納する方が有利になることがあります。ただし、アプリケーションのユース ケースによっては、交差を any hit シェーダーに対して最大 1 回しか報告しないことが求められます。このフラグは、対象のジオメトリに対してその保証を有効にしますが、パフォーマンスに影響が生じる可能性があります。

このフラグはすべてのジオメトリの種類に適用されます。

公式ドキュメント

D3D12_RAYTRACING_GEOMETRY_DESC 構造体で使用するレイトレーシング ジオメトリのフラグを指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS : int {
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1,
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2
} D3D12_RAYTRACING_GEOMETRY_FLAGS;
[Flags]
public enum D3D12_RAYTRACING_GEOMETRY_FLAGS : int
{
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1,
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2,
}
<Flags>
Public Enum D3D12_RAYTRACING_GEOMETRY_FLAGS As Integer
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2
End Enum
import enum

class D3D12_RAYTRACING_GEOMETRY_FLAGS(enum.IntFlag):
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2
// D3D12_RAYTRACING_GEOMETRY_FLAGS (flags)
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_NONE: i32 = 0;
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE: i32 = 1;
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION: i32 = 2;
// D3D12_RAYTRACING_GEOMETRY_FLAGS
const (
	D3D12_RAYTRACING_GEOMETRY_FLAG_NONE int32 = 0
	D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE int32 = 1
	D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION int32 = 2
)
const
  D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0;
  D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1;
  D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2;
// D3D12_RAYTRACING_GEOMETRY_FLAGS
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_NONE: i32 = 0;
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE: i32 = 1;
pub const D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION: i32 = 2;
const
  D3D12_RAYTRACING_GEOMETRY_FLAG_NONE* = 0
  D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE* = 1
  D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION* = 2
enum D3D12_RAYTRACING_GEOMETRY_FLAGS : int {
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 1,
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 2,
}
#define global D3D12_RAYTRACING_GEOMETRY_FLAG_NONE                           0x0
#define global D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE                         0x1
#define global D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION 0x2
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。