Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Volumentexturen (3D) können als nebeneinander angeordnete Ressourcen verwendet werden, wobei die Kachelauflösung dreidimensional ist.
Überblick
Tiled resources decouple a Direct3D resource object from its backing memory (resources in the past had a 1:1 relationship with their backing memory). Dies ermöglicht eine Vielzahl interessanter Szenarien, z. B. das Streamen in Texturdaten und das Erneute Verwenden oder Reduzieren der Speicherauslastung.
2D-Texturkachelressourcen werden in Direct3D 11.2 unterstützt. Optionale Unterstützung für 3D-Kacheltexturen ist für Direct3D 12 und Direct3D 11.3 verfügbar (siehe D3D12_TILED_RESOURCES_TIER).
Die typischen Ressourcenabmessungen, die bei der Kachelung verwendet werden, sind 4 x 4 Kacheln für 2D-Texturen und 4 x 4 Kacheln für 3D-Texturen.
| Bits/Pixel (1 Beispiel/Pixel) | Kachelabmessungen (Pixel, w x h x d) |
|---|---|
| 8 | 64 x 32 x 32 |
| 16 | 32 x 32 x 32 |
| 32 | 32 x 32 x 16 |
| 64 | 32 x 16 x 16 |
| 128 | 16 x 16 x 16 |
| BC 1,4 | 128x64x16 |
| BC 2,3,5,6,7 | 64x64x16 |
Beachten Sie, dass die folgenden Formate bei nebeneinander angeordneten Ressourcen nicht unterstützt werden: 96bpp-Formate, Videoformate, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.
In den nachstehenden Diagrammen stellt Dunkelgrau NULL-Kacheln dar.
- Textur 3D Tiled Resource Standardzuordnung (detaillierteste mip)
- Textur 3D Tiled Resource Standardzuordnung (zweite detaillierte mip)
- Textur 3D Tiled Resource (detaillierteste mip)
- Textur 3D Tiled Resource (second detailed mip)
- Textur-3D-Nebeneinanderressource (einzelne Kachel)
- Textur 3D Tiled Resource (Uniform Box)
Standardzuordnung für Textur 3D-Ressourcen (detaillierteste mip)
Standardzuordnung der texturbasierten 3D-Ressource (second-most-detailed mip)
Textur-3D-Kachelressource (detaillierteste mip)
Der folgende Code richtet eine 3D-Nebeneinanderressource am detailliertesten Mip ein.
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;
Textur-3D-Kachelressource (second-most-detailed mip)
Der folgende Code richtet eine 3D-Tiled-Ressource und den zweiten detaillierten Mip ein.
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;
Textur-3D-Kachelressource (einzelne Kachel)
Der folgende Code richtet eine einzelne Kachelressource ein.
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;
Textur-3D-Nebeneinanderressource (einheitliches Feld)
Der folgende Code richtet eine einheitliche Kastenressource ein (beachten Sie die Anweisung 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;
Nebeneinander angeordnete Ressourcen-APIs
Die gleichen API-Aufrufe werden sowohl für 2D- als auch für 3D-Ressourcen verwendet.
Enumerationen
- D3D12_TILED_RESOURCES_TIER: bestimmt die Ebene der Unterstützung von nebeneinander angeordneten Ressourcen.
- D3D12_FORMAT_SUPPORT2: Wird verwendet, um die Unterstützung von nebeneinander angeordneten Ressourcen zu testen.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS: bestimmt die Unterstützung von nebeneinander angeordneten Ressourcen in einer Multisamplingressource.
- D3D12_TILE_COPY_FLAGS: Enthält Flags zum Kopieren in und aus geschwwommenen nebeneinander angeordneten Ressourcen und linearen Puffern.
Strukturen
- D3D12_TILED_RESOURCE_COORDINATE: enthält den X-, Y- und Z-Koordinaten- und Unterressourcenverweis. Beachten Sie, dass es eine Hilfsstruktur gibt: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE: Gibt die Größe und Anzahl der Kacheln des nebeneinander angeordneten Bereichs an.
- D3D12_TILE_SHAPE: die Kachelform als Breite, Höhe und Tiefe in Texeln.
- D3D12_FEATURE_DATA_D3D12_OPTIONS: enthält die unterstützte Kachelressourcenebene und einen booleschen, VolumeTiledResourcesSupported-, gibt an, ob Volumekachelressourcen unterstützt werden.
Methodik
- ID3D12Device::CheckFeatureSupport : wird verwendet, um zu bestimmen, welche Features und auf welcher Ebene von der aktuellen Hardware unterstützt werden.
- ID3D12GraphicsCommandList::CopyTiles: kopiert Kacheln von Puffer in nebeneinander angeordnete Ressource oder umgekehrt.
- ID3D12CommandQueue::UpdateTileMappings: Aktualisiert Zuordnungen von Kachelspeicherorten in nebeneinander angeordneten Ressourcen zu Speicherspeicherorten in einem Ressourcenhap.
- ID3D12CommandQueue::CopyTileMappings: Kopiert Zuordnungen aus einer quellaufgekachelten Ressource in eine zielkachelte Ressource.
- ID3D12Device::GetResourceTiling : Ruft Informationen dazu ab, wie eine nebeneinander angeordnete Ressource in Kacheln unterteilt wird.