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

由于第 1 层可变 速率着色 (VRS) 不支持基于每个基元和屏幕空间图像的 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
标头 d3d12.h

另请参阅

可变速率着色 (VRS)