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 3D-Kachelressource für Texturen (ausführlichstes MIP)

Standardzuordnung einer gekachelten dreidimensionalen Ressource

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

zeigt den zweitdeweiterten Mip an.

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;

Ausführlichste mip-Struktur für eine dreidimensionale Textur

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;

das zweitdeweiterte Mip für eine dreidimensionale Textur

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;

eine einkachelte dreidimensionale Ressource

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;

ein einheitliches Feld

Gekachelte Ressourcen-APIs

Die gleichen API-Aufrufe werden sowohl für 2D- als auch für 3D-kachelte Ressourcen verwendet.

Enumerationen

Strukturen

Methoden