だんごのUnity開発メモ

Unityでの開発や勉強内容をまとめています!

Universal Render Pipeline Assetまとめ

Universal Render Pipeline Asset(以下URPアセット)の作成~各設定項目を簡単にまとめていきます。
詳しくは公式のUniversal Render Pipeline Assetにまとめられているので、こちらも参考にしてください。

目次

       
  1. URPアセットとは
  2. URPアセットの作成手順
  3. 作成されるアセットについて
  4. URPアセットの設定項目
  5. まとめ

1.URPアセットとは

  • URPの描画機能と品質の設定をおこなえる
  • SRPのRenderPipelineAssetを継承したスクリプト可能なオブジェクト

2.URPアセットの作成手順

Projectウィンドウの「Create」->「Rendering」->「Universal Render Pipeline」->「Pipeline Asset (Forward Renderer)」を選択することで、アセットを作成できます。

「UniversalRenderPipelineAsset」「UniversalRenderPipelineAsset_Renderer」という名前のアセットが作成されます。

3.作成されるアセットについて

UniversalRenderPipelineAsset

  • Universal Render Pipelineの描画機能と品質の設定をおこなえます
  • SRPのRenderPipelineAssetを継承したスクリプト可能なオブジェクトです
  • 描画設定の項目に作成したアセットを割り当てることで、組み込みのレンダーパイプラインからURPに切り替わります

UniversalRenderPipelineAsset_Renderer

  • UniversalRenderPipelineAssetに登録して使用します
  • ScriptableRendererDataを継承したForwardRendererDataクラスであり、URPのフォワードレンダリングパスを実行するためのアセットです
  • 作成されるレンダラーはデフォルトのForwardRendererです

URPアセットの設定項目

General

Renderer List

フィールド m_RendererDataList : ScriptableRendererData[]
デフォルト ForwardRenderer
説明
  • ForwardRendererDataクラスを登録する項目です
  • URPアセットで使用するすべてのレンダラーをここで設定できます
  • 0番目に設定されているレンダラーがデフォルトのレンダラーとして使用されます(SetDefaultを選択することでデフォルトのレンダラーを切り替えることができます)

Depth Texture

フィールド m_RequireDepthTexture : bool
デフォルト false
説明
  • シェーダ側で_CameraDepthTextureを使用できるようになります
  • シーン内のすべてのカメラにデフォルトで使用されます(カメラのインスペクタで個々の設定を反映可能です)

Opaque Texture

フィールド m_RequireOpaqueTexture : bool
デフォルト false
説明
  • シェーダ側で_CameraOpaqueTextureを使用できるようになります
  • すべての不透明(Opaque)なオブジェクト描画後のレンダリング結果が書き込まれます(旧パイプラインのGrabPassに相当する機能です)
  • シーン内のすべてのカメラにデフォルトで使用されます(カメラのインスペクタで個々の設定を反映可能です)

Opaque Downsampling

フィールド m_OpaqueDownsampling : DownSampling(enum)
デフォルト _2xBilinear
説明
  • Opaque Textureがtrueの時に設定可能です
  • Opaque Textureのダウンサンプリング方式を設定できます

Downsampling

名称 説明 方式
None ダウンサンプリングを行わず、カメラと同じ解像度でコピーされたテクスチャが作成されます  
_2xBilinear 1/2の解像度でコピーされたテクスチャが作成されます バイリニアフィルタリング
_4xBox 1/4の解像度でコピーされたテクスチャが作成されます ボックスフィルタリング
_4xBilinear 1/4の解像度でコピーされたテクスチャが作成されます バイリニアフィルタリング

Terrain Holes

フィールド m_SupportsTerrainHoles : bool
デフォルト true
説明
  • テレインホールの使用有無を設定できます
  • 無効にすることで、ビルド時にテレインホールシェーダが削除され、ビルド時間が短縮されます

Quality

HDR

