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 d’une ressource 3 dimensions en mosaïque

Mappage par défaut des ressources en mosaïques 3D de texture (deuxième mip détaillé)

montre le deuxième mip le plus 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;

mip le plus détaillé pour une texture tridimensionnelle

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;

deuxième mip le plus détaillé pour une texture tridimensionnelle

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;

une ressource tridimensionnelle mono-mosaïque

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;

une boîte uniforme

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

Structures

Méthodes