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

可変レート シェーディング (VRS) のベース シェーディング レートとコンバイナーを設定します。 詳細については、「 可変レート シェーディング (VRS)」を参照してください。

構文

void RSSetShadingRate(
  D3D12_SHADING_RATE                baseShadingRate,
  const D3D12_SHADING_RATE_COMBINER *combiners
);

パラメーター

baseShadingRate

型: D3D12_SHADING_RATE

設定する基本シェーディング レートを記述する D3D12_SHADING_RATE 列挙体の定数。

combiners

型: const D3D12_SHADING_RATE_COMBINER*

設定するシェーディング レート コンバイナーを含む D3D12_SHADING_RATE_COMBINER の定数配列への省略可能なポインター。 配列内 のD3D12_SHADING_RATE_COMBINER 要素の数は、定数 D3D12_RS_SET_SHADING_RATE_COMBINER_COUNTと等しく、 2 に等しい必要があります。

プリミティブ単位および画面空間ごとのイメージ ベースの VRS は、Tier1 可変レート シェーディング (VRS) ではサポートされていないため、これらの値を意味のあるものにするには、アダプターには Tier2 VRS のサポートが必要です。 「D3D12_FEATURE_DATA_D3D12_OPTIONS6D3D12_VARIABLE_SHADING_RATE_TIER」を参照してください。

NULL ポインターは、既定のシェーディング コンバイナーと同等であり、どちらもD3D12_SHADING_RATE_COMBINER_PASSTHROUGHです。

最終的なシェーディング レートのアルゴリズムは、次によって決定されます。

postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);

where is 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
ヘッダー d3d12.h

こちらもご覧ください

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