Risorse affiancate del volume (Direct3D 12)

Le trame del volume (3D) possono essere usate come risorse affiancate, notando che la risoluzione dei riquadri è tridimensionale.

Panoramica

Le risorse affiancate separano un oggetto risorsa Direct3D dalla relativa memoria di backup (le risorse in passato avevano una relazione 1:1 con la memoria sottostante). Ciò consente un'ampia gamma di scenari interessanti, ad esempio lo streaming nei dati delle trame e il riutilizzo o la riduzione dell'utilizzo della memoria.

Le risorse con trama 2D affiancate sono supportate in Direct3D 11.2. Il supporto facoltativo per le trame affiancate 3D è disponibile per Direct3D 12 e Direct3D 11.3 (vedere D3D12_TILED_RESOURCES_TIER).

Le dimensioni delle risorse tipiche usate nella tiling sono 4 x 4 riquadri per trame 2D e 4 x 4 x 4 riquadri per trame 3D.

Bit/pixel (1 campione/pixel) Dimensioni del riquadro (pixel, w x h x d)
8 64x32x32
16 32x32x32
32 32x32x16
64 32x16x16
128 16x16x16
BC 1,4 128x64x16
BC 2,3,5,6,7 64x64x16

Si noti che i formati seguenti non sono supportati con le risorse affiancate: formati 96bpp, formati video, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.

Nei diagrammi seguenti il grigio scuro rappresenta i riquadri NULL.

Mapping predefinito delle risorse affiancate trama 3D (mip più dettagliato)

mapping predefinito di una risorsa tridimensionale affiancata

Mapping predefinito delle risorse affiancate trama 3D (mip più dettagliato secondo)

mostra il mip più dettagliato

Risorsa affiancata trama 3D (mip più dettagliata)

Il codice seguente configura una risorsa affiancata 3D nel mip più dettagliato.

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;

mip più dettagliato per una trama tridimensionale

Risorsa affiancata trama 3D (mip più dettagliata al secondo)

Il codice seguente configura una risorsa affiancata 3D e il secondo mip più dettagliato.

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;

mip più dettagliato per una trama tridimensionale

Risorsa affiancata trama 3D (riquadro singolo)

Il codice seguente configura una singola risorsa riquadro.

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;

una risorsa tridimensionale a riquadri singoli

Risorsa affiancata trama 3D (casella uniforme)

Il codice seguente configura una risorsa a riquadri della casella uniforme (si noti l'istruzione 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;

una scatola uniforme

API di risorse affiancate

Le stesse chiamate API vengono usate sia per le risorse affiancate 2D che per le risorse affiancate 3D.

Enumerazioni

Struct

Metodi