見出し画像

購入したUnityアセットが真ッピンク。URP移行に関して個人的に調べた事まとめ


環境:Unity Editor 2019.4.11f1 / Windows10
 
購入したアセットを素のプロジェクトにインポートしたら全部が真ッピンクになってなんじゃこりゃ。
と思って、いろいろ調べていたら原因は、プロジェクトのレンダリングパイプラインが異なっているからということがわかった。

レンダリングパイプラインって?
Unityのグラフィックの描画にかかわる仕組み

種類は下記
1,ビルトインレンダリングパイプライン
2,SRP(スクリプタブルレンダーパイプライン)
     a)HDRP : High Definition Render Pipeline
     b)URP : UniversalRenderPipeline(※旧LWRP)


普通に3Dプロジェクトを新規作成すると1のビルドインレンダリングパイプライン(以下BRPと記載)の設定になる。
2のSRPは次世代のレンダリングパイプラインで、HDRPとURP(昔はLWRPと呼ばれていた)の2種類ある。プロジェクトの新規作成時にURPなどを選択することでレンダリングパイプラインは切り替わる。

インポートしたアセットが真ッピンクになる現象はつまり、URP環境で生成されたシェーダーがBRPのプロジェクトの上で展開されているため、レンダリングの互換性がなくなり描画できずピンクになってしまったということ。

URPとかの概念で一番わかりやすかったページ
https://moon-bear.com/2020/07/10/unity-urp/

解決法

URPのプロジェクトを新規作成して、そこにURP向けのアセットを読み込めばピンク色問題は解消される。


既存のBRPプロジェクトでやってる人はどうするの?

BRPのプロジェクトをURPにアップグレードする方法はググるといろいろまとめられています。
https://www.youtube.com/watch?v=ErsXwcb3n4c

簡単に書くと
BRPのプロジェクト上でPackage ManagerからURPをインストールした後
Editor > Render Pipeline > Universal Render Pipeline > Upgrade Project Materials to UniversalRP Materials
でプロジェクト全体のマテリアルをURPへアップグレードして
Assets > Create > Rendering > Universal Render Pipeline Assetで作ったアセットを
Edit > Project Settings > Graphics > Render Pipeline Settingsに設定

こうすればURPで設計されたシェーダーは正しく描画されるが、今度はBRPで最適化されているアセットがピンクになってしまうケースもある。
その原因は自動アップグレードで変換されるシェーダーが下記のリンク先のリストだけなので
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manual/upgrading-your-shaders.html


それ以外のNature系のシェーダーとか、アセット自前のシェーダーを使ってると自動で変換されないので手動で最適なシェーダーを探してやる必要がある。手動でうまくやっていた方↓
https://qiita.com/ZeniZeni/items/e75e965373fedb771c12

一個一個手動でやるのは気が遠くなるけど
シェーダーを一括で変換するスクリプトを公開している人がいた。
https://gist.github.com/SakaITa/5e55a2c0f0b151331559e1bf8757351a
Errorになってるシェーダーを一括で変換できる。

うまいことシェーダーを指定できたとしても、でもなんか描画がコレじゃない感がすごかったりする。
まあ自分のシェーダーの知識がゼロだからだけども。

シェーダーの最低限の知識はこちらでお勉強。
https://www.youtube.com/watch?v=8EjRH89MjVs&t=189s


なによりスクリプトを使ったとしても超面倒だ。
逆にURPのアセットのシェーダーをBRPのプロジェクト上でBRP用のシェーダーに割り当てるのも同じ手間だし、描画もなんか変。

追記1

Hidden/InternalErrorShaderになっているシェーダーの一括変換は
Unityエディタのファイルタイプ検索が使えるかもしれない。
検索をマテリアルのみに絞ってピンク色のマテリアル(シェーダーがHidden/InternalErrorShader)のものをすべて選択し、シェーダーを変更。これですべてうまくいくかは不明。


簡単に共存できないの?

この辺りのURPへアップグレードの問題点をUnityは認識していて、この変換の簡易化は2021のUnityで検討されている。らしい。


なにより、今触っているNaninovelがURP非推奨
https://naninovel.com/guide/render-pipelines.html#setup
機能制限はキツイ、UIカメラが使用できなくなるのは厳しい。


なので、しばらくURPのものは使用せずに様子をみることにする。
アセット買う時にURPオンリーのものは気をつけよう。



この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?