タイル リソースのボリューム (Direct3D 12)
ボリューム (3D) テクスチャは、タイルの解像度が 3 次元であることを示すタイル リソースとして使用できます。
概要
タイルリソースは、Direct3D リソース オブジェクトをバッキング メモリから切り離します (過去のリソースはバッキング メモリと 1 対 1 の関係を持っていました)。 これにより、テクスチャ データのストリーミングやメモリ使用量の再利用や削減など、さまざまな興味深いシナリオが可能になります。
Direct3D 11.2 では、2D テクスチャ タイル リソースがサポートされています。 Direct3D 12 および Direct3D 11.3 では、3D タイル テクスチャのオプションのサポートを利用できます (D3D12_TILED_RESOURCES_TIERを参照)。
タイリングで使用される一般的なリソース ディメンションは、2D テクスチャの場合は 4 x 4 タイル、3D テクスチャの場合は 4 x 4 x 4 タイルです。
ビット/ピクセル (1 サンプル/ピクセル) | タイルのサイズ (ピクセル、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 | 128 x 64 x 16 |
BC 2,3,5,6,7 | 64 x 64 x 16 |
タイル リソースでは、96bpp 形式、ビデオ形式、R1_UNORM、R8G8_B8G8_UNORM、R8R8_G8B8_UNORMでは、次の形式がサポートされていないことに注意してください。
次の図では、濃い灰色は NULL タイルを表しています。
- テクスチャ 3D タイル リソースの既定のマッピング (最も詳細なミップ)
- Texture 3D Tiled Resource の既定のマッピング (2 番目に詳細なミップ)
- テクスチャ 3D タイル リソース (最も詳細なミップ)
- Texture 3D Tiled Resource (2 番目に詳細なミップ)
- テクスチャ 3D タイル リソース (単一タイル)
- テクスチャ 3D タイル リソース (Uniform Box)
テクスチャ 3D タイル リソースの既定のマッピング (最も詳細なミップ)
の既定のマッピング
テクスチャ 3D タイル リソースの既定のマッピング (2 番目に詳細なミップ)
を示しています
テクスチャ 3D タイル リソース (最も詳細なミップ)
次のコードでは、最も詳細なミップで 3D タイル リソースを設定します。
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 タイル リソース (2 番目に詳細なミップ)
次のコードは、3D タイル リソースと、2 番目に詳細なミップを設定します。
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;
の 2 番目に詳細なミップ
テクスチャ 3D タイル リソース (単一タイル)
次のコードでは、1 つのタイル リソースを設定します。
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;
単一タイルの 3 次元リソースする
テクスチャ 3D タイル リソース (均一ボックス)
次のコードは、均一なボックスのタイルリソースを設定します (ステートメント 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 呼び出しは、2D と 3D の両方のタイル リソースに使用されます。
列挙型
- 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: タイル化されたリソースをタイルに分割する方法に関する情報を取得します。
関連トピック
- リソース バインド の