テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】ProBuilderをLWRPで使用するとピンクになるのを何とかする

f:id:tsubaki_t1:20190127234224j:plain

ProBuilderでステージを作っているときに、ふと思ってLWRPを適応したところ、見事にピンク色になってしまいました。

ProBuilderのシェーダーはLWRPに対応していない

LWRPは幾つかの点で非常に有り難い機能ですが、機能の削減…特にShaderのSurfaceShaderに対応していない、パイプラインに対応したシェーダーしか使用できない等、広報互換性的に結構面倒な部分があります。

今回使用しているProBuilderはLWRPのパイプラインには対応したいなかった為、LWRPを適応するとモデルがまっピンクになるという現象が起こりました。

一応、全てのシェーダーに対応していないという訳ではなく、Unlit系のシェーダーは動作することが多いのですが、今回は影を表現するためかSurfaceShaderで記述されていたため、コレがモロに影響を受けました。

f:id:tsubaki_t1:20190127234847j:plain
例えばProBuilder/Reference Unlitシェーダーは表現出来る

ProBuilderの使用しているマテリアルを他のマテリアルに変更したりする分には問題はないのですが、出来れば頂点カラーも含めてProBuilderの機能を使いたいので、何とかしてみます。

シェーダーを作ろう

ShaderGraphでシェーダーを作ります。

Assets>Create>Shader>PBRでShaderGraph用のシェーダーを作ります。作ったシェーダーを右クリックしてマテリアルを生成、新しいモデルに割り当てておきます。

f:id:tsubaki_t1:20190128000239j:plain
PBRシェーダーを作る

f:id:tsubaki_t1:20190128000332j:plain
シェーダーを選択しつつマテリアルを作ると、シェーダー名と同じマテリアルを作れる

まず初期設定、特に何もない状態のシェーダーを適応してみます。頂点カラーも、いつもの模様も表示されません。

f:id:tsubaki_t1:20190127235202j:plain
初期状態

頂点カラーを付けます。Vertex Colorノードを追加して、Albedoに登録します。

f:id:tsubaki_t1:20190127235338j:plain
頂点カラーを追加

SampleTexture2Dを追加して、テクスチャから色情報を取得するようにします。その際、頂点カラーも混ぜたいので、Multipleで色を合成します。

なおProBuilderの何時ものテクスチャファイルはpackages/ProBuilder/ProBuilder/Resources/Texture/GridBox_Default.pngにあります。普通に検索しても出てこないので注意です。

f:id:tsubaki_t1:20190127235635j:plain
テクスチャの合成

各手順の間にSaveAssetボタンを押して、シェーダーを反映させるのを忘れずに。

…もしかしたらProBuilder v4で解決してるかもしれませんが、未確認