ID3D12GraphicsCommandList5::RSSetShadingRateImage メソッド (d3d12.h)
可変レート シェーディング (VRS) の画面空間シェーディング レート イメージを設定します。 詳細については、「 可変レート シェーディング (VRS)」を参照してください。 この方法では、レベル 2 の可変レート シェーディング (VRS) のサポートが必要です。 「D3D12_FEATURE_DATA_D3D12_OPTIONS6とD3D12_VARIABLE_SHADING_RATE_TIER」を参照してください。
構文
void RSSetShadingRateImage(
ID3D12Resource *shadingRateImage
);
パラメーター
shadingRateImage
種類: ID3D12Resource*
画面空間の網かけ速度イメージを表す ID3D12Resource への省略可能なポインター。 NULL の場合、効果は、すべての値が 1x1 のシェーディング レートであるシェーディング レート イメージを持つ場合と同じです。
このテクスチャには 、D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE 状態が適用されている必要があります。
網かけ速度イメージのタイル サイズは、 D3D12_FEATURE_DATA_D3D12_OPTIONS6を使用して決定できます。 したがって、シェーディング レート イメージのサイズは、次のようになります。
ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)
網かけ速度イメージは、1 つの mip を持つ 2D テクスチャであり、 DXGI_FORMAT_R8_UINT形式である必要があります。 各テクセルは、 D3D12_SHADING_RATEに対応する値である必要があります。 レイアウト D3D12_TEXTURE_LAYOUT_UNKNOWN 必要があり、深度ステンシル、レンダー ターゲット、同時アクセス、またはアダプター間リソースにすることはできません。
(0, 0) が DirectX の左上にあるように、小さすぎるか大きいシェーディングレートの画像は、下または右にシェーディングレート画像領域を持たない、またはこれらの方向に延びる画像になります。 過剰な場合は無視され (ただし有効です)、画像が小さすぎると、下と右のすべての境界外領域の既定のシェーディング レートはイメージから 1x1 になります (ただし、これが最終的なシェーディング レートであることを意味するものではありません)。組み合わせは、この 1 x 1 の既定値に適用されます)。
戻り値
なし
解説
画面空間の網かけ速度イメージが影響を受けるためには、網かけの組み合わせを設定するために ID3D12GraphicsCommandList5::RSSetShadingRate が呼び出されている必要があります。 それ以外の場合、既定の組み合わせ ( 両方のD3D12_SHADING_RATE_COMBINER_PASSTHROUGH) では、網かけの粒度を決定する際に画面空間の網かけ速度イメージは無視されます。
[ID3D12GraphicsCommandList5::RSSetShadingRate] に渡される 2 番目のコンバイナーは、グローバル シェーディング レートとプリミティブごとのシェーディング レートを組み合わせた後に発生するシェーディング レート イメージに適用されるコンバイナです。
最終的なシェーディング レートのアルゴリズムは、
postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);
ここで ApplyCombiner
、 は
UINT ApplyCombiner(D3D12_SHADING_RATE_COMBINER combiner, UINT a, UINT b)
{
MaxShadingRate = options6.AdditionalShadingRatesSupported ? 4 : 2;
switch (combiner)
{
case D3D12_SHADING_RATE_COMBINER_PASSTHROUGH: // default
return a;
case D3D12_SHADING_RATE_COMBINER_OVERRIDE:
return b;
case D3D12_SHADING_RATE_COMBINER_MAX:
return max(a, b);
case D3D12_SHADING_RATE_COMBINER_MIN:
return min(a, b);
case D3D12_SHADING_RATE_COMBINER_SUM:
return min(MaxShadingRate, a + b);
case default:
return a;
}
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | d3d12.h |