見出し画像

【Unity】シェーダー学習ログ #2

ShaderGraphを使いたい

前回、勉強中にShaderGraphなる物の存在を知ってしまった。これは禁断の果実感が半端ない。内心、入門書読みながら「HLSLとかShaderLabとか覚えるのつらみー!」と思っていたところなので、渡りに船といった所だ。

まあ、Blenderのシェーダーもノードで弄るような時代だからなぁ(全く使いこなせてないが)。とにかく、この視覚的にシェーダー弄れるShaderGraphが、Unity 2019以降では条件付きで使えるようになっているらしいのだ。

その条件、というのは「URPもしくはHDRPを使え」というものだ。詳しい話は上述の記事を見てもらえば一目瞭然なのだが、「とりまURP使っときゃよくね?」みたいな雰囲気を感じたので、そいつでやってみる事にした。

URPでShaderGraphを試す

画像1

いつもプロジェクトを作るとき「このUniversalなんたらってなんじゃろ」と思ってたのだが、これが俗に言うURP向けのプロジェクトになるらしい。

使い方としては、ひとまずこちらを参考にした。

画像2

まずは、UnlitGraphを作ってみる。

画像3

このとおり。こいつをダブルクリックすると、グラフエディタが開く。

画像5

よくわからないが、直感的にColorノードを追加してMasterに繋げてやる。

画像4

それをメッシュに適用したらノーコーディングで色ついた!すごっ!

ちなみに、作ったグラフから従来のHLSL+ShaderLabの中身を見る事もできるけど、内容がすごすぎて何を書いてるのかさっぱりだ。

半透明奴を移植する

画像6

あと、前回HLSLで作った半透明奴をShaderGraphに置き換えてみる。各種ベクトルはそれぞれ「Space」とかいうのを指定できるみたいだが、最終的にはワールド座標に変換されてりゃいいはずだったので、それぞれWorldを指定しておく(…っていう理解でいいんだよなたぶん。自信が無さ過ぎる。)

あと、この動画の13:10頃を見た感じだと、ViewDirectionは自力で正規化してやる必要があるらしいので、Normalizeノードを噛ませた上で、NormalVectorと内積を取ればおkらしい。というわけで

画像8

できたー!(大満足)

いやまあ、ぶっちゃけ前回と結果自体は同じなのだけれど、HLSLで書くよりグラフでシェーダー組み立てたほうが楽だわねー。適宜プレビューしながら確認できるので、どこかでミスってたら気づきやすいのが大きいかも。

画像8

あと、BlackBoardとやらを使えば、ノードに流し込む値をInspector上で設定できるようになる模様。ColorやVectorとかのノードを右クリックして「Convert To Property」を選べば、爆速でプロパティ化できるのが素敵。

次回へ続く

画像9

とりあえず今回はここまで。次回は、さっきのエフェクト作成の動画をガッツリ見ながら進めてみようかねー。

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