> ## 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.

# RSSetShadingRateImage (XBOX Series 本体)

> ID3D12GraphicsCommandList5::RSSetShadingRateImage メソッド (d3d12.h) は、可変レート シェーディング (VRS) のスクリーン空間シェーディング レート イメージを設定します。

可変レート シェーディング (VRS) のスクリーン空間シェーディング レート イメージを設定します。詳細については、[可変レート シェーディング (VRS)](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/vrs) を参照してください。
このメソッドには Tier2 の [可変レート シェーディング (VRS)](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/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) を参照してください。

## 構文

```cpp theme={null}
void RSSetShadingRateImage(
    ID3D12Resource  shadingRateImage
)
```

### パラメーター

*shadingRateImage*\
型: ID3D12Resource \*

スクリーン空間シェーディング レート イメージを表す [ID3D12Resource](/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) への、オプションのポインター。
**NULL** の場合、すべての値がシェーディング レート 1x1 のシェーディング レート イメージを持つのと同じ効果になります。

このテクスチャには [**D3D12\_RESOURCE\_STATE\_SHADING\_RATE\_SOURCE**](/reference/graphics/d3d12_x/enums/d3d12_resource_states) 状態が適用されている必要があります。

シェーディング レート イメージのタイル サイズは、[**D3D12\_FEATURE\_DATA\_D3D12\_OPTIONS6**](/reference/graphics/d3d12/structs/d3d12_feature_data_d3d12_options6_public) で判別できます。
したがって、シェーディング レート イメージのサイズは以下のようになるべきです。

```
ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)
```

シェーディング レート イメージは、1 つのミップのみを持つ 2D テクスチャで、形式が [**DXGI\_FORMAT\_R8\_UINT**](https://learn.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format) である必要があります。各テクセルは [**D3D12\_SHADING\_RATE**](/reference/graphics/d3d12/enums/d3d12_shading_rate_public) に対応する値でなければなりません。レイアウトは [**D3D12\_TEXTURE\_LAYOUT\_UNKNOWN**](/reference/graphics/d3d12_x/enums/d3d12_texture_layout) である必要があり、深度ステンシル、レンダー ターゲット、同時アクセス、またはクロス アダプター リソースにはできません。

DirectX では (0, 0) が左上のため、シェーディング レート イメージが小さすぎるか大きすぎる場合、下または右にシェーディング レート イメージのない領域が生じたり、イメージがそれらの方向に拡張されたりします。余分な部分があると無視されます (ただし合法)、イメージが小さすぎる場合、下や右の範囲外領域はすべて、イメージからの既定のシェーディング レート 1x1 になります (ただし、これが最終シェーディング レートになるわけではありません。この 1x1 の既定値にはコンバイナーが引き続き適用されます)。

### 戻り値

型: void

なし。

## 解説

スクリーン空間シェーディング レート イメージを有効にするには、シェーディングのコンバイナーを設定するために [**ID3D12GraphicsCommandList5::RSSetShadingRate**](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist5/methods/id3d12graphicscommandlist5_rssetshadingrate_public) が呼び出されている必要があります。呼び出されていない場合、既定のコンバイナー (どちらも [**D3D12\_SHADING\_RATE\_COMBINER\_PASSTHROUGH**](/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public)) では、スクリーン空間シェーディング レート イメージはシェーディング粒度の決定において無視されます。

\[**ID3D12GraphicsCommandList5::RSSetShadingRate**] に渡される 2 つ目のコンバイナーは、グローバル シェーディング レートとプリミティブごとのシェーディング レートが組み合わされた後で、シェーディング レート イメージに適用されるコンバイナーです。

最終シェーディング レートのアルゴリズムは以下によって決定されます。

```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;
}
}
```

## 要件

**ヘッダー:** d3d12\_xs.h\
**ライブラリ:** d3d12\_xs.lib\
**サポートされているプラットフォーム**: XBOX Series 本体

## 関連項目

[可変レート シェーディング (VRS)](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/vrs)


## Related topics

- [RSSetShadingRate (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist5/methods/id3d12graphicscommandlist5_rssetshadingrate_public.md)
- [D3D12_SHADING_RATE (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_shading_rate_public.md)
- [D3D12_AXIS_SHADING_RATE (XBOX Series 本体)](/ja-jp/reference/graphics/d3d12/enums/d3d12_axis_shading_rate_public.md)
- [D3D12_SHADING_RATE_COMBINER](/ja-jp/reference/graphics/d3d12/enums/d3d12_shading_rate_combiner_public.md)
- [D3D12_VARIABLE_SHADING_RATE_TIER](/ja-jp/reference/graphics/d3d12/enums/d3d12_variable_shading_rate_tier_public.md)
