> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RSSetShadingRate (XBOX Series 主机)

> ID3D12GraphicsCommandList5::RSSetShadingRate 方法 (d3d12.h) 用于设置可变速率着色 (VRS) 的基础着色速率和组合器。

设置可变速率着色 (VRS) 的基础着色速率和组合器。有关详细信息，请参阅[可变速率着色 (VRS)](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/vrs)。

## 语法

```cpp theme={null}
void RSSetShadingRate(
    D3D12_SHADING_RATE baseShadingRate,
    const D3D12_SHADING_RATE_COMBINER  combiners
)
```

### 参数

*baseShadingRate*\
类型：D3D12\_SHADING\_RATE

来自 [D3D12\_SHADING\_RATE](/reference/graphics/d3d12/enums/d3d12_shading_rate_public) 枚举的常量，用于描述要设置的基础着色速率。

*combiners*\
类型：const D3D12\_SHADING\_RATE\_COMBINER \*

一个可选指针，指向包含要设置的着色速率组合器的常量 [**D3D12\_SHADING\_RATE\_COMBINER**](/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public) 数组。数组中的 [**D3D12\_SHADING\_RATE\_COMBINER**](/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public) 元素数量必须等于常量 [**D3D12\_RS\_SET\_SHADING\_RATE\_COMBINER\_COUNT**](https://learn.microsoft.com/en-us/windows/win32/direct3d12/constants)，其值等于 **2**。

由于 Tier1 [可变速率着色 (VRS)](https://learn.microsoft.com/en-us/windows/win32/direct3d12/vrs) 不支持每图元和基于屏幕空间图像的 VRS，因此为使这些值有意义，适配器需要 Tier2 VRS 支持。请参阅 [**D3D12\_FEATURE\_DATA\_D3D12\_OPTIONS6**](/reference/graphics/d3d12/structs/d3d12_feature_data_d3d12_options6_public) 和 [**D3D12\_VARIABLE\_SHADING\_RATE\_TIER**](/reference/graphics/d3d12/enums/d3d12_variable_shading_rate_tier_public)。

**NULL** 指针等同于默认着色组合器，即两者都是 [**D3D12\_SHADING\_RATE\_COMBINER\_PASSTHROUGH**](/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public)。

最终着色速率的算法由以下内容决定。

```cpp theme={null}
postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);
```

其中 `ApplyCombiner` 为

```cpp theme={null}
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;
}
}
```

### 返回值

类型：void

无。

## 备注

## 要求

**头文件：** d3d12\_xs.h\
**库：** d3d12\_xs.lib\
**支持的平台**：XBOX Series 主机

## 另请参阅

[可变速率着色 (VRS)](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/vrs)


## Related topics

- [RSSetShadingRateImage (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist5/methods/id3d12graphicscommandlist5_rssetshadingrateimage_public.md)
- [D3D12_SHADING_RATE（XBOX Series 主机）](/zh-CN/reference/graphics/d3d12/enums/d3d12_shading_rate_public.md)
- [D3D12_AXIS_SHADING_RATE (XBOX Series consoles)](/zh-CN/reference/graphics/d3d12/enums/d3d12_axis_shading_rate_public.md)
- [SetPipelineState1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_setpipelinestate1_public.md)
- [D3D12_SHADING_RATE_COMBINER](/zh-CN/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public.md)
