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

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE

列挙型
基底型i4

メンバー 5

名前10進16進説明
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE00x0

アクセラレーション構造をコピーします。その際、存在する可能性のある自己参照ポインターを修正し、コピー先が自己完結したコピーになるようにします。他のアクセラレーション構造への外部ポインターは、コピー元からコピー先へ変更されずに引き継がれます。コピー先のサイズはコピー元のサイズと同一です。

重要

コピー元のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。 コピー先のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT10x1

クローンモードと同様に、コピー元と機能的に等価なアクセラレーション構造をコピー先に生成しますが、さらにコピー先を、より小さくなる可能性のある(少なくとも大きくなることはない)メモリフットプリントに収めます。コピー先に必要なサイズは、あらかじめ EmitRaytracingAccelerationStructurePostbuildInfo から取得できます。

このモードは、コピー元のアクセラレーション構造が元々 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION フラグを指定してビルドされた場合にのみ有効です。それ以外の場合、結果は未定義です。

ジオメトリのコンパクト化にはアクセラレーション構造全体が構築されている必要があります。そのため、まず構造をビルドしてからコンパクト化する必要があります。

重要

コピー元のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。 コピー先のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS20x2

コピー先は D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER に記述されたレイアウトになります。コピー先に必要なサイズは、あらかじめ EmitRaytracingAccelerationStructurePostbuildInfo から取得できます。

このモードは PIX などのツールでの使用のみを想定していますが、アプリケーションが使用することを妨げるものではありません。出力は本質的にアクセラレーション構造のビルドの逆になります。この全体的な構造は、ツールや PIX が、アプリケーションの入力からドライバーが作成したアクセラレーション構造をある程度視覚的に把握できるようにするのに十分なものです。表示された内容が、アプリケーションがアクセラレーション構造の作成に使用したデータと、許容される誤差を超えて大きく食い違っている場合、可視化によってアクセラレーション構造におけるドライバーのバグを明らかにできることがあります。

トップレベルアクセラレーション構造の場合、出力には元のビルドで使用されたデータと同一のインスタンス記述のセットが、同じ順序で含まれます。ボトムレベルアクセラレーション構造の場合、出力には元のビルドで使用されたデータにおおよそ一致するジオメトリ記述のセットが含まれます。出力が元のデータとおおよその一致にとどまるのは、一つにはアクセラレーション構造の仕様で許容されている誤差のためであり、もう一つには概念的にエンコードされているものとまったく同じ構造を報告することの本質的な複雑さのためです。たとえば、プロシージャルプリミティブに対して返される軸平行境界ボックス (AABB) は、アクセラレーション構造の表現に実際に含まれているものより体積が保守的(大きめ)であったり、個数さえ異なっていたりする可能性があります。それぞれが独自のジオメトリ記述を持つジオメトリは、元のアクセラレーション構造と同じ順序で現れます。シェーダーテーブルのインデックス計算がこれに依存するためです。

重要

コピー元のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。 コピー先のメモリは D3D12_RESOURCE_STATE_UNORDERED_ACCESS 状態でなければなりません。

このモードは、OS で開発者モードが有効になっている場合にのみ許可されます。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE30x3

コピー先は D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC のドキュメントに記述されたレイアウトとサイズになります。この構造体自体は、EmitRaytracingAccelerationStructurePostbuildInfo の呼び出しによって生成されます。

このモードはアクセラレーション構造をシリアル化し、アプリケーションやツールが後で再利用するためにファイルへ保存し、逆シリアル化によって(通常は別のデバイスインスタンス上で)再利用できるようにします。

トップレベルアクセラレーション構造をシリアル化する場合、それが参照するボトムレベルアクセラレーション構造がメモリ上に残っている必要も、そのまま保たれている必要もありません。同様に、ボトムレベルアクセラレーション構造は、それを指すトップレベルアクセラレーション構造があるかどうかに関係なく、単独でシリアル化できます。つまり、アクセラレーション構造をシリアル化する順序は問いません。

重要

コピー元のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。 コピー先のメモリは D3D12_RESOURCE_STATE_UNORDERED_ACCESS 状態でなければなりません。

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE40x4

コピー元はシリアル化されたアクセラレーション構造でなければならず、ヘッダーの直後にあるポインターはすべて、新しい位置を指すように修正されている必要があります。詳細については、D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC を参照してください。

コピー先には、元々シリアル化されたアクセラレーション構造と機能的に等価なアクセラレーション構造が得られます。トップレベルとボトムレベルのアクセラレーション構造を逆シリアル化する順序は問いませんが、トップレベルアクセラレーション構造がレイトレーシングやアクセラレーション構造の更新に使用される時点までに、それが参照するボトムレベルアクセラレーション構造が存在している必要があります。

逆シリアル化は、データをシリアル化したときと同じデバイスおよび同じドライバーバージョン上でのみ実行できます。そうでない場合、結果は未定義です。

このモードは PIX などのツールでの使用のみを想定していますが、アプリケーションが使用することを妨げるものではありません。ただし、このモードは OS で開発者モードが有効になっている場合にのみ許可されます。 このコピー操作はアクセラレーション構造のキャッシュを目的としたものではありません。アクセラレーション構造の完全なビルドを実行する方が、ディスクから読み込むよりも高速である可能性が高いためです。

重要

コピー元のメモリは D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 状態でなければなりません。 コピー先のメモリは D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 状態でなければなりません。

公式ドキュメント

CopyRaytracingAccelerationStructure を呼び出したときに実行されるコピー操作の種類を指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_COPY_MODE : int {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
public enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE : int
{
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4,
}
Public Enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE As Integer
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4
End Enum
import enum

class D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE(enum.IntEnum):
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE: i32 = 0;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT: i32 = 1;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS: i32 = 2;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE: i32 = 3;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE: i32 = 4;
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
const (
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE int32 = 0
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT int32 = 1
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS int32 = 2
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE int32 = 3
	D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE int32 = 4
)
const
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3;
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4;
// D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE: i32 = 0;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT: i32 = 1;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS: i32 = 2;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE: i32 = 3;
pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE: i32 = 4;
const
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE* = 0
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT* = 1
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS* = 2
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE* = 3
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE* = 4
enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE : int {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 3,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 4,
}
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE                          0x0
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT                        0x1
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS 0x2
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE                      0x3
#define global D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE                    0x4