Unity (2021.3.2f1)
- はじめに
- URPとは?
- 今回やりたい事
- UlRPパッケージをインストール
- URP環境構築
- ビルトインのマテリアルをURP用に変換
- 標準マテリアルは「Lit」に置き換える
- ShaderGraphで作ったシェーダーをURPでも使えるようにする
- うまくいかなかったこと
はじめに
ビルトインのプロジェクトをURPに変換する作業をしたので内容を共有したいと思います。
URPとは?
レンダリングパイプラインが変わります。。といってもなんのこっちゃという話ですよね。公式に解説動画が上がっていたのでそれが一番分かりやすかったです。
↑を見るとお分かりなのですが、従来のを「ビルトイン」といい、そこからの進化版が「URP」「HDRP」という位置付けになります。
描画パフォーマンスもビルトインより上がるのと公式が推していることもあるので、早めに切り替えて慣れておいた方がいいのかなと個人的には思いました。
今回やりたい事
UnityHub
だとプロジェクト新規作成時は「ビルドイン」「URP」「HDRP」を選択できるようになっています。
新規プロジェクト作成時にそれぞれの環境に応じてプロジェクトが最適化されます。
なんですが、
自分は「URP」の存在を知らなかったのでいつも「ビルトイン」を選んでたわけです。
そして途中から別の環境に変えるというのはUnityHub
でやることはできず、Unity
内でコンバート作業が必要となるわけです。
さらにURPにバージョンの概念がありまして、
今回その作業をやっていこうといお話でありました!
UlRPパッケージをインストール
パッケージをインストールする必要があるのでそれをやります。
Windows
>PackageManager
を開くUnity Registry
に切り替えUniversal RP
を選択Install
をクリック
あとURPのパッケージのバージョンをちゃんと確認しておきましょう。
このバージョン値が変わると手順も変わります。URP12以前とそれ以降でだいぶ違うようです。
今回はUPR12というバージョンでの手順となりますので宜しくお願いします。
URP環境構築
まずURP Assetというやつを作る必要があります。
Create
→Rendering
→ URP Asset(with Universal Renderer)
をクリック
※2D用なら (with 2D Renderer)というのを使います。
2つファイル生成されますので、適当に名前をつけてあげます。
自分は「URPA」と「URP_Renderer」にしました。
次はファイルをプロジェクトに適用する作業していきます。
Edit
→ Project Settings
を開きます
Graphics
のタブを開きます。
Scritable Redner Pipeline Settings
に先ほど作成した「URPA」をセットします。
Quality
のタブを開きます。
同じに用にScritable Redner Pipeline Settings
に先ほど作成した「URPA」をセットします。
↑レベルごとにセットする必要があります。この部分をクリックするとレベルの切り替えができるので全部に同じものをセットします。
これでプロジェクトがURP用に切り替わりました。
ビルトインのマテリアルをURP用に変換
URP
に切り替わると今まで使えてたマテリアルは使えなくなります。
ヒエラルキーに配置したゲームオブジェクトはマテリアルを失うためピンク色になってると思います。
で、ここからマテリアルをURP
用にコンバートしていく作業が始まります。
それをするにはマテリアルを選択してあげる必要があります。選択するには普通にマテリアルを左クリックするだけ。
その状態で Edit → Rendering → Material → Convert Selected Built-in Materials to URP
と実行します。
ダイアログが表示されるので Proceed
をクリックします。
これで任務完了です!
これでうまくいく人はそれで終わりでいいのですが、そうならない人は以降の項目を参考にしてみてください。
標準マテリアルは「Lit」に置き換える
ビルトインの標準マテリアル(Default-Material)をURPにコンバートすることはできるのですが、次回起動時に変換前の状態に戻ってしまいます。
なのでコンバートではなくURPの標準マテリアルに付け替えてあげます。
URPの標準マテリアルは「Lit」というやつなのでこれに変えます。
変更する手順としては、マテリアルを選択 → 目のアイコン押す → Litで検索 → Lit を選択
URPのデフォルトマテリアルは白ではなくグレーっぽいやつになりますね。
ShaderGraphで作ったシェーダーをURPでも使えるようにする
ShaderGraphのシェーダーはコンバートできないので、別途対応が必要でした。
以下記事でやってみたので参考にしてください。
うまくいかなかったこと
Render Pipeline Converterがうまく機能しない
他サイトだとこれを使った方法が書かれているのだけど、
実際にやってみたら自分の環境だとうまく変換されずエラーになりまくったので断念しました。
本来これだと全自動で変換できるみたいだけど。。
カスタムシェーダー(自作)はコンバートできない
自前で作ったシェーダーもしくはアセットストアで手に入れたシェーダーは大体ビルトイン用になっていてURPで使う事ができません。
コンバートがうまくいかないやつは大体これです。
自前で作ったシェーダであればURPの記法に従ってリメイクしてあげればいいのですが、他者が作ってる場合はコードを理解するのが難しいのでそう簡単にいかないですねー。
一応購入したアセットにもよりますがアセットストアの概要欄とかにURPでの対応方法が書かれていることがあったりするので、それを見て対応するしかないと思います。
私はシェーダーの知識がないので諦めました。