UniversalRenderPipeline(旧LightweightRenderPipeline)でテンプレートプロジェクトを作成し、そこに既存プロジェクトやAssetStoreのMaterialを持ってくるとピンクになってしまいます。
今回はそれを雑に対応した話を書きます。
環境
- Windows10
- Unity2019.3.0b6
- UniversalRP v7.12
URP対応での対応順
以下の3ステップ行う事になり、下に行くほどコストが掛かります。なお、「雑な」なので今回は2止まりです。
- Unity標準ShaderをUniversalRP標準Shaderに置き換え
- Shader内のTags置き換え
- Shader書き直し
1.Unity標準ShaderをURP標準Shaderに置き換え
Materialで使用しているShaderがUnity標準のStandardやDiffuse Shaderの場合、Unityが用意してくれている変換ツールでUniversalRP対応Shaderに置き換える事が出来ます。
- UnityEditor上部のツールからEditor
- Render Pipeline
- Universal Render Pipeline
- 以下のどちらかを選択。前者がプロジェクト全体、後者が選択中のMaterialのみを対象とします
Upgrade Project Materials to UniversalRP Materials
Upgrade Selected Materials to UniversalRP Materials
例えばStandardはLit、DiffuseはSimpleLitに置き換わります。見た目の問題がある場合はMaterial propertyを見直します。
たまに置き換えてくれない事があるので、その時は手作業で「Universal Render Pipeline」以下にある元Shaderに近そうなShaderに切り替えてください。その際、Textureが外れるのでParameterから付け直しをお忘れなく。
2.Shader内のTags置き換え
Unity標準以外のShaderに関してはノータッチです。都合よくShaderの中身を書き換えてくれないため、地道に修正していきます。
一つずつ修正したりShaderGraphで書き直すのはかなり手間...ですが、Shader内のTagsを置き換えるだけで済むケースもあります。
例えば
Tags { "LightMode" = "ForwardBase" }
は
Tags{"LightMode" = "UniversalForward"}
とする
対象となるのはForwardBaseとForwardAddの2種類で、どちらもUniversalForwardに置き換えます。
ただし、Unity2019.2まではUniversalRPはLWRP名称なので、TagはUniversalForwardではなくLightweightForwardを使用する必要があります。
3.Shader書き直し
使っていたShader自体を書き直す or ShaderGraphで書き直す。
上手いやり方があればいつかブログで書くかもしれません。
追記
2019/11/24
Unity2019.2でのTag置き換え方法について本文中に追記しました。