はじめに
こんばんは、代表の堂前です!
明けましておめでとうございます。2018年も宜しくお願いします。
新年一発目の話題ですが、最近発表になったUnity 2018.1.0b2での「Shader Graph tool」について書いていこうと思います。
これはシェーダの編集をUE4のマテリアルエディタやShaderForgeみたいにノードベースで行うもので、(ベータ版ですが)Unity標準としてサポートされた形になります。
ある種、待望の機能ではあると思いますので取り上げるブログやツイート等もあり、かぶる話題もあるかもしれませんが・・・なるべく独自路線で取り上げようと思います。
(ネタが続く、もしくは要望があれば数回に分けて書きます。)
※検証したのはMacのUnity 2018.1.0b2になります。
導入方法
Unity側のお知らせにもありましたが、ベータ版ということもあり、サンプルプロジェクト(LightweightAndShaderGraph)でのみ確認できるような感じになっています。
ですが今回は真っさらな状態で検証したいので、新規プロジェクトに導入して確認します。
今回は以下の方法で新規プロジェクトに導入しました。
(※ベータ版ということもあり正規の方法ではありません!その点ご注意ください。)
・サンプルプロジェクトのUnityPackageManager/manifest.jsonを新規プロジェクトの同ファイルに上書きコピー。
・サンプルプロジェクトのAssets/LightweightAsset.assetを新規プロジェクトのAssets以下の適当な場所にコピー。
・新規プロジェクトの「Edit – Project Settings – Graphics」の「Scriptable Render Pipeline Settings」に先程コピーしたLightweightAsset.assetを設定する。
これで右クリックなどで「Shader Graph」が生成できるようになります!
生成されるShaderGraph
ShaderGraphを実際に生成してみます。
あっさりとそれっぽいファイルが生成されるのが分かります。
同ファイルを選択してInspectorを見ると「Open Shader Editor」の項目があります。
それを押すことでエディタが立ち上がります。
エディタが立ち上がる以外は普通のシェーダファイルの様に扱えます。
マテリアルへのドラッグで、マテリアルへのシェーダ設定も行います。
生成されたシェーダをもう少し見てみます。
そうすると、シェーダの拡張子が「.shader」ではなく「.ShaderGraph」となっているのが分かります。
表面上は同じ種類のファイルに見えますが、通常のシェーダとShaderGraphでは違う種類のファイルということになります。
ShaderGraphの中身
そんなShaderGraphファイルですが、中身はどうなっているんでしょう?
テキストエディタで中身を開いてみます。
従来の.shaderファイルと全く異なり、独自のJSON形式になっていました!
一見して意味が分からず、JSONを直にいじって修正するという雰囲気に全くなっていない事がわかります。
ShaderForgeの場合、(Unityの標準ツールではないので)読み書きするファイルは通常の.shaderとなっています。
中身はノード構成に従ったコードが自動生成されており、ノード関連の情報は(おそらく)コメントで長く記載している部分がそれに当たります。
ShaderForgeの場合は最終的に通常の.shaderになるので、制作途中まではノードエディタで作成し、最後に最適化等が必要な時は.shaderを強引に修正するということが可能でした。
が、ShaderGraphではそういったことは不可能で、エディタで全て完結する必要があります。
(そういう意味ではUE4に似てるかもしれません。)
Master種類とシェーダバリアント
ShaderGraphを作成してエディタで開くと、下図のノードのみ表示されるかと思います。
そのパラメータ項目(Albedo,Metallic等)から、PBRのパラメータを渡せばOKだというのが分かります。
PBR以外も対応出来るようで、「Create Node」の「Master」項目からPBRとUnlitが選択可能です。
Unlitを選ぶと通常のシェーダのUnlit同様、シンプルなものが作成できます。PBRを要しないものはこれにすると良いでしょう。
問題ないとは思いますが、PBRの場合はシェーダバリアント数が跳ね上がります。下画像では1280ですが、「Skip unused shader_features」がオフの場合は20480にもなります。
何かの拍子で不意に容量が大きくなることも有り得そうなので、片隅に入れておくと良いと思います。
(Unlitは4なので、ほぼ気にしなくて良いです。)
まとめ
今回はShader Graph toolについて取り上げてみました。
自分は負荷のこともどうしても考えてしまうので、(エディタ自体はほぼ使わないものの使うとしたら)後で手を加えられるShaderForgeの方にどうしても軍配が上がってしまいますが、標準でサポートするだけあり、使ってて安心感があるのではないでしょうか。
個人的には.shaderにエクスポートできる機能が欲しいですね。
折を見てもう少し使ってみて、いろいろ探ってみたいです。
【免責事項】
本サイトでの情報を利用することによる損害等に対し、株式会社ロジカルビートは一切の責任を負いません。