Udostępnij przez


Zasoby kafelkowe woluminu

Tekstury woluminu (3D) mogą być używane jako zasoby kafelkowe, zauważając, że rozdzielczość kafelka jest trójwymiarowa.

Przegląd

Zasoby kafelkowe oddzielają obiekt zasobu D3D od pamięci zapasowej (zasoby w przeszłości miały relację 1:1 z pamięcią zapasową). Umożliwia to korzystanie z różnych interesujących scenariuszy, takich jak przesyłanie strumieniowe w danych tekstury i ponowne używanie lub zmniejszenie użycia pamięci

Zasoby tekstury 2D są obsługiwane w D3D11.2. D3D12 i D3D11.3 dodają obsługę tekstur kafelków 3D.

Typowe wymiary zasobów używane w tilingu to 4 x 4 kafelki dla tekstur 2D i 4 x 4 x 4 kafelki dla tekstur 3D.

Bity/piksel (1 próbka/piksel) Wymiary kafelka (piksele, 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

 

Należy pamiętać, że następujące formaty nie są obsługiwane w przypadku zasobów kafelkowych: formaty 96bpp, formaty wideo, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.

Na poniższych diagramach ciemnoszary reprezentuje kafelki NULL.

Mapowanie domyślne zasobu kafelka tekstury 3D (najbardziej szczegółowe mip)

domyślne mapowanie najbardziej szczegółowych mip

Mapowanie domyślne zasobu kafelka tekstury 3D (drugi najbardziej szczegółowy mip)

domyślne mapowanie drugiego najbardziej szczegółowego mip

Zasób kafelkowy tekstury 3D (najbardziej szczegółowy mip)

Poniższy kod konfiguruje zasób kafelkowy 3D w najbardziej szczegółowych mip.

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;

najbardziej szczegółowe mapowanie zasobu kafelka 3d

Zasób kafelkowy tekstury 3D (drugi najbardziej szczegółowy mip)

Poniższy kod konfiguruje zasób kafelkowy 3D i drugi najbardziej szczegółowy mip:

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;

drugie najbardziej szczegółowe mapowanie zasobu kafelka 3d

Zasób kafelkowy tekstury 3D (pojedynczy kafelek)

Poniższy kod konfiguruje zasób pojedynczego kafelka:

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;

pojedynczego kafelka

Zasób kafelkowy tekstury 3D (jednolite pudełko)

Poniższy kod konfiguruje zasób z kafelkami Uniform Box (zwróć uwagę na instrukcję 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;

jednolitą skrzynkę

Interfejsy API zasobów kafelków D3D11.3

Te same wywołania interfejsu API są używane zarówno dla zasobów kafelków 2D, jak i 3D:

Wyliczenia

Struktur

Metody

funkcje Direct3D 11.3