ID3D12GraphicsCommandList5::RSSetShadingRate 方法 (d3d12.h)
设置可变速率着色 (VRS) 的基本着色速率和组合器。 有关详细信息,请参阅 可变速率着色 (VRS) 。
语法
void RSSetShadingRate(
D3D12_SHADING_RATE baseShadingRate,
const D3D12_SHADING_RATE_COMBINER *combiners
);
参数
baseShadingRate
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_OPTIONS6 和 D3D12_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 |