Partilhar via


Recursos lado a lado de volume (Direct3D 12)

As texturas de volume (3D) podem ser usadas como recursos de mosaico, observando que a resolução do bloco é tridimensional.

Visão geral

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

Os recursos lado a lado de textura 2D são suportados no Direct3D 11.2. O suporte opcional para texturas lado a lado 3D está disponível para Direct3D 12 e Direct3D 11.3 (consulte D3D12_TILED_RESOURCES_TIER).

As dimensões típicas de recursos usadas em mosaicos são 4 x 4 telhas para texturas 2D e 4 x 4 x 4 telhas para texturas 3D.

Bits/pixel (1 amostra/pixel) Dimensões do mosaico (píxeis, 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 os seguintes formatos não são suportados com recursos lado a lado: formatos 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 recursos lado a lado 3D de textura (mip mais detalhado)

mapeamento padrão de um recurso 3-dimensional lado a lado

Mapeamento padrão de recursos lado a lado 3D de textura (segundo mip mais detalhado)

mostra o segundo de MIP mais detalhado

Recurso lado a lado 3D de textura (mip mais detalhado)

O código a seguir configura um recurso lado a lado 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 lado a lado 3D de textura (segundo mip mais detalhado)

O código a seguir configura um recurso lado a lado 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 lado a lado 3D de textura (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 telha única

Recurso lado a lado 3D de textura (caixa uniforme)

O código a seguir configura um recurso lado a lado 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 recursos lado a lado

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

Enums

Estruturas

Metodologia

  • de vinculação de recursos