Ressources en mosaïque de volume (Direct3D 12)
Les textures de volume (3D) peuvent être utilisées comme ressources en mosaïques, notant que la résolution des vignettes est en trois dimensions.
Vue d’ensemble
Les ressources en mosaïques dissocient un objet de ressource Direct3D de sa mémoire de stockage (les ressources avaient auparavant une relation 1:1 avec leur mémoire de stockage). Cela permet de créer divers scénarios intéressants tels que la diffusion en continu de données de texture et la réutilisation ou la réduction de l’utilisation de la mémoire.
Les ressources en mosaïques de texture 2D sont prises en charge dans Direct3D 11.2. La prise en charge facultative des textures en mosaïques 3D est disponible pour Direct3D 12 et Direct3D 11.3 (reportez-vous à D3D12_TILED_RESOURCES_TIER).
Les dimensions de ressource typiques utilisées dans le carrelage sont 4 x 4 vignettes pour les textures 2D et 4 x 4 vignettes pour les textures 3D.
Bits/pixel (1 exemple/pixel) | Dimensions des vignettes (pixels, l 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 |
Notez que les formats suivants ne sont pas pris en charge avec les ressources en mosaïques : formats 96bpp, formats vidéo, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.
Dans les diagrammes ci-dessous, le gris foncé représente les vignettes NULL.
- Mappage par défaut des ressources en mosaïques 3D de texture (mip le plus détaillé)
- Mappage par défaut des ressources en mosaïques 3D de texture (deuxième mip le plus détaillé)
- Ressource mosaïque 3D de texture (mip le plus détaillé)
- Texture 3D Tiled Resource (deuxième mip le plus détaillé)
- Ressource mosaïque 3D de texture (vignette unique)
- Ressource mosaïque 3D de texture (zone uniforme)
Mappage par défaut des ressources en mosaïques 3D de texture (mip le plus détaillé)
Mappage par défaut des ressources en mosaïques 3D de texture (deuxième mip détaillé)
Ressource en mosaïque 3D de texture (mip le plus détaillé)
Le code suivant configure une ressource en mosaïque 3D au niveau le plus détaillé.
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;
Ressource en mosaïque 3D de texture (deuxième mip détaillé)
Le code suivant configure une ressource en mosaïque 3D et le deuxième mip le plus détaillé.
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;
Ressource en mosaïque 3D de texture (vignette unique)
Le code suivant configure une ressource de vignette unique.
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;
Ressource mosaïque 3D de texture (zone uniforme)
Le code suivant configure une ressource en mosaïque de zone uniforme (notez l’instruction 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 de ressources en mosaïque
Les mêmes appels d’API sont utilisés pour les ressources en mosaïque 2D et 3D.
Énumérations
- D3D12_TILED_RESOURCES_TIER : détermine le niveau de prise en charge des ressources en mosaïques.
- D3D12_FORMAT_SUPPORT2 : permet de tester la prise en charge des ressources en mosaïques.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : détermine la prise en charge des ressources en mosaïque dans une ressource multi-échantillonnage.
- D3D12_TILE_COPY_FLAGS : contient les indicateurs de copie vers et à partir de ressources en mosaïques swizzled et de mémoires tampons linéaires.
Structures
- D3D12_TILED_RESOURCE_COORDINATE : contient les références de coordination x, y et z et de sous-ressource. Notez qu’il existe une structure d’assistance : CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : spécifie la taille et le nombre de vignettes de la région en mosaïque.
- D3D12_TILE_SHAPE : forme de vignette en tant que largeur, hauteur et profondeur dans les texels.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : contient le niveau de niveau de ressources de vignette pris en charge et un booléen, VolumeTiledResourcesSupported, indique si les ressources en mosaïques de volume sont prises en charge.
Méthodes
- ID3D12Device::CheckFeatureSupport : utilisé pour déterminer quelles fonctionnalités, et à quel niveau, sont prises en charge par le matériel actuel.
- ID3D12GraphicsCommandList::CopyTiles : copie les vignettes de la mémoire tampon vers la ressource en mosaïque ou inversement.
- ID3D12CommandQueue::UpdateTileMappings : met à jour les mappages d’emplacements de vignette dans des ressources en mosaïques vers des emplacements de mémoire dans un tas de ressources.
- ID3D12CommandQueue::CopyTileMappings : copie les mappages d’une ressource en mosaïque source vers une ressource en mosaïque de destination.
- ID3D12Device::GetResourceTiling : obtient des informations sur la façon dont une ressource en mosaïque est divisée en vignettes.