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

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS

列挙型フラグ
基底型i4

メンバー 9

名前10進16進説明
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE00x0高速化構造の構築に対してオプションを指定しません。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE10x1

アプリケーションが構造全体を再構築しなくても、以後の更新 (フラグ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE による更新) をサポートできるように高速化構造を構築します。このオプションを使用すると、メモリ消費量および構築時間が増加し、レイトレーシングのパフォーマンスが低下する場合があります。ただし、以後の更新は、同等の高速化構造を最初から構築するよりも高速になります。

このフラグを設定できるのは、高速化構造の最初の構築時か、ソースとなる高速化構造が D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE を指定していた場合の更新時のみです。つまり、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE を指定せずに構築された高速化構造からは、更新によって他の高速化構造を作成することはできません。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION20x2

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT で指定されるコンパクトモードを使用して CopyRaytracingAccelerationStructure を呼び出し、高速化構造をコンパクト化するオプションを有効にします。

このオプションを使用すると、メモリ消費量および構築時間が増加する場合があります。ただし、以後にコンパクト化を行うと、結果として得られる高速化構造は、高速化構造を最初から構築する場合よりもメモリ使用量が小さくなります。

このフラグは他のすべてのフラグと組み合わせて使用できます。高速化構造の更新の一部として指定する場合、ソースとなる高速化構造もこのフラグを指定して構築されている必要があります。つまり、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION を指定せずに構築された高速化構造からは、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION を指定する更新によって他の高速化構造を作成することはできません。

ALLOW_COMPACTION を指定すると、指定しない場合に比べて、コンパクト化前の高速化構造のサイズが大きくなることがあります。

最終的なコンパクト化の前に増分ビルドを複数回実行すると、コンパクト化に関連する処理が冗長に実行される場合があります。

コンパクト化後の高速化構造に必要なサイズは、コンパクト化の前に EmitRaytracingAccelerationStructurePostbuildInfo を使用して照会できます。コンパクト化後の高速化構造のサイズの性質について詳しくは、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC を参照してください。

注意 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE が指定されている場合、高速化構造内に保持しておく必要のある情報があるため、コンパクト化の効果は限定的です。ただし、その高速化構造が今後更新されないことがパイプラインに分かっていれば、構造をよりコンパクトにできます。アプリケーションによっては、コンパクト化を 2 回行うことで効果が得られる場合があります。1 回目は最初の構築の後、2 回目は高速化構造が静的な状態に落ち着いた後 (そのような状態になる場合) です。
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE40x4

構築時間が増える代わりに、レイトレーシングのパフォーマンスを最大化する高品質な高速化構造を構築します。一般に、実装はより優れたトレース性能を得るために、既定の設定の 2 ~ 3 倍の構築時間を要します。

このフラグは、特に静的なジオメトリに対して推奨されます。D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD を除く他のすべてのフラグと組み合わせて使用できます。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD80x8

レイトレーシングのパフォーマンスと引き換えに構築速度を優先し、品質の低い高速化構造を構築します。一般に、実装はトレース性能を犠牲にして、構築時間を既定の設定の 1/2 ~ 1/3 に短縮します。

このフラグは、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD を除く他のすべてのフラグと組み合わせて使用できます。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY160x10

高速化構造の構築中に使用されるスクラッチメモリの量と、結果のサイズを最小化します。このオプションを使用すると、構築時間やレイトレーシング時間が増加する場合があります。これは D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION フラグおよびそれによって有効になる明示的な高速化構造のコンパクト化とは独立しています。これらのフラグを組み合わせると、最初の高速化構造とコンパクト化後の結果の両方でメモリ使用量を削減できます。

構築でこのフラグを使用した場合の影響は、構築前に GetRaytracingAccelerationStructurePrebuildInfo を呼び出して構築に必要なメモリ量を取得した結果に反映されます。

このフラグは他のすべてのフラグと組み合わせて使用できます。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE320x20

最初から構築するのではなく、高速化構造の更新を実行します。これは完全な構築よりも高速ですが、レイトレーシングのパフォーマンスに悪影響を及ぼす場合があります。特に、更新前の高速化構造を構築した時点から、対象オブジェクトの位置が大きく変化している場合に顕著です。

ソースとコピー先の高速化構造のアドレスが同一の場合、更新はインプレースで実行されます。それ以外でソースとコピー先のアドレス範囲が重複することは無効です。ソースとコピー先が重複していない場合、ソースの高速化構造は変更されません。出力先の高速化構造に必要なメモリ量は、入力の高速化構造と同じです。

ソースの高速化構造は、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE を指定して構築されている必要があります。

このフラグは他のすべてのフラグと組み合わせて使用できます。D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATED3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE を除く他のフラグの選択は、ソースの高速化構造のフラグと一致していなければなりません。

ソースの高速化構造が D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE を指定して作成されており、更新時の構築フラグでも引き続き D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE を指定している限り、高速化構造の更新は回数の制限なく連続して実行できます。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE640x40
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS1280x80

公式ドキュメント

レイトレーシング高速化構造 (acceleration structure) の構築に関するフラグを指定します。この列挙型の値は、高速化構造の構築操作への入力を提供する D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 構造体で使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ACCELERATION_STRUCTURE_BUILD_FLAGS : int {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
[Flags]
public enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS : int
{
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128,
}
<Flags>
Public Enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS As Integer
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128
End Enum
import enum

class D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS(enum.IntFlag):
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (flags)
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE: i32 = 0;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE: i32 = 1;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION: i32 = 2;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE: i32 = 4;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD: i32 = 8;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY: i32 = 16;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE: i32 = 32;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE: i32 = 64;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS: i32 = 128;
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
const (
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE int32 = 0
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE int32 = 1
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION int32 = 2
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE int32 = 4
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD int32 = 8
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY int32 = 16
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE int32 = 32
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE int32 = 64
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS int32 = 128
)
const
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128;
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE: i32 = 0;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE: i32 = 1;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION: i32 = 2;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE: i32 = 4;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD: i32 = 8;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY: i32 = 16;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE: i32 = 32;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE: i32 = 64;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS: i32 = 128;
const
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE* = 0
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE* = 1
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION* = 2
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE* = 4
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD* = 8
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY* = 16
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE* = 32
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE* = 64
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS* = 128
enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS : int {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 4,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 8,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 16,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 32,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 64,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 128,
}
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE               0x0
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE       0x1
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION   0x2
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE  0x4
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD  0x8
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY    0x10
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE     0x20
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE   0x40
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS 0x80
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。