ボリュームのタイル表示されたリソース
ボリューム (3D) テクスチャは、タイル リソースとして使用できます (タイルの解像度は 3 次元であることに注意します)。
概要
タイル リソースにより、D3D リソース オブジェクトがそのバッキング メモリから切り離されます (以前のリソースは、そのバッキング メモリと 1:1 の関係でした)。 これにより、テクスチャ データのストリーミングやメモリ使用量の再利用や削減など、さまざまな興味深いシナリオが可能になります。
2D テクスチャのタイル リソースは、D3D11.2 でサポートされています。 D3D12 と D3D11.3 は、3D タイル テクスチャのサポートを追加します。
タイルで使用される標準リソース寸法は、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 タイル リソースの既定のマッピング (最も詳細なミップ)
- テクスチャ 3D タイル リソースの既定のマッピング (2 番目に詳細なミップ)
- テクスチャ 3D タイル リソース (最も詳細なミップ)
- テクスチャ 3D タイル リソース (2 番目に詳細なミップ)
- テクスチャ 3D タイル リソース (単一タイル)
- テクスチャ 3D タイル リソース (均一ボックス)
テクスチャ 3D タイル リソースの既定のマッピング (最も詳細なミップ)
テクスチャ 3D タイル リソースの既定のマッピング (2 番目に詳細なミップ)
テクスチャ 3D タイル リソース (最も詳細なミップ)
次のコードでは、最も詳細なミップで 3D タイル リソースを設定しています。
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 タイル リソース (2 番目に詳細なミップ)
次のコードでは、2 番目に詳細なミップで 3D タイル リソースを設定しています。
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;
テクスチャ 3D タイル リソース (単一タイル)
次のコードでは、単一タイル リソースを設定しています。
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;
テクスチャ 3D タイル リソース (均一ボックス)
次のコードでは、均一ボックス タイル リソースを設定しています (ステートメント 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 タイル リソース API
2D と 3D の両方のタイル リソースに対して同じ 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 : タイル化されたリソースをタイルに分割する方法に関する情報を取得します。
関連トピック