Compartilhar via


Recursos em blocos de volume (Direct3D 12)

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

Visão geral

Os recursos em blocos separam um objeto de recurso Direct3D 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 no Direct3D 11.2. O suporte opcional para texturas em bloco 3D está disponível para Direct3D 12 e Direct3D 11.3 (consulte D3D12_TILED_RESOURCES_TIER).

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, cinza escuro representa blocos NULL.

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

mapeamento padrão de um recurso tridimensional em bloco

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

mostra o segundo de mip mais detalhado

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

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

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 mais detalhado para uma textura tridimensional

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.

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;

segundo mip mais detalhado para uma textura tridimensional

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

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

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;

um recurso tridimensional de bloco único

Recurso em blocos 3D de textura (caixa uniforme)

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

uma caixa uniforme

APIs de recurso em bloco

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

Enumerações

Structs

Métodos

  • de associação de recursos