Bagikan melalui


struktur D3D12_RAYTRACING_INSTANCE_DESC (d3d12.h)

Menjelaskan instans struktur akselerasi raytracing yang digunakan dalam memori GPU selama proses build struktur akselerasi.

Sintaks

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;

Anggota

Transform[3]

Jenis: FLOAT [3][4]

Matriks transformasi 3x4 dalam tata letak utama baris yang mewakili transformasi instans ke dunia. Implementasi mengubah sinar, dibandingkan dengan mengubah semua geometri atau AABB.

Catatan

Tata letak Transform adalah perubahan urutan bagaimana matriks affine biasanya disimpan dalam memori. Alih-alih empat vektor 3, Transform ditata sebagai tiga vektor 4.

InstanceID

Jenis: UINT : 24

Nilai 24-bit arbitrer yang dapat diakses menggunakan InstanceID fungsi intrinsik dalam jenis shader yang didukung.

InstanceMask

Jenis: UINT : 8

Masker 8-bit yang ditetapkan ke instans, yang dapat digunakan untuk menyertakan/menolak grup instans berdasarkan per sinar. Jika nilainya nol, maka instans tidak akan pernah disertakan, jadi biasanya ini harus diatur ke beberapa nilai bukan nol. Untuk informasi selengkapnya lihat, InstanceInclusionMask parameter ke fungsi TraceRay .

InstanceContributionToHitGroupIndex

Jenis: UINT : 24

Nilai 24-bit arbitrer yang mewakili kontribusi per instans untuk ditambahkan ke dalam pengindeksan tabel shader untuk memilih grup hit yang akan digunakan.

Flags

Jenis: UINT : 8

Masker 8-bit yang mewakili bendera dari D3D12_RAYTRACING_INSTANCE_FLAGS untuk diterapkan ke instans.

AccelerationStructure

Jenis: D3D12_GPU_VIRTUAL_ADDRESS

Alamat struktur akselerasi tingkat bawah yang sedang di-instans. Alamat harus diratakan ke 256 byte, didefinisikan sebagai D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Setiap struktur akselerasi yang ada yang diteruskan di sini akan sudah diperlukan untuk ditempatkan dengan keselarasan tersebut.

Memori yang ditunjukkan harus dalam status D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Keterangan

Definisi struct C++ ini berguna jika Anda membuat data instans pada CPU terlebih dahulu, lalu mengunggah ke GPU. Tetapi aplikasi Anda juga gratis untuk menghasilkan deskripsi instans langsung ke memori GPU (dari shader komputasi, misalnya) mengikuti tata letak yang sama.

Persyaratan

   
Header d3d12.h