struktur D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC (d3d12.h)
Menjelaskan satu set segitiga yang digunakan sebagai geometri raytracing. Geometri yang diacu oleh struktur ini selalu dalam bentuk daftar segitiga, diindeks atau tidak diindeks. Strip segitiga tidak didukung.
Sintaks
typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC {
D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
DXGI_FORMAT IndexFormat;
DXGI_FORMAT VertexFormat;
UINT IndexCount;
UINT VertexCount;
D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
Anggota
Transform3x4
Alamat matriks transformasi affine 3x4 dalam tata letak utama baris untuk diterapkan ke simpul di VertexBuffer selama build struktur akselerasi. Konten VertexBuffer tidak dimodifikasi. Jika format vertex 2D digunakan, transformasi diterapkan dengan komponen vertex ketiga yang diasumsikan nol.
Jika Transform3x4 ADALAH NULL, simpul tidak akan diubah. Menggunakan Transform3x4 dapat mengakibatkan peningkatan persyaratan komputasi dan/atau memori untuk build struktur akselerasi.
Memori yang ditujukan harus dalam status D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Alamat harus diratakan ke 16 byte, yang didefinisikan sebagai D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT.
IndexFormat
Format indeks dalam IndexBuffer. Harus salah satu dari berikut ini:
- DXGI_FORMAT_UNKNOWN - ketika IndexBuffer adalah NULL
- DXGI_FORMAT_R32_UINT
- DXGI_FORMAT_R16_UINT
VertexFormat
Format simpul di VertexBuffer. Harus salah satu dari berikut ini:
- DXGI_FORMAT_R32G32_FLOAT - komponen ketiga diasumsikan 0
- DXGI_FORMAT_R32G32B32_FLOAT
- DXGI_FORMAT_R16G16_FLOAT - komponen ketiga diasumsikan 0
- DXGI_FORMAT_R16G16B16A16_FLOAT - Komponen A16 diabaikan, data lain dapat dikemas di sana, seperti pengaturan vertex melangkah ke 6 byte.
- DXGI_FORMAT_R16G16_SNORM - komponen ketiga diasumsikan 0
- DXGI_FORMAT_R16G16B16A16_SNORM - Komponen A16 diabaikan, data lain dapat dikemas di sana, seperti pengaturan vertex melangkah ke 6 byte.
Perangkat Tingkat 1.1 mendukung format tambahan berikut:
- DXGI_FORMAT_R16G16B16A16_UNORM - Komponen A16 diabaikan, data lain dapat dikemas di sana, seperti pengaturan vertex melangkah ke 6 byte
- DXGI_FORMAT_R16G16_UNORM - komponen ketiga diasumsikan 0
- DXGI_FORMAT_R10G10B10A2_UNORM - Komponen A2 diabaikan, langkah harus 4 byte
- DXGI_FORMAT_R8G8B8A8_UNORM - Komponen A8 diabaikan, data lain dapat dikemas di sana, seperti pengaturan vertex melangkah ke 3 byte
- DXGI_FORMAT_R8G8_UNORM - komponen ketiga diasumsikan 0
- DXGI_FORMAT_R8G8B8A8_SNORM - Komponen A8 diabaikan, data lain dapat dikemas di sana, seperti pengaturan vertex melangkah ke 3 byte
- DXGI_FORMAT_R8G8_SNORM - komponen ketiga diasumsikan 0
IndexCount
Jumlah indeks di IndexBuffer. Harus 0 jika IndexBuffer adalah NULL.
VertexCount
Jumlah simpul di VertexBuffer.
IndexBuffer
Array indeks vertex. Jika NULL, segitiga tidak diindeks. Sama seperti grafik, alamat harus diselaraskan dengan ukuran IndexFormat.
Memori yang ditujukan harus dalam status D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Perhatikan bahwa jika aplikasi ingin berbagi input buffer indeks antara perakit input grafis dan input build struktur akselerasi raytracing, aplikasi selalu dapat memasukkan sumber daya ke dalam kombinasi status baca secara bersamaan, misalnya D3D12_RESOURCE_STATE_INDEX_BUFFER | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE.
VertexBuffer
Array simpul termasuk langkah. Perataan pada alamat dan langkah harus kelipatan ukuran komponen, jadi 4 byte untuk format dengan komponen 32bit dan 2 byte untuk format dengan komponen 16bit. Tidak seperti grafik, tidak ada batasan pada langkah, selain itu 32bit bawah nilai adalah semua yang digunakan - bidang adalah UINT64 murni untuk membuat bidang tetangga selaras dengan bersih / jelas di mana-mana. Setiap posisi puncak diharapkan berada di alamat awal rentang langkah dan ruang berlebih diabaikan oleh build struktur akselerasi. Ruang berlebih ini mungkin berisi data aplikasi lain seperti atribut vertex, yang bertanggung jawab untuk diambil secara manual dalam shader, baik itu diselingi dalam buffer vertex atau di tempat lain.
Memori yang ditujukan harus dalam status D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE. Perhatikan bahwa jika aplikasi ingin berbagi input buffer vertex antara perakit input grafis dan input build struktur akselerasi raytracing, aplikasi selalu dapat memasukkan sumber daya ke dalam kombinasi status baca secara bersamaan, misalnya D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Persyaratan
Persyaratan | Nilai |
---|---|
Header | d3d12.h |