ikoan unity 開発メモ

Unityに関するアレコレを日々つづっていこうと思います

Shader Graph 触ってみた

環境

Unity2018.2f

インストール

Window > Package Manager を選択するとPackage Manager の window が表示されます。
デフォルトでは In Project になっているので All に切り替えるとずらーーーっと。
その中から Shader Graph を選択して Install でOK。

使い方

最初ここで躓きましたw
メニューの中から、shader graph なるものを開けば
ノードベースのあのウィンドウでるのかなーと思ってたけど探せど探せどみつからない。
答えは簡単でした。
まず、Project View で Create > Shader > *** Graph を作成し、
できたAssetをダブルクリックで開くみたい。
とりあえず簡単なものを作ろうと思うので、Unlit Graph を作成。
ダブルクリックで開くと・・・、おー表示された。

shader 名のノードとUnlit Master っていうノードがすでにある。
Unlit Master のノードがすでにエラってる。
えー、なんでもこのMasterノードは、現在選択されているレンダリングパイプラインに適してないよ!って。
いやー、そんなこと言われてもなぁ・・・
ちゃんとリファレンスみるか。

えー、なになに。
シェーダグラフはビルドインのレンダラーでは使用できず、
高画質レンダーパイプラインおよび、軽量レンダーパイプラインをサポートする、と。
・・・これは結構ハードル高いな・・・

基本的にモバイル向けだから、軽量レンダーパイプラインでよさそうな気もするんだけど、

軽量レンダーパイプラインには独自のレンダリングのプロセスがあるため、それを踏まえて記述されたシェーダーが必要となります

ここ!!
自分が書くシェーダーもこれってなにがしかの対応が必要になってくるってことなのかな・・・
まぁとりあえずテストなので触るだけ触ってみよう・・・

レンダーパイプラインの切り替え

これがどこを探しても見当たらない。
リファレンスによると

Edit -> Render Pipeline -> Upgrade -> Lightweight

って書いてあるんだけど、みつからないよぅ・・・
プロジェクト新規作成するしかないのかなぁ。
とおもって、新規作成してみたら、Edit の下に Render Pipeline 見つかった
プロジェクト途中で切り替えることはできないんでしょうか?
パイプラインを切り替えるっていうことはそれだけ表現がかわるってことなんでしょうね。

オリジナルのレンダーパイプラインをせっとすれば、あるいは・・・?

Graphics Settings に Render Pipeline Asset っていうのを入れる箇所がある。
これをなんとか組み込めば、既存のプロジェクトでも shader graph で作れるのかなぁ?
と思って、LWRPで作ったプロジェクトからassetファイル持ってきて、D&Dしたけど受け付けず。
根本的に造りが違うってことなんでしょうね。

新規プロジェクトで改めて、Shader Graph 触ってみた

とりあえず Package Manager で Shader Graph をインストール
Unlit Graph を作成し、ダブルクリックするとエラーがいない!
よーし、触ってみよう。

テクスチャはりつける

まず shader 名のノードに + マークがあるから押してみる。
うーん、これはプロパティをセットするノードかな。
Texture2D選択すると、情報セットする場所が現れたので、サンプルのテクスチャを張り付ける
テスト用に適当にColorプロパティも作っておく

シェーダ内の処理をノードで作ってみる

なんとなく、空いたところで右クリックすると、あーやっぱり、ノード作成のメニューでてきた。
直感的ではないけど、まぁ。
さっき設定したプロパティのTexture2Dもあるんだけど、
Input > Texture > Sample Texture 2Dってのもある。何が違うんだろう。
プロパティのTexture2Dから引っ張ったら、SampleTexture2Dノードができた。
自作したSampleTexture2Dノードのテクスチャはどうも埋め込まれるみたい。
Material に shader セットしても、テクスチャの部分が少し暗く表示されている。

基本プロパティつくって、
プロパティノードつくって、そのノードから線のばして、どっかノードにくっつけてもいいし
何もない空間で離すと、そのプロパティに関連できるノードが絞られるから
それでつくってもいいって感じですね。なるほど、これは面白そう。

他にも checker board とかなにやらいっぱいあるなぁ。
自作で思いつかないのをshader graphで関数とか調べてつくってみて、
それを自作シェーダーにもっていくっていうのもありだよなぁ。

まとめ

出来ることは多そう。
だけど、まだpreview版だからっていうのもあるからか
触った感じはまだ使いづらいなぁ。
あとノードの機能がなんだかよくわからないのも少しもったいない気がする。
そこらへん、今度まとめてみようかな。

探しているうちに見つけたわかりやすい解説サイト

Unity 2018.1 より提供される Scriptable Render Pipeline について調べてみた - 凹みTips
上記サイトを参考にさせていただきました。
すっごくわかりやすい。
軽量レンダーパイプラインで、ライティングが数制限されるとはいえ
ドローコールを少なくして、描画が高速になるっていうのはおいしい。

ぼそっと一言

LWRP も PackageManagerから落とせるのか・・・
最初のプロジェクトもそれ落とせば、そっちで動いたのかな・・・?

さらにぼそっと一言

ノード長押しすると、他のノードが下に下がっていくの何で・・・?