Unity ShaderGraph 入門
Unityの「ShaderGraph」の使い方をまとめました。
・Unity 2019.4.5f1
1. ShaderGraph
「ShaderGraph」は、Unityエディタ上で動くノードベースのシェーダーエディタです。コードを記述する代わりに、「ノード」と呼ばれるブロックを「線」で繫ぐことで、視覚的に「シェーダー」を作成することができます。
「ShaderGraph」は、Unityバージョン2018.1以降(リリース版は2019.1以降)で利用できます。「SRP」(つまり「URP」「HDRP」)のプロジェクト作成時に、自動的にプロジェクトにインストールされます。ただし、「Built-inレンダラー」との互換性はありません。
2. ShaderGraph作成の準備
「ShaderGraph」の作成の準備を行います。
(1) Unityのプロジェクトをテンプレート「Universal Render Pipeline」で作成。
「ShaderGraph」の利用には「SRC」のプロジェクトである必要があります。
(2) Projectウィンドウの「+ → Create → Shader → PBR Graph」で「PBR Graph」を作成し、「MyShader」と名前を指定。
「URP」は現在、次のGraph種別を使用できます。
・Unlit Graph : ライトを用いないシェーダー
・PBR Graph : ライトを用いたシェーダー
・VFX ShaderGraph : VFX Graph用のシェーダー
・Sub Graph : 外部から参照するためのシェーダー
(3) 「MyShader」をダブルクリック。
「ShaderGraphウィンドウ」が表示されます。
・ ブラックボード : シェーダーのプロパティを管理するウィンドウ。
・ マスターノード : 出力を決定する最後に接続するノード。
・ プレビューウィンドウ : 現在のシェーダー出力をプレビューするウィンドウ。
3. マスターノードの色の変更
マスターノードの色を変更するには、「Albedo」(拡散反射光(Diffuse))で色を変更します。赤にすると、プレビューも赤くなります。
4. Simple Noiseノードの追加
「Simple Noise」は、シンプルなノイズを適用するノードです。
(1) ShaderGraphウィンドウの右クリック「Create Node → Simple Noise」で「Simple Noise」を追加。
(2) 「Simple Noise」の「Out」と「マスターノード」の「Emission」に線で繋ぐ。
(3) 「Simple Noise」の「X」を変更することで、プレビューのノイズ量が変化することを確認。
数値入力以外に、「X」(⇔)の左右ドラッグでも値を変更することができます。
5. Fresnel Effectノードの追加
「Fresnel Effect」は、フレネル効果を適用するノードです。フレネル効果は、見る角度に応じて表面の異なる反射率の効果であり、かすめ角に近づくにつれて、より多くの光が反射されます。
「Multiply」は、2つの入力を掛け合わせた結果を出力するノードです。「Simple Noise」と「Fresnel Effect」の効果を掛け合わせて、マスターノードに適用しています。
(1) ShaderGraphウィンドウの右クリック「Create Node → Fresnel Effect」で「Fresnel Effect」を追加。
(2) ShaderGraphウィンドウの右クリック「Create Node → Multiply」で「Multiply」を追加。
(3) 「線」を以下のように繋ぐ。
(4) 「Fresnel Effect」の「X」を変更することで、プレビューの反射領域が変化することを確認。
数値入力以外に、「X」(⇔)の左右ドラッグでも値を変更することができます。
6. Colorノードの追加
「Color」は、色を適用するノードです。
(1) ShaderGraphウィンドウの右クリック「Create Node → Color」で「Color」を追加。
(2) ShaderGraphウィンドウの右クリック「Create Node → Multiply」で「Multiply」を追加。
(3) 「Color」に黄色を指定し、「線」を以下のように繋ぐ。
(4) 「Color」の色を変更することで、プレビューの色が変化することを確認。
7. プロパティの追加
「Simple Noise」の「X」を外部から操作できるように、「プロパティ」を追加します。「X」の型は「Vector 1」なので「Vector 1」を追加し、それをプロパティに変換します。
(1) ShaderGraphウィンドウの右クリック「Create Node → Vector 1」で「Vector 1」を追加し、値に500(現在の「Simple Noise」の「X」の値)を指定。
(2) 「Vector 1」の「Out」と「Simple Noise」の「X」を繋げる。
(3) 「Vector 1」を右クリックし「Convert To Property」を選択。
「ブラックボード」にもプロパティが追加されます。
(4) 「ブラックボード」で「Vector1」の名前を「Scale」に変更。
8. シェーダーの利用
Sceneビューに戻り、「Sphere」を配置し、作成したシェーダーを利用したマテリアルを適用します。
(1) Hierarchyウィンドウの「+ → 3D Object → Sphere」で「Sphere」を作成し、見えやすい位置に配置。
(2) Projectウィンドウで「+ → Material」でマテリアルを作成し、「MyShaderMat」と名前を指定。
(3) 「Sphere」に「MyShaderMat」をドラッグ&ドロップ。
(4) 「Sphere」の「MyShaderMat」の「Shader」で「Shader Graphs → My Shader」を選択。
(5) 画面に作成したシェーダーが適用されたことを確認。
(6) Inspectorウィンドウの「Scale」プロパティで、ノイズ量を設定できることを確認。
この記事が気に入ったらサポートをしてみませんか?