可変レートシェーディング

提供: MonoBook
ナビゲーションに移動 検索に移動

可変レートシェーディング(英語:Variable Rate Shading、略称:VRS)とは、あまり目立たないであろう部分のシェーディング処理を大雑把に行う機能のことである。

これによりGPUの負荷が下がるのでその分をフレームレートの向上に割り振ることができる。

概要[編集 | ソースを編集]

VRSではピクセルシェーダーの呼び出しを全ピクセルに対して行うのではなく、 目立たない部分は「2x2ピクセル」や「4x4ピクセル」に1回だけ処理を行う。

1フレームの描画に際してピクセルシェーダーを何回も呼び出す場面において、 法線深度などと同様に「粗ピクセルサイズ」を記録しておくことで 後続のピクセルシェーダーで手抜きができるというものである。

そしてコマンドリストに「このピクセルシェーダーは手抜きしても良いフラグ」を設定しておくと、GPUが負荷に応じて手抜きしてくれる。

粗ピクセルサイズを設定する際の条件は様々なものが考案されている。

  • カメラからの距離(深度情報を利用、もっとも一般的な方法)
  • モーションブラーの有無(ブラーがかかった部分の画質はそんなに重要ではない)
  • エッジではない部分(低性能GPUの場合など)
  • 問答無用で全画面(コマ落ちしそうな場合など)

類似品[編集 | ソースを編集]

VRSと同様の機能はNVIDIAの「Adaptive Shading」が先行していた。 また実装に関してはVulkanが先行していた。

これをMicrosoftがDirectX 12に取り込んだのがVRSであり、 宗教上の理由を回避してAMDなども使えるようになった。