ID3D12GraphicsCommandList5::RSSetShadingRateImage メソッド (d3d12.h)

可変レート シェーディング (VRS) の画面空間シェーディング レート イメージを設定します。 詳細については、「 可変レート シェーディング (VRS)」を参照してください。 この方法では、レベル 2 の可変レート シェーディング (VRS) のサポートが必要です。 「D3D12_FEATURE_DATA_D3D12_OPTIONS6D3D12_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

こちらもご覧ください

可変レート シェーディング (VRS)