Compartilhar via


Recursos em blocos de volume

Texturas de volume (3D) podem ser usadas como recursos em bloco, observando que a resolução de blocos é tridimensional.

  • Visão geral
  • APIs de recurso em bloco D3D11.3
  • tópicos relacionados

Visão geral

Os recursos em blocos separam um objeto de recurso D3D de sua memória de backup (os recursos no passado tinham uma relação 1:1 com a memória de backup). Isso permite uma variedade de cenários interessantes, como streaming em dados de textura e reutilização ou redução do uso de memória

Há suporte para recursos em bloco de textura 2D na D3D11.2. D3D12 e D3D11.3 adicionam suporte para texturas em bloco 3D.

As dimensões de recurso típicas usadas no bloco são blocos 4 x 4 para texturas 2D e 4 x 4 x 4 blocos para texturas 3D.

Bits/pixel (1 amostra/pixel) Dimensões de bloco (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 64x64x16

 

Observe que não há suporte para os seguintes formatos com recursos em bloco: formatos de 96bpp, formatos de vídeo, R1_UNORM, R8G8_B8G8_UNORM R8R8_G8B8_UNORM.

Nos diagramas abaixo de cinza escuro representa blocos NULL.

Mapeamento padrão de recurso em blocos de textura 3D (mip mais detalhado)

mapeamento padrão do mip mais detalhado

Mapeamento padrão de recurso em blocos de textura 3D (segundo mip mais detalhado)

mapeamento padrão da segunda de mip mais detalhada

Recurso em blocos 3D de textura (mip mais detalhado)

O código a seguir configura um recurso em bloco 3D no mip mais detalhado.

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;

mapeamento mais detalhado de um recurso em bloco 3d

Recurso em blocos 3D de textura (segundo mip mais detalhado)

O código a seguir configura um recurso em bloco 3D e o segundo mip mais detalhado:

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;

segundo mapeamento mais detalhado de um recurso em bloco 3d

Recurso em blocos 3D de textura (bloco único)

O código a seguir configura um recurso de bloco único:

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;

um único bloco

Recurso em blocos 3D de textura (caixa uniforme)

O código a seguir configura um recurso em bloco uniform box (observe a instrução 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;

uma caixa uniforme

APIs de recurso em bloco D3D11.3

As mesmas chamadas de API são usadas para recursos em blocos 2D e 3D:

Enumerações

Estruturas

Métodos

recursos do Direct3D 11.3