Gekachelte Volumeressourcen (Direct3D 12)
Volumentexturen (3D) können als kachelbasierte Ressourcen verwendet werden. Dabei wird darauf hinzuweisen, dass die Kachelauflösung dreidimensional ist.
Übersicht
Gekachelte Ressourcen entkoppeln ein Direct3D-Ressourcenobjekt vom Sicherungsspeicher (ressourcen in der Vergangenheit hatten eine 1:1-Beziehung mit ihrem Sicherungsspeicher). Dies ermöglicht eine Vielzahl interessanter Szenarien, z. B. das Streamen von Texturdaten und das Wiederverwenden oder Reduzieren der Speicherauslastung.
2D-Texturkachelressourcen werden in Direct3D 11.2 unterstützt. Optionale Unterstützung für 3D-kachelte Texturen ist für Direct3D 12 und Direct3D 11.3 verfügbar (siehe D3D12_TILED_RESOURCES_TIER).
Die typischen Ressourcendimensionen, die beim Kacheln verwendet werden, sind 4 x 4 Kacheln für 2D-Texturen und 4 x 4 x 4 Kacheln für 3D-Texturen.
| Bits/Pixel (1 Stichprobe/Pixel) | Kacheldimensionen (Pixel, w x h x d) |
|---|---|
| 8 | 64 x 32 x 32 |
| 16 | 32x32x32 |
| 32 | 32x32x16 |
| 64 | 32x16x16 |
| 128 | 16x16x16 |
| BC 1,4 | 128 x 64 x 16 |
| BC 2,3,5,6,7 | 64 x 64 x 16 |
Beachten Sie, dass die folgenden Formate für gekachelte Ressourcen nicht unterstützt werden: 96bpp-Formate, Videoformate, R1_UNORM, R8G8_B8G8_UNORM , R8R8_G8B8_UNORM.
In den folgenden Diagrammen stellt Dunkelgrau NULL-Kacheln dar.
- Standardmäßige Zuordnung der gekachelten Textur-3D-Ressource (ausführlichstes MIP)
- Standardmäßige Zuordnung der kachelten Textur-3D-Ressource (am weitesten detaillierter Mip)
- Textur-3D-Kachelressource (ausführlichste mip)
- Texture 3D Tiled Resource (second most detailed mip)
- Textur-3D-Kachelressource (einzelne Kachel)
- Textur-3D-Kachelressource (Uniform Box)
Standardmäßige Zuordnung der 3D-Kachelressource für Texturen (ausführlichstes MIP)

Standardmäßige Zuordnung der 3D-Kachelressource für Texturen (am weitesten detaillierter Mip)

Textur-3D-Kachelressource (ausführlichste mip)
Mit dem folgenden Code wird eine 3D-Kachelressource mit dem ausführlichsten Mip eingerichtet.
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;

Texture 3D tiled resource (second-most-detailed mip)
Mit dem folgenden Code wird eine 3D-kachelte Ressource und der zweite ausführlichste Mip eingerichtet.
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;

Textur-3D-Kachelressource (einzelne Kachel)
Mit dem folgenden Code wird eine einzelne Kachelressource eingerichtet.
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;

Textur-3D-Kachelressource (einheitliches Feld)
Der folgende Code richtet eine gekachelte Ressource mit einheitlichem Feld ein (beachten Sie die -Anweisung. 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;

Gekachelte Ressourcen-APIs
Die gleichen API-Aufrufe werden sowohl für 2D- als auch für 3D-kachelte Ressourcen verwendet.
Enumerationen
- D3D12_TILED_RESOURCES_TIER : Bestimmt die Ebene der Unterstützung für gekachelte Ressourcen.
- D3D12_FORMAT_SUPPORT2 : wird verwendet, um die Unterstützung von gekachelten Ressourcen zu testen.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : Bestimmt die Unterstützung von gekachelten Ressourcen in einer Ressource mit mehreren Stichproben.
- D3D12_TILE_COPY_FLAGS : enthält Flags zum Kopieren in und aus gezwappten kachelten Ressourcen und linearen Puffern.
Strukturen
- D3D12_TILED_RESOURCE_COORDINATE : enthält die x-, y- und z-Co-Direktions- und Unterressourcenreferenz. Beachten Sie, dass eine Hilfsstruktur vorhanden ist: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : Gibt die Größe und Anzahl der Kacheln des gekachelten Bereichs an.
- D3D12_TILE_SHAPE: die Kachelform als Breite, Höhe und Tiefe in Texel.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : enthält die unterstützte Ebene der Kachelressourcenebene und den booleschen Wert VolumeTiledResourcesSupported, der angibt, ob volumekachelte Ressourcen unterstützt werden.
Methoden
- ID3D12Device::CheckFeatureSupport: Wird verwendet, um zu bestimmen, welche Features und auf welchem Tarif von der aktuellen Hardware unterstützt werden.
- ID3D12GraphicsCommandList::CopyTiles: Kopiert Kacheln aus dem Puffer in eine gekachelte Ressource oder umgekehrt.
- ID3D12CommandQueue::UpdateTileMappings: Aktualisiert Zuordnungen von Kachelspeicherorten in gekachelten Ressourcen zu Speicherspeicherorten in einem Ressourcenheap.
- ID3D12CommandQueue::CopyTileMappings: Kopiert Zuordnungen aus einer quellkachelten Ressource in eine zielkachelte Ressource.
- ID3D12Device::GetResourceTiling: Ruft Informationen dazu ab, wie eine gekachelte Ressource in Kacheln aufgeteilt wird.