Ressources en mosaïque de volume
Les textures de volume (3D) peuvent être utilisées comme ressources en mosaïques, en notant que la résolution des vignettes est tridimensionnelle.
Les ressources en mosaïque dissocient un objet Resource D3D de sa mémoire de stockage (les ressources auparavant avaient une relation 1:1 avec leur mémoire de stockage). Cela permet de prendre en charge une variété de 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 D3D11.2. D3D12 et D3D11.3 prennent en charge les textures en mosaïque 3D.
Les dimensions de ressource typiques utilisées dans le mosaïque sont 4 vignettes x 4 pour les textures 2D et 4 x 4 vignettes pour les textures 3D.
Bits/pixel (1 échantillon/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ïque : 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 texture 3D (mip le plus détaillé)
- Mappage par défaut des ressources en mosaïques texture 3D (deuxième mip le plus détaillé)
- Ressource en mosaïque texture 3D (mip le plus détaillé)
- Ressource en mosaïque 3D de texture (deuxième mip le plus détaillé)
- Ressource en mosaïque Texture 3D (vignette unique)
- Ressource en mosaïque 3D de texture (zone uniforme)
Le code suivant configure une ressource en mosaïque 3D au niveau le plus détaillé.
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;
Le code suivant configure une ressource en mosaïque 3D et le deuxième mip le plus détaillé :
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;
Le code suivant configure une ressource à vignette unique :
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;
Le code suivant configure une ressource en mosaïque Uniform Box (notez l’instruction 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;
Les mêmes appels d’API sont utilisés pour les ressources 2D et 3D en mosaïque :
Énumérations
- D3D11_TILED_RESOURCES_TIER : détermine le niveau de prise en charge des ressources en mosaïques.
- D3D11_FORMAT_SUPPORT2 : permet de tester la prise en charge des ressources en mosaïques.
- D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG : détermine la prise en charge des ressources en mosaïques dans une ressource à échantillonnage multiple.
- D3D11_TILE_COPY_FLAGS : contient des indicateurs pour la copie vers et à partir de ressources en mosaïques et de mémoires tampons linéaires.
Structures
- D3D11_TILED_RESOURCE_COORDINATE : contient les références de coordination x, y et z et de sous-ressources. Notez qu’il existe une classe d’assistance : CD3D11_TILED_RESOURCE_COORDINATE.
- D3D11_TILE_REGION_SIZE : spécifie la taille et le nombre de vignettes de la région en mosaïque.
- D3D11_TILE_SHAPE : forme de la vignette sous forme de largeur, de hauteur et de profondeur dans les texels.
- D3D11_FEATURE_DATA_D3D11_OPTIONS1 : contient le niveau de ressource de vignette pris en charge.
Méthodes
- ID3D11Device::CheckFeatureSupport : utilisé pour déterminer quelles fonctionnalités, et à quel niveau, sont prises en charge par le matériel actuel.
- ID3D11DeviceContext2::CopyTiles : copie les vignettes de la mémoire tampon vers la ressource en mosaïque ou vice versa.
- ID3D11DeviceContext2::UpdateTileMappings : met à jour les mappages d’emplacements de vignettes dans les ressources en mosaïques vers des emplacements de mémoire dans un pool de vignettes.
- ID3D11DeviceContext2::CopyTileMappings : copie les mappages d’une ressource en mosaïque source vers une ressource en mosaïque de destination.
- ID3D11DeviceContext2::GetResourceTiling : obtient des informations sur la façon dont une ressource en mosaïque est divisée en vignettes.