ディファードシェーディング

一般にフォワードレンダリングを使用する場合はライティングの計算結果をターゲットバッファーにレンダリングするが、ディファードシェーディングではマテリアル情報を複数枚のバッファーから構成されたジオメトリバッファー (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

資料

なぜなにリアルタイムレンダリング – SlideShare

i-saint

リポジトリ:

i-saint/DeferredShading – GitHub

参考:

Deferred Shading in Unity | primitive: blog

Temporal Screen Space Reflections | primitive: blog

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA