Recursos en mosaico de volumen (Direct3D 12)
Las texturas de volumen (3D) se pueden usar como recursos en mosaico, teniendo en cuenta que la resolución de iconos es tridimensional.
Información general
Los recursos en mosaico desacoplan un objeto de recurso de Direct3D de su memoria de respaldo (los recursos en el pasado tenían una relación de 1:1 con su memoria de respaldo). Esto permite una variedad de escenarios interesantes, como el streaming en datos de textura y la reutilización o reducción del uso de memoria.
Los recursos en mosaico de textura 2D se admiten en Direct3D 11.2. La compatibilidad opcional con texturas en mosaico 3D está disponible para Direct3D 12 y Direct3D 11.3 (consulte D3D12_TILED_RESOURCES_TIER).
Las dimensiones de recursos típicas usadas en mosaicos son 4 x 4 mosaicos para texturas 2D y 4 x 4 x 4 mosaicos para texturas 3D.
Bits/píxel (1 muestra/píxel) | Dimensiones de mosaico (píxeles, 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 |
Tenga en cuenta que no se admiten los siguientes formatos con recursos en mosaico: formatos de 96bpp, formatos de vídeo, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.
En los diagramas siguientes, el gris oscuro representa iconos NULL.
- Asignación predeterminada de recursos en mosaico de textura 3D (mip más detallada)
- Asignación predeterminada de recursos en mosaico de textura 3D (segundo mip más detallado)
- Recurso en mosaico de textura 3D (mip más detallado)
- Recurso en mosaico de textura 3D (segundo mip más detallado)
- Recurso en mosaico de textura 3D (icono único)
- Recurso en mosaico de textura 3D (cuadro uniforme)
Asignación predeterminada de recursos en mosaico de textura 3D (mip más detallada)
Asignación predeterminada de recursos en mosaico de textura 3D (segundo mip más detallado)
Recurso en mosaico de textura 3D (mip más detallado)
El código siguiente configura un recurso en mosaico 3D en el mip más detallado.
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;
Recurso en mosaico 3D de textura (segundo mip más detallado)
El código siguiente configura un recurso en mosaico 3D y el segundo mip más detallado.
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;
Recurso en mosaico de textura 3D (icono único)
El código siguiente configura un único recurso de icono.
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;
Recurso en mosaico de textura 3D (cuadro uniforme)
El código siguiente configura un recurso en mosaico de cuadro uniforme (tenga en cuenta la instrucción . 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;
API de recursos en mosaico
Las mismas llamadas API se usan para los recursos en mosaico 2D y 3D.
Enumeraciones
- D3D12_TILED_RESOURCES_TIER : determina el nivel de compatibilidad con recursos en mosaico.
- D3D12_FORMAT_SUPPORT2 : se usa para probar la compatibilidad con recursos en mosaico.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : determina la compatibilidad de recursos en mosaico en un recurso de muestreo múltiple.
- D3D12_TILE_COPY_FLAGS : contiene marcas para copiar hacia y desde recursos en mosaico y búferes lineales.
Estructuras
- D3D12_TILED_RESOURCE_COORDINATE : contiene la coordenada x, y y z y la referencia de subrecurso. Tenga en cuenta que hay una estructura auxiliar: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : especifica el tamaño y el número de iconos de la región en mosaico.
- D3D12_TILE_SHAPE : la forma de mosaico como ancho, alto y profundidad en elementos de textura.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : contiene el nivel de recurso de icono admitido y un valor booleano, VolumeTiledResourcesSupported, que indica si se admiten recursos en mosaico de volumen.
Métodos
- ID3D12Device::CheckFeatureSupport : se usa para determinar qué características y en qué nivel son compatibles con el hardware actual.
- ID3D12GraphicsCommandList::CopyTiles : copia iconos del búfer en un recurso en mosaico o viceversa.
- ID3D12CommandQueue::UpdateTileMappings : actualiza las asignaciones de ubicaciones de iconos en recursos en mosaico a ubicaciones de memoria en un montón de recursos.
- ID3D12CommandQueue::CopyTileMappings : copia las asignaciones de un recurso en mosaico de origen en un recurso en mosaico de destino.
- ID3D12Device::GetResourceTiling : obtiene información sobre cómo se divide un recurso en mosaico.