Объемные плиточные ресурсы (Direct3D 12)
Объемные (трехмерные) текстуры можно использовать в качестве мозаичного ресурса, отметив, что разрешение плиток является трехмерным.
Общие сведения
Плитки ресурсов отделяют объект ресурсов Direct3D от резервной памяти (ресурсы в прошлом имели связь 1:1 с их резервной памятью). Это позволяет использовать различные интересные сценарии, такие как потоковая передача данных текстуры, повторное использование или сокращение использования памяти.
Ресурсы с плитками двухD-текстур поддерживаются в Direct3D 11.2. Для Direct3D 12 и Direct3D 11.3 доступна дополнительная поддержка текстур с трехмерными плитками (см . D3D12_TILED_RESOURCES_TIER).
Типичные размеры ресурсов, используемые при облицовке, — это 4 x 4 плитки для двухd-текстур и 4 x 4 плитки для трехмерных текстур.
Бит/пиксель (1 выборка/пиксель) | Размеры плиток (пиксели, w x h x d) |
---|---|
8 | 64x32x32 |
16 | 32x32x32 |
32 | 32x32x16 |
64 | 32x16x16 |
128 | 16x16x16 |
До н.э. 1,4 | 128x64x16 |
До н.э. 2,3,5,6,7 | 64x64x16 |
Обратите внимание, что для ресурсов с плитками не поддерживаются следующие форматы: форматы 96bpp, форматы видео, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM.
На приведенных ниже схемах темно-серый цвет представляет плитки NULL.
- Сопоставление по умолчанию ресурса текстуры 3D Tiled (наиболее подробный MIP)
- Сопоставление по умолчанию ресурса текстуры 3D Tiled (второй наиболее подробный MIP)
- Ресурс текстуры 3D Tiled (наиболее подробный MIP)
- Ресурс текстуры 3D Tiled (второй по детализации MIP)
- Ресурс текстуры с трехмерной плиткой (одна плитка)
- Ресурс текстуры с трехмерной плиткой (универсальное поле)
Сопоставление ресурсов текстуры по умолчанию с плитками (наиболее подробный MIP)
Сопоставление ресурсов текстуры по умолчанию с плитками (второй наиболее подробный MIP)
Ресурс текстуры с плиткой 3D (наиболее подробный MIP)
Следующий код настраивает ресурс с трехмерной плиткой на самом подробном MIP.
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;
Ресурс текстуры с плиткой 3D (второй по детализации MIP)
Следующий код настраивает ресурс с трехмерной плиткой и второй наиболее подробный MIP-файл.
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;
Ресурс текстуры с плиткой 3D (одна плитка)
Следующий код настраивает один ресурс плитки.
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;
Ресурс с трехмерной плиткой текстуры (универсальное поле)
В следующем коде настраивается ресурс с плиткой универсального поля (обратите внимание на инструкцию ). 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-интерфейсы ресурсов с плитками
Одни и те же вызовы API используются для двух- и трехмерных плиток ресурсов.
Перечисления
- D3D12_TILED_RESOURCES_TIER : определяет уровень поддержки мозаичного ресурса.
- D3D12_FORMAT_SUPPORT2 : используется для проверки поддержки мозаичного ресурса.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : определяет поддержку мозаичного ресурса в ресурсе с несколькими выборками.
- D3D12_TILE_COPY_FLAGS : содержит флаги для копирования в свернутые плитки ресурсов и линейные буферы и из нее.
Структуры
- D3D12_TILED_RESOURCE_COORDINATE : содержит координаты x, y и z, а также ссылку на подресурсы. Обратите внимание, что существует вспомогательная структура: CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : указывает размер и количество плиток в области плитки.
- D3D12_TILE_SHAPE : фигура плитки в виде ширины, высоты и глубины в текселях.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : содержит поддерживаемый уровень ресурсов плитки, а логическое значение VolumeTiledResourcesSupported указывает, поддерживаются ли ресурсы с плитками тома.
Методы
- ID3D12Device::CheckFeatureSupport : используется для определения функций и уровней, поддерживаемых текущим оборудованием.
- ID3D12GraphicsCommandList::CopyTiles : копирует плитки из буфера в ресурс с плиткой или наоборот.
- ID3D12CommandQueue::UpdateTileMappings : обновляет сопоставления расположений плиток в мозаичного ресурсах с расположениями памяти в куче ресурсов.
- ID3D12CommandQueue::CopyTileMappings : копирует сопоставления из исходного мозаичного ресурса в целевой ресурс с плиткой.
- ID3D12Device::GetResourceTiling : получает сведения о том, как ресурс с плиткой разбивается на плитки.