Объемные плиточные ресурсы
Объемные (трехмерные) текстуры можно использовать в качестве мозаичного ресурса, отметив, что разрешение плиток является трехмерным.
Общие сведения
Плитка ресурсов отделяет объект D3D Resource от его резервной памяти (ресурсы в прошлом имели связь 1:1 с их резервной памятью). Это позволяет выполнять различные интересные сценарии, такие как потоковая передача данных текстуры, повторное использование или сокращение использования памяти.
В D3D11.2 поддерживаются ресурсы с плитками двухd-текстур. В D3D12 и D3D11.3 добавлена поддержка трехмерных текстур с плитками.
Типичные размеры ресурсов, используемые при облицовке, — это 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)
- Ресурс текстуры с трехмерной плиткой (одна плитка)
- Ресурс текстуры с трехмерной плиткой (универсальное поле)
Сопоставление по умолчанию ресурса текстуры 3D Tiled (наиболее подробный MIP)
Сопоставление по умолчанию ресурса текстуры 3D Tiled (второй наиболее подробный MIP)
Ресурс текстуры 3D Tiled (наиболее подробный MIP)
Следующий код настраивает ресурс с трехмерной плиткой на самом подробном MIP.
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;
Ресурс текстуры 3D Tiled (второй по детализации MIP)
Следующий код настраивает ресурс с трехмерной плиткой и второй наиболее подробный MIP:
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;
Ресурс текстуры с трехмерной плиткой (одна плитка)
Следующий код настраивает ресурс "Одна плитка":
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;
Ресурс текстуры с трехмерной плиткой (универсальное поле)
Следующий код настраивает ресурс с плиткой Uniform Box (обратите внимание на инструкцию ). 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;
API-интерфейсы ресурсов D3D11.3 с плитками
Одни и те же вызовы API используются для двух- и трехмерных плиток ресурсов:
Перечисления
- D3D11_TILED_RESOURCES_TIER : определяет уровень поддержки мозаичного ресурса.
- D3D11_FORMAT_SUPPORT2 : используется для проверки поддержки мозаичного ресурса.
- D3D11_CHECK_MULTISAMPLE_QUALITY_LEVELS_FLAG : определяет поддержку мозаичного ресурса в ресурсе с несколькими выборками.
- D3D11_TILE_COPY_FLAGS : содержит флаги для копирования в свернутые фрагментированные ресурсы и линейные буферы и из нее.
Структуры
- D3D11_TILED_RESOURCE_COORDINATE : содержит координаты x, y и z, а также ссылку на подресурс. Обратите внимание, что существует вспомогательный класс: CD3D11_TILED_RESOURCE_COORDINATE.
- D3D11_TILE_REGION_SIZE : указывает размер и количество плиток в области плитки.
- D3D11_TILE_SHAPE : фигура плитки в виде ширины, высоты и глубины в текселях.
- D3D11_FEATURE_DATA_D3D11_OPTIONS1: содержит поддерживаемый уровень ресурсов плитки.
Методы
- ID3D11Device::CheckFeatureSupport : используется для определения функций и уровней, поддерживаемых текущим оборудованием.
- ID3D11DeviceContext2::CopyTiles : копирует плитки из буфера в ресурс с плиткой или наоборот.
- ID3D11DeviceContext2::UpdateTileMappings : обновляет сопоставления расположений плиток в мозаичного ресурсах с расположениями памяти в пуле плиток.
- ID3D11DeviceContext2::CopyTileMappings : копирует сопоставления из исходного ресурса с плиткой в целевой ресурс с плиткой.
- ID3D11DeviceContext2::GetResourceTiling : получает сведения о том, как ресурс с плиткой разбивается на плитки.
Связанные темы