Sumber daya ubin volume (Direct3D 12)
Tekstur volume (3D) dapat digunakan sebagai sumber daya petak peta, mencatat bahwa resolusi petak peta bersifat tiga dimensi.
Gambaran Umum
Sumber daya ubin memisahkan objek sumber daya Direct3D dari memori cadangannya (sumber daya di masa lalu memiliki hubungan 1:1 dengan memori cadangannya). Ini memungkinkan berbagai skenario menarik seperti streaming dalam data tekstur dan menggunakan kembali atau mengurangi penggunaan memori.
Sumber daya ubin tekstur 2D didukung di Direct3D 11.2. Dukungan opsional untuk tekstur ubin 3D tersedia untuk Direct3D 12 dan Direct3D 11.3 (lihat D3D12_TILED_RESOURCES_TIER).
Dimensi sumber daya umum yang digunakan dalam petak peta adalah petak peta 4 x 4 untuk tekstur 2D, dan petak peta 4 x 4 x 4 untuk tekstur 3D.
Bit/piksel (1 sampel/piksel) | Dimensi petak peta (piksel, w x h x d) |
---|---|
8 | 64x32x32 |
16 | 32x32x32 |
32 | 32x32x16 |
64 | 32x16x16 |
128 | 16x16x16 |
SM 1,4 | 128x64x16 |
SM 2,3,5,6,7 | 64x64x16 |
Perhatikan format berikut ini tidak didukung dengan sumber daya ubin: format 96bpp, format video, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.
Dalam diagram di bawah ini, abu-abu gelap mewakili petak peta NULL.
- Pemetaan default Sumber Daya Ubin 3D Tekstur (mip paling rinci)
- Pemetaan default Sumber Daya Ubin 3D Tekstur (mip terperinci kedua)
- Sumber Daya Ubin 3D Tekstur (mip paling rinci)
- Sumber Daya Ubin 3D Tekstur (mip terperinci kedua)
- Sumber Daya Ubin 3D Tekstur (Petak Peta Tunggal)
- Sumber Daya Ubin 3D Tekstur (Kotak Seragam)
Pemetaan default sumber daya ubin 3D tekstur (mip paling rinci)
Pemetaan default sumber daya ubin 3D tekstur (mip kedua paling detail)
Sumber daya ubin 3D tekstur (mip paling rinci)
Kode berikut menyiapkan sumber daya ubin 3D pada mip yang paling rinci.
D3D12_TILED_RESOURCE_COORDINATE trCoord{};
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize{};
trSize.bUseBox = false;
trSize.NumTiles = 63;
Sumber daya ubin 3D tekstur (mip kedua paling detail)
Kode berikut menyiapkan sumber daya ubin 3D, dan mip kedua yang paling rinci.
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 1;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 6;
Sumber daya ubin 3D tekstur (petak peta tunggal)
Kode berikut menyiapkan sumber daya petak peta tunggal.
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 1;
trCoord.Z = 1;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
Sumber daya ubin 3D tekstur (kotak seragam)
Kode berikut menyiapkan sumber daya petak peta kotak seragam (perhatikan pernyataan trSize.bUseBox = true;) :
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 0;
trCoord.Y = 1;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
API sumber daya berjenjang
Panggilan API yang sama digunakan untuk sumber daya ubin 2D dan 3D.
Enum
- D3D12_TILED_RESOURCES_TIER : menentukan tingkat dukungan sumber daya ubin.
- D3D12_FORMAT_SUPPORT2 : digunakan untuk menguji dukungan sumber daya ubin.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : menentukan dukungan sumber daya ubin dalam sumber daya multi-pengambilan sampel.
- D3D12_TILE_COPY_FLAGS : menyimpan bendera untuk menyalin ke dan dari sumber daya berbintik dan buffer linier.
Struct
- D3D12_TILED_RESOURCE_COORDINATE : memegang referensi koordinat x, y, dan z, dan subresource. Perhatikan bahwa ada struktur pembantu: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : menentukan ukuran, dan jumlah petak peta, dari wilayah petak peta.
- D3D12_TILE_SHAPE : bentuk petak peta sebagai lebar, tinggi, dan kedalaman texel.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : memegang tingkat sumber daya petak peta yang didukung dan boolean, VolumeTiledResourcesSupported, menunjukkan apakah sumber daya ubin volume didukung.
Metode
- ID3D12Device::CheckFeatureSupport : digunakan untuk menentukan fitur apa, dan pada tingkat apa, didukung oleh perangkat keras saat ini.
- ID3D12GraphicsCommandList::CopyTiles : menyalin petak peta dari buffer ke sumber daya berjenjang atau sebaliknya.
- ID3D12CommandQueue::UpdateTileMappings : memperbarui pemetaan lokasi petak peta di sumber daya ubin ke lokasi memori dalam timbunan sumber daya.
- ID3D12CommandQueue::CopyTileMappings : menyalin pemetaan dari sumber daya ubin sumber ke sumber daya ubin tujuan.
- ID3D12Device::GetResourceTiling : mendapatkan info tentang bagaimana sumber daya ubin dipecah menjadi petak peta.