フィールド m_SupportsHDR : bool
デフォルト false
説明
  • HDR(High Dynamic Range)の使用有無を設定できますす
  • 広範囲の照明効果を表現したい場合に使用します
  • 有効にすることでレンダーテクスチャのカラーフォーマットがHDRになります
  • ローエンドのハードウェアをターゲットにしている場合は無効にしておくことでパフォーマンスを向上できます
  • シーン内のすべてのカメラにデフォルトで使用されます(カメラのインスペクタで個々の設定を反映可能です)

Anti Aliasing(MSAA)

フィールド m_MSAA : MsaaQuality(enum)
デフォルト Disabled
説明
  • MSAA(Multi-Sample Anti-Aliasing)のサンプル数(Disabled, 2x, 4x, 8x)を設定できます
  • サンプル数が多いほどエッジが滑らかになりますが、同時に負荷も大きくなります
  • MSAAを使用しない場合や2DゲームでMSAAの計算が不要な場合は設定を無効(Disabled)にしておいた方がいいです
  • シーン内のすべてのカメラにデフォルトで使用されます(カメラのインスペクタで個々の設定を反映可能です)

Render Scale

フィールド m_RenderScale : float
デフォルト 1.0
説明
  • レンダーテクスチャの解像度を設定できます(デバイスの解像度ではない点に注意)
  • 値を下げるほどパフォーマンスは向上しますが、描画品質は低下します
  • 値を上げるほど描画品質が向上しますが、パフォーマンスが低下します
  • UIの表示はデバイスの解像度で表示されます

Lighting

Main Light

フィールド m_MainLightRenderingMode : LightRenderingMode(enum)
デフォルト PerPixel
説明
  • メインのDirefctional Lightの計算方式を設定(disabled, Per Pixel)できます
  • メインライトの設定は「Lighting Settings」の「Sun Source」で設定できます
  • Sun sourceの値がからの場合はシーン内で最も明るいDirectional Lightをメインライトとして設定されます

Cast Shadows

フィールド m_MainLightShadowsSupported : bool
デフォルト true
説明
  • ONにすることでメインライトの影を描画できます
  • OFFにすることでメインライトの影が描画されなくなります

Shadow Resolution

フィールド m_MainLightShadowmapResolution : ShadowResolution(enum)
デフォルト _2048
説明
  • メインライトから受ける影の解像度を設定します
  • 値を下げるほどパフォーマンスが向上しますが、影が粗くなります
  • 値を上げるほど影は詳細になりますが、パフォーマンスが低下します

Additional Lights

フィールド m_AdditionalLightsRenderingMode : LightRenderingMode(enum)
デフォルト PerPixel
説明
  • メインライト以外に追加するライトの計算方法(Disable, Per Vertex, Per Pixel)を設定します

LightRenderingMode

名称 説明
Double 追加ライトの計算を無効にします
Per Vertex 頂点ごとに計算をおこないます
Per Pixel ピクセルごとに計算をおこないます

Per Object Limit

フィールド m_AdditionalLightsPerObjectLimit : int
デフォルト 4
説明
  • メインライト以外に追加できるライトの最大数を設定できます

Cast Shadows

フィールド m_AdditionalLightShadowsSupported : bool
デフォルト false
説明
  • ONにすることで追加ライトの影を描画できます
  • OFFにすることで追加ライトの影が描画されなくなります

Shadow Resolution

フィールド m_AdditionalLightsShadowmapResolution : ShadowResolution(enum)
デフォルト false
説明
  • 追加ライトから受ける影の解像度を設定します
  • 値を下げるほどパフォーマンスが向上しますが、影が粗くなります
  • 値を上げるほど影は詳細になりますが、パフォーマンスが低下します

Shadows

Distance

フィールド m_ShadowDistance : float
デフォルト 50
説明
  • カメラからどれだけの距離の範囲に影を描画するかを設定できます
  • 値より先にいるオブジェクトの影は描画されません
  • 影の描画範囲が広がるほど大量のメモリを消費するので、広大なフィールド等では値を調整する必要があります(影の表示範囲が限定されている見下ろし型のゲームでも活用できます)

