Universal Render Pipeline Asset(以下URPアセット)の作成~各設定項目を簡単にまとめていきます。
詳しくは公式のUniversal Render Pipeline Assetにまとめられているので、こちらも参考にしてください。
目次
- URPアセットとは
- URPアセットの作成手順
- 作成されるアセットについて
- URPアセットの設定項目
- まとめ
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
フィールド |
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 |
説明 |
|
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について調べたことや気づいた点などあればまとめていくのでよろしくお願いします。
また本記事の内容にどこか間違い等あればご指摘いただけると嬉しいです。
参考記事