Freigeben über


Volume Tiled Resources

Volumentexturen (3D) können als nebeneinander angeordnete Ressourcen verwendet werden, wobei die Kachelauflösung dreidimensional ist.

Überblick

Tiled resources decouple a D3D Resource object from its backing memory (resources in the past had a 1:1 relationship with their backing memory). Dies ermöglicht eine Vielzahl interessanter Szenarien, z. B. das Streamen in Texturdaten und das Erneute Verwenden oder Reduzieren der Speicherauslastung.

2D-Texturkachelressourcen werden in D3D11.2 unterstützt. D3D12 und D3D11.3 fügen Unterstützung für 3D-Kacheltexturen hinzu.

Die typischen Ressourcenabmessungen, die bei der Kachelung verwendet werden, sind 4 x 4 Kacheln für 2D-Texturen und 4 x 4 Kacheln für 3D-Texturen.

Bits/Pixel (1 Beispiel/Pixel) Kachelabmessungen (Pixel, w x h x d)
8 64 x 32 x 32
16 32 x 32 x 32
32 32 x 32 x 16
64 32 x 16 x 16
128 16 x 16 x 16
BC 1,4 128x64x16
BC 2,3,5,6,7 64x64x16

 

Beachten Sie, dass die folgenden Formate bei nebeneinander angeordneten Ressourcen nicht unterstützt werden: 96bpp-Formate, Videoformate, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.

In den Diagrammen unter Dunkelgrau sind NULL-Kacheln dargestellt.

Standardzuordnung "Textur 3D Tiled Resource" (detaillierteste mip)

Standardzuordnung der detaillierten mip-

Standardzuordnung für Textur 3D-Tiled-Ressource (zweite detaillierte mip)

Standardzuordnung der zweit detaillierten Mip-

Textur 3D Tiled Resource (detaillierteste mip)

Der folgende Code richtet eine 3D-Nebeneinanderressource am detailliertesten Mip ein.

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 63;

detaillierteste Zuordnung einer 3D-Tiled-Ressource

Textur 3D Tiled Resource (zweite detaillierte mip)

Der folgende Code richtet eine 3D-nebeneinander angeordnete Ressource und den zweiten detaillierten Mip ein:

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 1;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 6;

zweit detaillierten Zuordnung einer 3D-Tiled-Ressource

Textur-3D-Nebeneinanderressource (einzelne Kachel)

Der folgende Code richtet eine Einzelne Kachelressource ein:

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 1;
trCoord.Z = 1;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;

einer einzelnen Kachel

Textur 3D-Nebeneinanderressource (Uniform Box)

Der folgende Code richtet eine uniform Box-Nebeneinanderressource ein (beachten Sie die Anweisung trSize.bUseBox = true;) :

D3D11_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 0;
trCoord.Y = 1;
trCoord.Z = 0;
trCoord.Subresource = 0;

D3D11_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;

einer einheitlichen Box

D3D11.3 Tiled Resource APIs

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

Enumerationen

Strukturen

Methodik

Direct3D 11.3-Features