初めに
Shader Graph を使うことで、Shader の書き方が分からなくても Shader を作ることができます。本記事では、Shader Graph でできることや使い方についてまとめます。
Index
Shader Graph とは
Shader とは
Shader(シェーダー)は描画方法を記述したプログラムであり、1つの Material に1つのシェーダーを設定します。
(例:デフォルトの CustomRenderTexture)
Shader "CustomRenderTexture/MyShader" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex("InputTex", 2D) = "white" {} } SubShader { Blend One Zero Pass { Name "MyShader" CGPROGRAM #include "UnityCustomRenderTexture.cginc" #pragma vertex CustomRenderTextureVertexShader #pragma fragment frag #pragma target 3.0 float4 _Color; sampler2D _MainTex; float4 frag(v2f_customrendertexture IN) : COLOR { float2 uv = IN.localTexcoord.xy; float4 color = tex2D(_MainTex, uv) * _Color; // TODO: Replace this by actual code! uint2 p = uv.xy * 256; return countbits(~(p.x & p.y) + 1) % 2 * float4(uv, 1, 1) * color; } ENDCG } } }
Shader の書き方については、別の記事にまとめておりますので、そちらをご覧ください。
Shader Graph とは
Shader を作るには上で紹介したようなコードを書く必要がありました。
バージョン2018.1 以降の Unity では Shader Graph という Shader の書き方が分からなくても Shader を作ることができる機能が追加されました。
Shader Graph アセットの作り方
準備
Shader Graph は HD レンダーパイプライン (HDRP) とユニバーサルレンダーパイプライン (URP) にのみ対応しています。現在、Shader Graph は HDRP および URP パッケージに含まれています。
HDRP や URP をプロジェクトに追加するには、次の方法があります。
- プロジェクト作成の際に、はじめからこれらが含まれているテンプレートを選ぶ
- Package Manager から追加する
HDRP または URP パッケージをインストールすると、自動的に Shader Graph を読み込みます。
Create > Rendering から URP Assets を作成し、Edit > Project Settings の Graphics にある Scriptable Render Pipeline Settings に設定します。
Shader Graph アセットの作成
Assets で右クリック > Create > Shader Graph から作成したい Shader Graph を選択します。
Lit は光の影響をうける、Unlit は光の影響をうけないシェーダーになります。
Lit Shader Graph を作ってみます。
Shader Graph ウィンドウ
Shader Graph ウィンドウで Shader を作成していきます。
Shader Graph ウィンドウの開き方
- 作成した Shader Graph アセットをダブルクリック
- Inspector の Open Shader Editor をクリックする
Shader Graph を使ってみる
Shader Graph の基本操作を実際に Shader を作りながら確認します。
今回作る Shader Graph
最も簡単だと思われる色だけ変更できる Shader を作成します。
基本的な流れ
- 新しいシェーダーグラフを作る
- Blackboardに必要な変数を用意する
- ノードをつないでシェーダーを作る
- 新しいマテリアルを作って設定を行う
新しいシェーダーグラフを作る
Lit Shader Graph または Unlit Shader Graph を作成します。
※本記事では、Lit Shader Graph で作っていますが、色を変えるだけで光の影響を考える必要がないので、Unlit で良いです。
Blackboardに必要な変数を用意する
Blackboard で用意するプロパティは Material から設定を変更できるものになります。今回は Material 毎に色が設定できるようにしたいので、Blackboard に Color プロパティを追加します。
余談ですが、各要素を選択すると Graph Inspector にその要素の設定が表示されることが確認できます。
ノードをつないでシェーダーを作る
プロパティをワークスペースにドラッグ&ドロップすることで、プロパティをノード化することができます。
ワークスペースでノードを繋ぎ、Shader の設定を構築していきます。
今回は、色を変えたいので、Base Color と先ほどノード化した Color を繋ぎます。
ワークスペースの操作方法は Scene ビューと同じでマウスのホイールやドラッグなどで行います。
新しいマテリアルを作って設定を行う
Assets で右クリック > Create > Material で Material を作成します。
Material の Shader を Inspector から変更します。先ほど作成した Shader に変更します。
オブジェクトにこの Material をつけて、確認しましょう。
今後の展望
本記事は入門として、書いたためこれで終了にしようと思います。
ワークスペースで右クリックすると、Create Node ができることが確認できます。本記事では、プロパティをノード化したものしか出てきませんでしたが、他のノードがあることが確認できます。
これらのノードを使いこなすことが、Shader Graph を使う上で必須になります。