Bagikan melalui


enumerasi D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS (d3d12.h)

Menentukan bendera untuk membangun struktur akselerasi raytracing. Gunakan nilai dari enumerasi ini dengan struktur D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS yang menyediakan input ke operasi build struktur akselerasi.

Sintaks

typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
} ;

Konstanta

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE
Nilai: 0
Tidak ada opsi yang ditentukan untuk build struktur akselerasi.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE
Nilai: 0x1
Bangun struktur akselerasi sehingga mendukung pembaruan di masa mendatang (melalui bendera D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE) alih-alih aplikasi harus sepenuhnya membangun kembali struktur. Opsi ini dapat mengakibatkan peningkatan konsumsi memori, waktu build, dan performa raytracing yang lebih rendah. Namun, pembaruan di masa mendatang harus lebih cepat daripada membangun struktur akselerasi yang setara dari awal.

Bendera ini hanya dapat diatur pada build struktur akselerasi awal, atau pada pembaruan di mana struktur akselerasi sumber ditentukan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE. Dengan kata lain, setelah struktur akselerasi dibangun tanpa D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE, tidak ada struktur akselerasi lain yang dapat dibuat darinya melalui pembaruan.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION
Nilai: 0x2
Memungkinkan opsi untuk memadatkan struktur akselerasi dengan memanggil CopyRaytracingAccelerationStructure menggunakan mode ringkas, yang ditentukan dengan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT.

Opsi ini dapat mengakibatkan peningkatan konsumsi memori dan waktu build. Namun, setelah pemadatan di masa depan, struktur akselerasi yang dihasilkan harus menggunakan jejak memori yang lebih kecil daripada membangun struktur akselerasi dari awal.

Bendera ini kompatibel dengan semua bendera lainnya. Jika ditentukan sebagai bagian dari pembaruan struktur akselerasi, struktur akselerasi sumber juga harus dibangun dengan bendera ini. Dengan kata lain, setelah struktur akselerasi dibangun tanpa D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION, tidak ada struktur akselerasi lain yang dapat dibuat darinya melalui pembaruan yang menentukan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION.



Menentukan ALLOW_COMPACTION dapat meningkatkan ukuran struktur akselerasi pra-pemadatan versus tidak menentukan ALLOW_COMPACTION.



Jika beberapa build inkremental dilakukan sebelum akhirnya memadatkan, mungkin ada pekerjaan terkait pemadatan redundan yang dilakukan.


Ukuran yang diperlukan untuk struktur akselerasi ringkas dapat dikueri sebelum pemadatan melalui EmitRaytracingAccelerationStructurePostbuildInfo. Lihat D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC untuk informasi selengkapnya tentang properti ukuran struktur akselerasi yang dikompresi.

Catatan Ketika D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE ditentukan, ada informasi tertentu yang perlu dipertahankan dalam struktur akselerasi, dan pemadatan hanya akan membantu begitu banyak. Namun, jika alur tahu bahwa struktur akselerasi tidak akan lagi diperbarui, itu dapat membuat struktur lebih ringkas. Beberapa aplikasi mungkin mendapat manfaat dari memampatkan dua kali - sekali setelah build awal, dan sekali lagi setelah struktur akselerasi diselesaikan ke status statis, jika itu terjadi.

 
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE
Nilai: 0x4
Membangun struktur akselerasi berkualitas tinggi yang memaksimalkan performa raytracing dengan mengorbankan waktu build tambahan. Biasanya, implementasi akan memakan waktu 2-3 kali waktu build daripada pengaturan default untuk mendapatkan performa pelacakan yang lebih baik.

Bendera ini direkomendasikan untuk geometri statis khususnya. Ini kompatibel dengan semua bendera lain kecuali untuk D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD
Nilai: 0x8
Membangun struktur akselerasi kualitas yang lebih rendah, memperdagangkan performa raytracing untuk kecepatan build. Biasanya, implementasi akan memakan waktu 1/2 hingga 1/3 waktu build daripada pengaturan default, dengan pengorbanan dalam performa pelacakan.

Bendera ini kompatibel dengan semua bendera lain kecuali untuk D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY
Nilai: 0x10
Minimalkan jumlah memori awal yang digunakan selama build struktur akselerasi serta ukuran hasilnya. Opsi ini dapat mengakibatkan peningkatan waktu build dan/atau waktu raytracing. Ini ortogonal untuk bendera D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION dan pemadatan struktur akselerasi eksplisit yang diaktifkannya. Menggabungkan bendera dapat berarti struktur akselerasi awal serta hasil pemadatannya menggunakan lebih sedikit memori.

Dampak penggunaan bendera ini untuk build tercermin dalam hasil pemanggilan GetRaytracingAccelerationStructurePrebuildInfo sebelum melakukan build untuk mengambil persyaratan memori untuk build.

Bendera ini kompatibel dengan semua bendera lainnya.
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE
Nilai: 0x20
Lakukan pembaruan struktur akselerasi, dibandingkan dengan membangun dari awal. Ini lebih cepat daripada build penuh, tetapi dapat berdampak negatif pada performa raytracing, terutama jika posisi objek yang mendasarinya telah berubah secara signifikan dari build asli struktur akselerasi sebelum pembaruan.

Jika alamat struktur akselerasi sumber dan tujuan identik, pembaruan dilakukan di tempat. Rentang alamat sumber dan tujuan lainnya yang tumpang tindih tidak valid. Untuk sumber dan tujuan yang tidak tumpang tindih, struktur akselerasi sumber tidak dimodifikasi. Persyaratan memori untuk struktur akselerasi output sama seperti dalam struktur akselerasi input

Struktur akselerasi sumber harus dibangun dengan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Bendera ini kompatibel dengan semua bendera lainnya. Pilihan bendera lainnya, selain D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE dan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE, harus cocok dengan bendera dalam struktur akselerasi sumber.

Pembaruan struktur akselerasi dapat dilakukan berturut-turut tanpa batas, selama struktur akselerasi sumber dibuat dengan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE dan bendera untuk build pembaruan terus menentukan D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE.

Persyaratan

Persyaratan Nilai
Header d3d12.h