Volume Tiled Resources
Volumentexturen (3D) können als nebeneinander angeordnete Ressourcen verwendet werden, wobei die Kachelauflösung dreidimensional ist.
Überblick
Tiled resources decouple a D3D 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 D3D11.2 unterstützt. D3D12 und D3D11.3 fügen Unterstützung für 3D-Kacheltexturen hinzu.
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 Diagrammen unter Dunkelgrau sind NULL-Kacheln dargestellt.
- 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 "Textur 3D Tiled Resource" (detaillierteste mip)
Standardzuordnung für Textur 3D-Tiled-Ressource (zweite detaillierte mip)
Textur 3D Tiled Resource (detaillierteste mip)
Der folgende Code richtet eine 3D-Nebeneinanderressource am detailliertesten Mip ein.
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;
Textur 3D Tiled Resource (zweite detaillierte mip)
Der folgende Code richtet eine 3D-nebeneinander angeordnete Ressource und den zweiten detaillierten Mip ein:
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;
Textur-3D-Nebeneinanderressource (einzelne Kachel)
Der folgende Code richtet eine Einzelne Kachelressource ein:
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;
Textur 3D-Nebeneinanderressource (Uniform Box)
Der folgende Code richtet eine uniform Box-Nebeneinanderressource ein (beachten Sie die Anweisung 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;
D3D11.3 Tiled Resource APIs
Die gleichen API-Aufrufe werden sowohl für 2D- als auch für 3D-Ressourcen verwendet:
Enumerationen
- D3D11_TILED_RESOURCES_TIER: bestimmt die Ebene der unterstützung von nebeneinander angeordneten Ressourcen.
- D3D11_FORMAT_SUPPORT2: wird verwendet, um die Unterstützung von nebeneinander angeordneten Ressourcen zu testen.
- D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG: bestimmt die Unterstützung von nebeneinander angeordneten Ressourcen in einer Multisamplingressource.
- D3D11_TILE_COPY_FLAGS: Enthält Flags zum Kopieren in und aus geschwörten nebeneinander angeordneten Ressourcen und linearen Puffern.
Strukturen
- D3D11_TILED_RESOURCE_COORDINATE: enthält den X-, Y- und Z-Koordinaten- und Unterressourcenverweis. Beachten Sie, dass es eine Hilfsklasse gibt: CD3D11_TILED_RESOURCE_COORDINATE.
- D3D11_TILE_REGION_SIZE: Gibt die Größe und Anzahl der Kacheln des nebeneinander angeordneten Bereichs an.
- D3D11_TILE_SHAPE: die Kachelform als Breite, Höhe und Tiefe in Texeln.
- D3D11_FEATURE_DATA_D3D11_OPTIONS1: enthält die unterstützte Ebene der Kachelressourcenebene.
Methodik
- ID3D11Device::CheckFeatureSupport : wird verwendet, um zu bestimmen, welche Features und auf welcher Ebene von der aktuellen Hardware unterstützt werden.
- ID3D11DeviceContext2::CopyTiles: kopiert Kacheln aus dem Puffer in eine nebeneinander angeordnete Ressource oder umgekehrt.
- ID3D11DeviceContext2::UpdateTileMappings: aktualisiert Zuordnungen von Kachelspeicherorten in nebeneinander angeordneten Ressourcen zu Speicherspeicherorten in einem Kachelpool.
- ID3D11DeviceContext2::CopyTileMappings: kopiert Zuordnungen aus einer quellaufgeräumten Ressource in eine zielgekachelte Ressource.
- ID3D11DeviceContext2::GetResourceTiling: Ruft Informationen dazu ab, wie eine nebeneinander angeordnete Ressource in Kacheln unterteilt wird.
Verwandte Themen