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

類型: D3D12_GPU_VIRTUAL_ADDRESS

正在實例之底層加速結構的位址。 位址必須對齊 256 個位元組,定義為 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT。 此處傳入的任何現有加速結構都必須以這類對齊方式放置。

指向 的記憶體必須處於 狀態D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE

備註

如果您要先在 CPU 上產生實例資料,然後再上傳至 GPU,這個 C++ 結構定義會很有用。 但您的應用程式也可以直接從計算著色器產生 GPU 記憶體 (實例描述,例如,遵循相同的配置) 。

需求

   
標頭 d3d12.h