Open2

ディファードシェーディングのメモ

toshidesutoshidesu

背景

  • toonの多灯受けを綺麗に出したい
  • Gバッファをポスプロに使ってキャラクター判定シェーダ作りたい
  • シェーダ読んでてわからなくなりがちだから知っておきたい
toshidesutoshidesu

下調べ

  • リポジトリあり
  • わかりやすい

https://matcha-choco010.net/2018/09/16/unity-commandbuffer-gbuffer/

以下引用:
Deferred Renderingの苦手なこと
半透明のオブジェクトを処理できない
G-BufferにAlpha情報を保持できない。保持しようと思うとメモリが必要になる
代わりに部分的にForward Renderingを使うのがよい
Directional Light1つだけならForward Renderingより性能が落ちる?
G-Bufferに各種情報を書き込んでからライティングしてるため、若干性能が落ちます。
Unityでは平行投影でのDeferred Renderingはサポートされてない
理由不明
UIで複数光源使うことを想定してないから?
G-Bufferを確保するため一定のメモリを必要とする
携帯端末では不利
Tiled-Base Deferred Renderなど省メモリな手法が考案されています
Deferred Renderingの得意なこと
ライティングが変化するマップ・被写体
範囲が限定された光源を複数おく場合
夜の街を歩く場合はとくに効果が大きそうです

https://www.klab.com/jp/blog/tech/2021/unitydeferredrendering.html

  • liltoon作者のメモ
  • フォワードで良いのではという結論

https://github.com/lilxyzw/Shader-MEMO