D3D12_RAYTRACING_INSTANCE_DESC 結構 (d3d12.h)
描述加速結構建置程式期間,GPU 記憶體中使用的光線追蹤加速結構的實例。
語法
typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
FLOAT Transform[3][4];
UINT InstanceID : 24;
UINT InstanceMask : 8;
UINT InstanceContributionToHitGroupIndex : 24;
UINT Flags : 8;
D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;
成員
Transform[3]
類型: FLOAT [3][4]
代表實例對世界轉換之資料列主要配置中的 3x4 轉換矩陣。 實作會轉換光線,而不是轉換所有幾何或 AAB。
注意
的版面配置 Transform
是一種轉置方式,也就是通常儲存在記憶體中的Affine 矩陣的方式。 而不是四個 3 向量, Transform
會配置為三個 4 向量。
InstanceID
類型: UINT :24
在支援的著色器類型中使用內建函式存取的 InstanceID
任意 24 位值。
InstanceMask
類型: UINT :8
指派給 實例的 8 位遮罩,可用來依每一光線包含/拒絕實例群組。 如果值為零,則永遠不會包含 實例,因此這通常應該設定為一些非零值。 如需詳細資訊, InstanceInclusionMask
請參閱 TraceRay 函式的參數。
InstanceContributionToHitGroupIndex
類型: UINT :24
任意的 24 位值,代表要加入著色器資料表索引的個別實例參與,以選取要使用的點擊群組。
Flags
類型: UINT :8
8 位遮罩,代表要套用至 實例 之D3D12_RAYTRACING_INSTANCE_FLAGS 旗標。
AccelerationStructure
正在實例之底層加速結構的位址。 位址必須對齊 256 個位元組,定義為 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT。 此處傳入的任何現有加速結構都必須以這類對齊方式放置。
指向 的記憶體必須處於 狀態D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE。
備註
如果您要先在 CPU 上產生實例資料,然後再上傳至 GPU,這個 C++ 結構定義會很有用。 但您的應用程式也可以直接從計算著色器產生 GPU 記憶體 (實例描述,例如,遵循相同的配置) 。
需求
標頭 | d3d12.h |