TATIKUNLOG.

主にゲーム作りについて書き留めるブログ。

URPの『Universal Rendering Example』プロジェクトを見ていきたい【Unity】

はじめに

URPのポストエフェクトを自作してみたいと思って色々調べてみたのですが、

なんの情報を信用していいのか良くわからなかったので、

Unity公式のGithubのサンプルプロジェクトを参考にすることにしました。

ちなみに、RendererFeatureでURPにRenderパスを追加することで、追加のエフェクトをかけているようです。

このRendererFeatureが良く分からないので、それを調べる目的もあります。

docs.unity3d.com

見るプロジェクト

github.com

プロジェクトの内容

ダウンロードして内容を確認してみましたが、_CompletedDemosのシーンとして

  • 3DCharacterUI
  • 3DSkybox
  • CockpitView
  • FPS
  • ToonOutlinePostprocessCompleted
  • UnityOcclusionDemoCompleted

の六種類が含まれていました。

また、WIP(制作途上)のシーンとして

  • Portals
  • ScriptableRenderPasses
  • Splitscreen

が含まれていました。

WIPのシーンは置いといて、6つのCompletedDemoシーンについては参考にして問題なさそうです。

(WIPの中にも気になる実装がいくつかありましたが)

おおまかなシーンの紹介

3DCharacterUI

f:id:tat1kun:20210705184525j:plain:w500

f:id:tat1kun:20210705184543j:plain:w500

Renderingの設定を切り替えることでショップのUIを開いているときは、

ショップUIの裏の画面はブラーエフェクトをかけるというサンプルですね。

3DSkybox

f:id:tat1kun:20210705185131j:plain

ちゃんと3DSkyboxの構造を確認できていませんが、

カメラスタッキングを使って、背景用の映像を別にレンダリングして合成している……という認識です。

f:id:tat1kun:20210705185158j:plain:w500

f:id:tat1kun:20210705185216j:plain:w500

CockpitView

f:id:tat1kun:20210705185634j:plain:w500

URPでカメラスタッキングが対応したという情報が出たときによくみた映像のシーンですね。

カメラスタッキングを使ってUIを合成しています。

www.youtube.com

Unity JapanのYoutubeチャンネルでもカメラスタッキングの解説に使われていました。

FPS

f:id:tat1kun:20210705191008j:plain:w500

手元の武器視点映像全体FOV(視野角)を変える演出をしてます。

上の画像では手元のFOVを40度それ以外の様子をFOV80度のカメラで撮影して合成してます。

ちなみに、手元も80度にすると下の画像みたいになります。

f:id:tat1kun:20210705191040j:plain:w500

ToonOutlinePostprocessCompleted

f:id:tat1kun:20210705191640j:plain:w500

名前の通り、アウトラインを描画しています。

f:id:tat1kun:20210705191701j:plain:w500

レイヤーマスクでキャラクターのみを指定して、アウトラインを描画するマテリアルを適用しています。

また、他のアウトラインをつけるエフェクトも同梱されています。

f:id:tat1kun:20210705191810j:plain:w500

画面全体に対して、トゥーン調の色の塗り分けと、アウトラインの描画を行っています。

f:id:tat1kun:20210705191935j:plain:w500

これは全体に対してエフェクトをかけるために、スカイボックス描画後にパスを仕込んでますね。

UnityOcclusionDemoCompleted

f:id:tat1kun:20210705185239j:plain:w500

これはURPのCustomRenderについて調べるとよく出てくる演出のやつですね。

デプスとレイヤーマスクを上手く使うことで、

カメラに対して物体で遮蔽された、更に向こう側の物体をシルエットで描画します。

URPの公式ドキュメントに詳しい実装について書いてあります。

docs.unity3d.com

次にやること

今回は内容をチラッと確認する程度でしたが、次からはスクリプト等をちゃんとみていきたいと思います。

この辺のドキュメントを眺めながら、雰囲気が掴めたらいいなあって感じです。

https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.5/api/index.html