Notifications
Article
LightWeightRenderPipelineカスタムしてみた
Updated a year ago
534
0
LightWeightRenderPipelineカスタムしてみた

始めに

今回はLightWeightRenderPipelineに手を入れてみて、実際に影の表現を弄ってみた記事です。
リアルタイムでの処理をキャラクター周りの近距離のみに絞り、遠距離についてはベイクした影にする事で描画負荷を少し抑えようという考えからスタートしました。
先に結果は、こんな感じです
プロジェクトはコチラ

問題点・・

LWRPそのままだと下記の様に、同系統のもの同士でリアルタイムのshadowとベイクしたshadowの境界が出来てしまい具合が悪いです…。(わかりやすくするためにリアルタイムのshadowのみ青くしています)
かと言って、これを避けるべく対応すると、今度はユニティちゃんに影が落ちなくなり、これまた具合が悪いです…。
これはもう設定ではなく RenderingPipelineそのものを弄る必要があるな…という事で、今回のモノになります。

実現方法について

今回ではshadowパスを二回に分けて実行することでコレを実現しました。

このような流れで処理することで「背景オブジェクト→地面」へリアルタイムshadowが落ちてしまう問題を解決しました。 このような感じでScript側で描画の流れを変えられるのは良いですよねー

最後に…

ソニック・ワールド・アドベンチャーのグラフィックス記事での影生成の項目やバイオハザード5のグラフィックス記事を読む限りでは、今回のものと同じように、静的な物同士ではベイクしたshadowを見せ、動的な物と静的な物の間ではリアルタイムのshadowを使うことでうまくみせているようです。
PS3やXbox360世代で使われたテクニックなので、そろそろモバイルでも使えそうな気がしております。 (個人の感想です)
今回のサンプルでは LWRPの1.1.8-previewから派生する形で作りましたが、LWRPは 2.x / 3.xと新しいバージョンが出ています。ソースを読む限り 2.0のタイミングで大きくリファクタリングされています。 これから始める場合は、LWRP 2.x + 2018.2の組み合わせで行く方が良さそうです。
YusukeKurokawa (黒河 優介)
Developer Relation Manager/Engineer - Programmer
7
Comments