Cascades

フィールド m_ShadowCascades : ShadowCascadesOption(enum)
デフォルト NoCascades
説明
  • シャドウカスケードの設定ができます
  • シャドウマップの数を増やすほどパフォーマンスは低下します

ShadowCascadesOption

名称 説明
NoCascades 一つのシャドウマップを使用します(距離に応じてシャドウマップが切り替わることはありません)
Two Cascades 2つのシャドウマップを使用します
Four Cascades 4つのシャドウマップを使用します

Depth Bias

フィールド m_ShadowDepthBias : float
デフォルト 1.0
説明

Normal Bias

フィールド m_ShadowNormalBia : float
デフォルト 1.0
説明

Soft Shadows

フィールド m_SoftShadowsSupported : bool
デフォルト false
説明
  • ソフトシャドウの使用有無を設定できます
  • シャドウマップにスムーズなフィルタリングを適用することによって影を滑らかに表現できます

Post-processing

Grading Mode

フィールド m_ColorGradingMode : ColorGradingMode(enum)
デフォルト LowDynamicRange
説明
  • プロジェクトに使用するカラーグレーディングモード(LDR, HDR)を設定できます
  • この処理はトーンマッピングの後に実行されます

ColorGradingMode

名称 説明
LowDynamicRange
  • 通常のカラーグレーディングモードです
  • モバイル等のローエンド向けに使用します
HighDynamicRange
  • 高精度なカラーグレーディングモードです
  • コンシューマ等のハイエンド向けに使用します

LUT Size

フィールド m_ColorGradingLutSize : int
デフォルト 32
説明
  • カラーグレーディングに使用するLookup textureの値を設定できます
  • 値が大きいほど精度が上がりますが、パフォーマンスとメモリ使用量に負荷がかかります
  • 現状デフォルト値の32が最もバランスのとれた値になっているとのことです

Advanced

SRP Batcher

フィールド m_UseSRPBatcher : bool
デフォルト true
説明
  • SRP Batcherの使用有無を設定できます
  • ONにすることでCPUレンダリング速度を高速化できます
  • 同じシェーダを使用する大量のマテリアルがある場合に役立ちます

Dynamic Batching

フィールド m_SupportsDynamicBatching : bool
デフォルト false
説明

Mixed Lighting

フィールド m_MixedLightingSupported : bool
デフォルト true
説明
  • 混合照明の使用有無を設定できます
  • ONにすることでビルドに混合照明シェーダバリアントが含まれるようになります

Debug Level

フィールド m_DebugLevel : PipelineDebugLevel(enum)
デフォルト Disabled
説明
  • レンダーパイプラインが生成するデバッグ情報レベル(Disabled, Profiling)を設定できます

PipelineDebugLevel

名称 説明
Disabled ログの記録を無効にします
Profiling
  • レンダーパイプラインに詳細情報タグを提供させます
  • 詳細情報はFrameDebuggerで確認できます

Shader Variant Log Level

フィールド m_ShaderVariantLogLevel : ShaderVariantLogLevel(enum)
デフォルト Disabled
説明
  • ビルド完了時にコンソールパネルに表示するシェーダーストリッピングとシェーダーバリアントの情報レベル(Disabled, OnlyUniversalRPShaders, AllShaders)を設定できます

ShaderVariantLogLevel

名称 説明
Disabled ログの記録を無効にします
OnlyUniversalRPShaders すべてのURPシェーダの情報をログに記録します
AllShaders ビルド内のすべてのシェーダの情報をログに記録します

まとめ

URPアセットの各設定項目を簡単にまとめました。
URPの設定は従来のBuilt-in Render Pipelineの時とは違い、設定項目がアセットにまとめられているのでかなり扱いやすくなっていました。
これからもURPについて調べたことや気づいた点などあればまとめていくのでよろしくお願いします。
また本記事の内容にどこか間違い等あればご指摘いただけると嬉しいです。

参考記事