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 della risorsa affiancata trama 3D (secondo mip più dettagliato)
- Risorsa affiancata trama 3D (mip più dettagliata)
- Risorsa affiancata trama 3D (secondo mip più dettagliato)
- Risorsa affiancata trama 3D (riquadro singolo)
- Risorsa affiancata trama 3D (casella uniforme)
Mapping predefinito delle risorse affiancate trama 3D (mip più dettagliato)
Mapping predefinito delle risorse affiancate trama 3D (mip più dettagliato secondo)
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;
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;
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;
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;
API di risorse affiancate
Le stesse chiamate API vengono usate sia per le risorse affiancate 2D che per le risorse affiancate 3D.
Enumerazioni
- D3D12_TILED_RESOURCES_TIER : determina il livello di supporto delle risorse affiancate.
- D3D12_FORMAT_SUPPORT2 : usato per testare il supporto delle risorse affiancate.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : determina il supporto delle risorse affiancate in una risorsa di campionamento multipla.
- D3D12_TILE_COPY_FLAGS : contiene i flag per la copia da e verso risorse affiancate swizzled e buffer lineari.
Struct
- D3D12_TILED_RESOURCE_COORDINATE : contiene il riferimento alla coordinata x, y e z e alla sottorisorsa. Si noti che esiste una struttura helper: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : specifica le dimensioni e il numero di riquadri dell'area affiancata.
- D3D12_TILE_SHAPE : forma del riquadro come larghezza, altezza e profondità nei texel.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : contiene il livello di risorsa riquadro supportato e un valore booleano , VolumeTiledResourcesSupported, indica se le risorse affiancate del volume sono supportate.
Metodi
- ID3D12Device::CheckFeatureSupport : usato per determinare quali funzionalità e a quale livello sono supportate dall'hardware corrente.
- ID3D12GraphicsCommandList::CopyTiles : copia i riquadri dal buffer alla risorsa affiancata o viceversa.
- ID3D12CommandQueue::UpdateTileMappings : aggiorna i mapping dei percorsi dei riquadri nelle risorse affiancate ai percorsi di memoria in un heap delle risorse.
- ID3D12CommandQueue::CopyTileMappings : copia i mapping da una risorsa affiancata di origine a una risorsa affiancata di destinazione.
- ID3D12Device::GetResourceTiling : ottiene informazioni sul modo in cui una risorsa affiancata viene suddivisa in riquadri.