Ressources en mosaïques en volume (Direct3D 12)
Les textures de volume (3D) peuvent être utilisées en tant que ressources en mosaïques, en notant que la résolution de vignettes est tridimensionnelle.
Aperçu
Les ressources en mosaïques dissocient un objet de ressource Direct3D de sa mémoire de stockage (les ressources du passé ont eu une relation 1:1 avec leur mémoire de stockage). Cela permet de nombreux scénarios intéressants tels que la diffusion en continu dans les 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 classiques utilisées dans le mosaïque sont 4 x 4 vignettes pour les textures 2D et 4 x 4 mosaïques pour les textures 3D.
Bits/pixels (1 exemple/pixel) | Dimensions de vignette (pixels, 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 | 64 x 64 x 16 |
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ïque 3D texture (mip le plus détaillé)
- mappage par défaut des ressources en mosaïque 3D texture (deuxième mip plus détaillé)
- ressource en mosaïque 3D texture (mip le plus détaillé)
- ressource en mosaïque 3D texture (deuxième mip plus détaillée)
- ressource en mosaïque 3D texture (vignette unique)
- ressource en mosaïque 3D de texture (Uniform Box)
Mappage par défaut des ressources en mosaïques de texture 3D (mip le plus détaillé)
Mappage par défaut des ressources en mosaïques de texture 3D (mip second détaillé)
mip le plus détaillé
Ressource en mosaïque de texture 3D (mip le plus détaillé)
Le code suivant configure une ressource en mosaïque 3D au niveau du mip 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 de texture 3D (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 de texture 3D (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 en mosaïque de texture 3D (zone uniforme)
Le code suivant configure une ressource en mosaïque 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 : utilisé pour 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ïques dans une ressource à échantillonnage multiple.
- D3D12_TILE_COPY_FLAGS : contient des indicateurs pour la copie vers et à partir des ressources en mosaïques swizzled et des mémoires tampons linéaires.
Structs
- D3D12_TILED_RESOURCE_COORDINATE : contient la référence x, y et z co-ordiné et 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 mosaïque sous forme de largeur, de hauteur et de profondeur en texels.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : contient le niveau de ressource de vignette pris en charge et un niveau booléen, VolumeTiledResourcesSupported, indique si les ressources en mosaïques en volume sont prises en charge.
Méthode
- ID3D12Device ::CheckFeatureSupport : utilisé pour déterminer les fonctionnalités et à quel niveau, sont pris 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 vignettes dans les ressources en mosaïques aux 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.