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]);

ここで 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)