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