ディファードシェーディング
一般にフォワードレンダリングを使用する場合はライティングの計算結果をターゲットバッファーにレンダリングするが、ディファードシェーディングではマテリアル情報を複数枚のバッファーから構成されたジオメトリバッファー (G-Buffers) に格納しておき、ライティングパスで専用のシェーダーを用いてライティングの計算を実行する。
(出典:LIGHT11 )
公式サイト:
ディファードシェーディングレンダリングパス | Unity マニュアル [公式]
参考:
Deferred Shading でライトを贅沢に使いたい!基本的な概念の説明とメリデメを考察 | LIGHT11
使い方
「Project Settings > Graphics」を開き、「Tier Settings」で各 Tier の「Use Defaults」を解除して「Rendering Path」を Deferred
に切り替える。
ドキュメント:
ビルトインレンダーパイプラインのレンダリングパス | Unity マニュアル [公式]
概要
参考:
Forward レンダリングと Deferred レンダリングの違いを軽くまとめてみた – Qiita
Deferred Shading についてまとめてみた | しゅみぷろ
メリット/デメリット
(出典:LIGHT11 )
メリット
- 複数の光源の影響を正確に計算できる。
デメリット
- 半透明のオブジェクトはフォワードレンダリングで描画される。
- ビルトインのアンチエイリアス (MSAA) が使用できない。
- Mesh Renderer 毎に影を無効化できない。
ライティング
参考:
Deferred Shading でライトを贅沢に使いたい!基本的な概念の説明とメリデメを考察 | LIGHT11
パフォーマンス
参考:
Deferred Rendering 性能比較と解説 | KLab 株式会社
ドット絵を処理する
参考:
邪道な Deferred の使い方で苦しんだ話 – Qiita
コマンドバッファを使う (Command Buffer)
ドキュメント:
ビルトインレンダーパイプラインをコマンドバッファで拡張する | Unity マニュアル [公式]
グラフィックスコマンドバッファ | Unity 2018.4 マニュアル [公式]
グラフィックスコマンドバッファ | Unity 2017.4 マニュアル [公式]
リンク:
Command Buffers – Extending Rendering Pipeline | Unity Blog [Official]
参考:
Command Buffer を利用したレンダリングパイプラインの拡張について調べてみた | 凹みTips
Deferred で Command Buffer を利用して GBuffer をいじってみる | 測度ゼロの抹茶チョコ
モバイル対応
- OpenGL ES 3.0 & MRT (Android 4.3 ~)
- Metal (A8 以降/iPhone 6 ~)
ドキュメント:
ビルトインレンダーパイプラインのレンダリングパス | Unity マニュアル [公式]
OpenGL ES | Android デベロッパー [公式]
参考:
Mobile でも Deferred Shading がしたいです | мята
Does deferred rendering work on iOS devices? – Unity Answers
URP
ドキュメント:
URP のディファードレンダリングパス | Universal RP 14.0 Manual [公式]
参考:
URP で Deferred Rendering の概要を学んでサクッと使う | LIGHT11
URP に新しく追加された Deferred レンダリングなどについてざっくりと調べてみた | 凹みTips
URP におけるディファードレンダリング | シェーダー Tips
資料
i-saint
リポジトリ:
i-saint/DeferredShading – GitHub
参考: