> ## 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](/zh-TW/reference/graphics/d3d12/enums/d3d12_shading_rate_public) 列舉中的常數，描述要設定的基本著色速率。

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

選擇性的指標，指向包含要設定之著色速率合併器的 [**D3D12\_SHADING\_RATE\_COMBINER**](/zh-TW/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public) 常數陣列。陣列中 [**D3D12\_SHADING\_RATE\_COMBINER**](/zh-TW/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**。

由於第 1 層[可變速率著色 (VRS)](https://learn.microsoft.com/en-us/windows/win32/direct3d12/vrs) 不支援個別基本型別與螢幕空間影像式 VRS，因此若要讓這些值有意義，介面卡需要支援第 2 層 VRS。請參閱 [**D3D12\_FEATURE\_DATA\_D3D12\_OPTIONS6**](/zh-TW/reference/graphics/d3d12/structs/d3d12_feature_data_d3d12_options6_public) 與 [**D3D12\_VARIABLE\_SHADING\_RATE\_TIER**](/zh-TW/reference/graphics/d3d12/enums/d3d12_variable_shading_rate_tier_public)。

**NULL** 指標等同於預設的著色合併器，兩者皆為 [**D3D12\_SHADING\_RATE\_COMBINER\_PASSTHROUGH**](/zh-TW/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-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist5/methods/id3d12graphicscommandlist5_rssetshadingrateimage_public.md)
- [D3D12_SHADING_RATE (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_shading_rate_public.md)
- [D3D12_AXIS_SHADING_RATE (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/enums/d3d12_axis_shading_rate_public.md)
- [SetPipelineState1 (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_setpipelinestate1_public.md)
- [SetPipelineStackSize (XBOX Series 主機)](/zh-TW/reference/graphics/d3d12/interfaces/id3d12stateobjectproperties/methods/id3d12stateobjectproperties_setpipelinestacksize_public.md)
