可変レートシェーディング
可変レートシェーディング(英語:Variable Rate Shading、略称:VRS)とは、あまり目立たないであろう部分のピクセルシェーダーでの処理を大雑把に行う機能のことである。
これによりGPUの負荷が下がるので、その分をフレームレートの向上に割り振ることができる。
概要[編集 | ソースを編集]
原文では別名「Coarse Pixel Shading」とも記載されており、直訳すると「粗いピクセルシェーディング」となる。こちらの方が意味は伝わりやすいかもしれない。
VRSではピクセルシェーダーの呼び出しを全ピクセルに対して行うのではなく、 目立たない部分は「2x2ピクセル」や「4x4ピクセル」に1回だけ処理を行う。
1フレームの描画に際してピクセルシェーダーを何回も呼び出す場面において、 法線や深度などと同様に「粗ピクセルサイズ」を記録しておくことで 後続のピクセルシェーダーで手抜きができるというものである。
そしてコマンドリストに「このピクセルシェーダーは手抜きしても良いフラグ」を設定しておくと、GPUが負荷に応じて適切に手抜きしてくれる。
粗ピクセルサイズを設定する際の条件は様々なものが考案されている。
- カメラからの距離(深度情報を利用、もっとも一般的な方法)
- モーションブラーの有無(ブラーがかかった部分の画質はそんなに重要ではない)
- エッジではない部分(低性能GPUの場合など)
- 問答無用で全画面(コマ落ちしそうな場合など)
歴史[編集 | ソースを編集]
2018年にNVIDIAが「GeForce RTX 2000シリーズの目玉機能のひとつ」として「NVIDIA Adaptive Shading」という名称で発表した。ただ同製品は「ハードウェアによるレイトレーシング」で話題沸騰だったためあまり話題にならなかった。
実装に関してはVulkanが先行していた。
2019年にDirectX 12の追加機能として採用され、2020年にDirectX 12 Ultimateで正式採用された。これによりAMDやインテルも「宗教上の理由」を回避して利用できるようになった。
関連項目[編集 | ソースを編集]
- メッシュシェーディング = 同時発表されたテッセレーターでも同様の間引き処理をするもの