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

D3D12_STATE_OBJECT_FLAGS

列挙型フラグ
基底型i4

メンバー 4

名前10進16進説明
D3D12_STATE_OBJECT_FLAG_NONE00x0状態オブジェクトに対する制約はありません。
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS10x1

このフラグは collection 型の状態オブジェクトにのみ適用されます。それ以外の場合、このフラグは無視されます。

このコレクションのエクスポートは、未解決の参照 (依存関係) を持つことが許可されます。それらの参照は、このコレクションがレイトレーシング パイプライン状態オブジェクト (RTPSO) などの包含側の状態オブジェクトに含められるときに解決 (定義) される必要があります。これには、外部で定義されたサブオブジェクトの関連付けに依存して、外部のサブオブジェクト (ルート シグネチャなど) をローカルのエクスポートに関連付ける場合も含まれます。

このフラグがない場合、このコレクション内のすべてのエクスポートは、必要なサブオブジェクトの関連付けがローカルで定義されていることを含め、依存関係がローカルで完全に解決されていなければなりません。高度な実装やドライバーは、コレクション内のコードをコンパイルするのに十分な情報を得られるため、未コンパイルのコードを保持しておく必要がありません (D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS フラグが設定されている場合を除く)。そのため、このコレクションが包含側の状態オブジェクト (RTPSO など) で使用されるときにドライバーが行う作業は最小限で済み、理想的にはせいぜい「安価な」リンク処理だけになります。

D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS20x2

このフラグは collection 型の状態オブジェクトにのみ適用されます。それ以外の場合、このフラグは無視されます。

このコレクションが別の状態オブジェクト (RTPSO など) に含められる場合、包含側の状態オブジェクトの他の部分にあるシェーダーや関数が、このコレクションのエクスポートに依存する (呼び出すなど) ことが許可されます。

このフラグがない場合 (既定)、このコレクションのエクスポートを、包含側の状態オブジェクト (RTPSO など) の他の部分から直接参照することはできません。これにより、コレクションのメモリ使用量をわずかに削減できます。というのも、外部の関数から呼び出されてすべてのコードをまとめてコンパイルすることになる可能性に備えて、ドライバーが未コンパイルのコードをコレクション内に保持しておく必要がなくなるからです。ただし、このコレクション内のコードに必要なサブオブジェクトの関連付けがすべてローカルで定義されていない場合は、ドライバーがまだシェーダー コードをコンパイルできず、未コンパイルのコードを保持し続ける必要がある場合があります。

外部のサブオブジェクトをローカルのエクスポートに関連付ける、外部で定義されたサブオブジェクトの関連付けは、ローカルの定義に対する外部からの依存関係とは見なされません。したがって、このフラグの有無はその関連付けが許可されるかどうかに影響しません。一方、現在のコレクションが、ローカルで定義されたサブオブジェクトを外部のエクスポート (シェーダーなど) に関連付けるサブオブジェクトの関連付けを定義する場合は、ローカルの定義に対する外部からの依存関係と見なされるため、このフラグを設定しなければなりません。

このフラグの有無にかかわらず、コレクション内のシェーダー エントリ ポイント (ヒット グループやミス シェーダーなど) は、エクスポートされていれば包含側の状態オブジェクト (RTPSO など) からエントリ ポイントとして参照できます。RTPSO の場合、エクスポートされたエントリ ポイントはレイトレーシングのシェーダー テーブルで使用できます。

D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS40x4

公式ドキュメント

状態オブジェクトに対する制約を指定します。この列挙型の値は D3D12_STATE_OBJECT_CONFIG 構造体で使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_STATE_OBJECT_FLAGS : int {
    D3D12_STATE_OBJECT_FLAG_NONE = 0,
    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1,
    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2,
    D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 4
} D3D12_STATE_OBJECT_FLAGS;
[Flags]
public enum D3D12_STATE_OBJECT_FLAGS : int
{
    D3D12_STATE_OBJECT_FLAG_NONE = 0,
    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1,
    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2,
    D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 4,
}
<Flags>
Public Enum D3D12_STATE_OBJECT_FLAGS As Integer
    D3D12_STATE_OBJECT_FLAG_NONE = 0
    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1
    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2
    D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 4
End Enum
import enum

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