【Unity URP】レンダリングをデバッグできるRendering Debugger を触ってみる


本記事はUnityゲーム開発者ギルドアドベントカレンダーの21日目の記事です。

はじめに

Unity 2021.2 で Rendering Debugger (Render Pipeline Debug Window ) がリリースされました。
本記事では、Rendering Debuggerを触ってみたいと思います。

公式ドキュメント
https://docs.unity3d.com/Packages/[email protected]/manual/features/rendering-debugger.html

環境

Unity 2021.2.6f1
Universal RP 12.1.2

Rendering Debuggerでできること

機能1 : マテリアルのフィルタリング
・アルベド、スペキュラ、ワールド法線、ライト影響数などを確認できます。

機能2 : 頂点データの表示 (Vertex Attribute)
・テクスチャ座標(TEXCOORD0 ~ 3)、Color, Tangent, Normal

機能3 : ライティングのデバッグ (Lighting)
・カスケードシャドウマップ・陰影・反射の可視化
・ライトのON/OFF

機能4 : レンダリングのデバッグ (Rendering)
・深度バッファ、シャドウマップを画面上に重ねて表示
・ポストプロセスON/OFF
・ワイヤーフレームの確認
・Overdrawの確認
・画面色の数値の可視化

ツールの起動

メニューから
Window -> Analysis -> Rendering Debugger
を選択します。

Material Filter (マテリアル情報の表示)

Material Filterを使うと、
アルベド、アルファ、法線情報、ライト影響数などの情報を確認できます。

表示できるものは以下になります。

以下は、Rendering Debuggerを使わない場合の画面です。

Albedo

Material Filter の Material Override を Albedoにした場合、Albedoだけを表示できます。

表示は以下のようになります。ベースカラー(アルベド)が表示されます。

Normal World Space

ワールド空間での法線情報を見ることができます。

Lighting Complexity (ライトの影響数)

スクリーン上のピクセルが影響を受けるライトの個数を見ることができます。
1と書かれているタイルは1つの光源から、
2と書かれているタイルは2つの光源からの影響を受けています。

Vertex Attribute(頂点情報の表示)

頂点座標、頂点カラー、Tangent、Normal といった頂点情報を表示できる機能です。

Texcoord0

テクスチャ座標(UVセットの0番目)が表示されます。

Normal

3Dモデルの法線が表示されます。
ここで表示されるのは3Dモデルが持っている法線情報、つまりオブジェクト空間の法線になります。

Tangent

Lighting Debug Modes

ライト情報を見ることができます。

Shadow Cascades

カスケードシャドウを可視化できます。

例えば、以下のようなシーンを考えます。

Shadownの設定は以下のようになっています。

カスケードシャドウを可視化すると以下のようになります。
青い部分(カスケード0)は影がクッキリとしており、緑色の部分(カスケード1)は影が粗くなっていることが読み取れます。

Rendering (レンダリング情報の表示)

Map Overlays

画面にバッファ情報を重ねて表示できます。

Depth

Main Light Shadow Map

Main Lightの視点からレンダリングしたShadowMapを表示できます。

Additional Lights Shadow Map

Additional Lights の視点からのShadowMapを表示できます。

今回のケースでは、Cascade Count = 2 としているため、ShadowMapの左側はCasecade 0のシャドウマップ、
右側はCascase 1 のシャドウマップがレンダリングされていることが読み取れます。

Additional Wireframe Modes

画面をワイヤーフレームで表示できます。

Pixel Validation

しきい値を指定して、画面ピクセルを塗りつぶすことができる機能です。
画面上の色がどのような値になっているかを確認したいときに便利です。

Highlight Values Outside Range

以下のように設定すると、RGB値が0.5より大きくなっている場所が青く塗りつぶされます。