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

本記事は<a href="https://adventar.org/calendars/6326">Unityゲーム開発者ギルドアドベントカレンダー</a>の21日目の記事です。

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

公式ドキュメント
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.1/manual/features/rendering-debugger.html

https://portal.productboard.com/unity/1-unity-platform-rendering-visual-effects/c/22-render-pipeline-debug-window?utm_medium=social&utm_source=portal_share

# 環境
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 
を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/2e9f1839-ad0c-b50c-295d-c26c65d7a9c3.png" width = 240>


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

表示できるものは以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/5be1cf75-5efb-f07e-f051-953fef444a1a.png)

以下は、Rendering Debuggerを使わない場合の画面です。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/0aa9858d-0eb0-55a8-01f8-e817c6d24c14.png" width = 500>

## Albedo
Material Filter の Material Override を　Albedoにした場合、Albedoだけを表示できます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/47dfa45d-fea4-db63-55ea-e5c22a2f7ac6.png" width = 640>

表示は以下のようになります。ベースカラー(アルベド)が表示されます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/82a53066-15a5-2a47-8fa0-9728b2d8616f.png" width = 450>


## Normal World Space
ワールド空間での法線情報を見ることができます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/ecba15ab-d27f-64ab-d5b0-8d552675725b.png" width = 450>

## Lighting Complexity (ライトの影響数)
スクリーン上のピクセルが影響を受けるライトの個数を見ることができます。
1と書かれているタイルは1つの光源から、
2と書かれているタイルは2つの光源からの影響を受けています。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/d2054ec0-663d-59ff-0659-2d1533c6077d.png">

# Vertex Attribute(頂点情報の表示)
頂点座標、頂点カラー、Tangent、Normal といった頂点情報を表示できる機能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/46a74bc4-ddac-478a-b16d-56fb67c2bcda.png)

## Texcoord0
テクスチャ座標(UVセットの0番目)が表示されます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/0f934f3f-a725-7ced-c4c2-7326bd2e1f19.png" width = 450>

## Normal
3Dモデルの法線が表示されます。
ここで表示されるのは3Dモデルが持っている法線情報、つまりオブジェクト空間の法線になります。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/d45ef73f-2a89-3639-b8a2-9071e80ee841.png" width = 450>

## Tangent
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/486c03bc-ce77-1f71-1ded-468cd0168db8.png" width = 450>

# Lighting Debug Modes
ライト情報を見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/f912aa24-6890-ae77-5ef4-bd98c0cfe949.png)

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

例えば、以下のようなシーンを考えます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/5fcf8f3d-f9ce-f8be-db76-d6ba80e75adc.png" width = 500>

Shadownの設定は以下のようになっています。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/df405dd3-8e73-c2f6-4507-71d243d27551.png" width = 500>

カスケードシャドウを可視化すると以下のようになります。
青い部分(カスケード0)は影がクッキリとしており、緑色の部分(カスケード1)は影が粗くなっていることが読み取れます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/8bb2a448-82d5-79a3-7407-5f63090dbd05.png" width = 500>

# Rendering (レンダリング情報の表示)
## Map Overlays
画面にバッファ情報を重ねて表示できます。

## Depth
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/d9ca1bec-6192-241c-b1fd-d9f505644156.png)

## Main Light Shadow Map
Main Lightの視点からレンダリングしたShadowMapを表示できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/3924bcbf-8d19-6c67-cfb8-1b54445b0522.png)

## Additional Lights Shadow Map
Additional Lights の視点からのShadowMapを表示できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/0c6cc231-1850-f191-2e79-f04f13b182af.png)

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

# Additional Wireframe Modes
画面をワイヤーフレームで表示できます。
<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/848c8c97-c7cc-968c-256d-c1779f6c43a3.png" width = 350> <img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/08a4e2d5-332a-0244-5091-314952f4513b.png" width = 350> <img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/4144860b-aa5a-396b-e95e-0cf85d4e2c0d.png" width = 350>

# Pixel Validation
しきい値を指定して、画面ピクセルを塗りつぶすことができる機能です。
画面上の色がどのような値になっているかを確認したいときに便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/833ce4fc-1541-92b1-06a7-6e1197832712.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/4152c342-114c-6452-56df-cc566b22078f.png)

## Highlight Values Outside Range
以下のように設定すると、RGB値が0.5より大きくなっている場所が青く塗りつぶされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/45d39aeb-e0dc-c59a-a5c7-8f1f3cf7ce94.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44288/edc2afb1-c592-5059-aed1-0962d0179e10.png)