はじめに
URPのポストエフェクトを自作してみたいと思って色々調べてみたのですが、
なんの情報を信用していいのか良くわからなかったので、
Unity公式のGithubのサンプルプロジェクトを参考にすることにしました。
ちなみに、RendererFeatureでURPにRenderパスを追加することで、追加のエフェクトをかけているようです。
このRendererFeatureが良く分からないので、それを調べる目的もあります。
見るプロジェクト
プロジェクトの内容
ダウンロードして内容を確認してみましたが、_CompletedDemosのシーンとして
- 3DCharacterUI
- 3DSkybox
- CockpitView
- FPS
- ToonOutlinePostprocessCompleted
- UnityOcclusionDemoCompleted
の六種類が含まれていました。
また、WIP(制作途上)のシーンとして
- Portals
- ScriptableRenderPasses
- Splitscreen
が含まれていました。
WIPのシーンは置いといて、6つのCompletedDemoシーンについては参考にして問題なさそうです。
(WIPの中にも気になる実装がいくつかありましたが)
おおまかなシーンの紹介
3DCharacterUI
Renderingの設定を切り替えることでショップのUIを開いているときは、
ショップUIの裏の画面はブラーエフェクトをかけるというサンプルですね。
3DSkybox
ちゃんと3DSkyboxの構造を確認できていませんが、
カメラスタッキングを使って、背景用の映像を別にレンダリングして合成している……という認識です。
CockpitView
URPでカメラスタッキングが対応したという情報が出たときによくみた映像のシーンですね。
カメラスタッキングを使ってUIを合成しています。
Unity JapanのYoutubeチャンネルでもカメラスタッキングの解説に使われていました。
FPS
手元の武器と視点映像全体でFOV(視野角)を変える演出をしてます。
上の画像では手元のFOVを40度、それ以外の様子をFOV80度のカメラで撮影して合成してます。
ちなみに、手元も80度にすると下の画像みたいになります。
ToonOutlinePostprocessCompleted
名前の通り、アウトラインを描画しています。
レイヤーマスクでキャラクターのみを指定して、アウトラインを描画するマテリアルを適用しています。
また、他のアウトラインをつけるエフェクトも同梱されています。
画面全体に対して、トゥーン調の色の塗り分けと、アウトラインの描画を行っています。
これは全体に対してエフェクトをかけるために、スカイボックス描画後にパスを仕込んでますね。
UnityOcclusionDemoCompleted
これはURPのCustomRenderについて調べるとよく出てくる演出のやつですね。
デプスとレイヤーマスクを上手く使うことで、
カメラに対して物体で遮蔽された、更に向こう側の物体をシルエットで描画します。
URPの公式ドキュメントに詳しい実装について書いてあります。
次にやること
今回は内容をチラッと確認する程度でしたが、次からはスクリプト等をちゃんとみていきたいと思います。
この辺のドキュメントを眺めながら、雰囲気が掴めたらいいなあって感じです。
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.5/api/index.html