見出し画像

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ウィンドウ」が表示されます。

画像1

・ ブラックボード : シェーダーのプロパティを管理するウィンドウ。
・ マスターノード : 出力を決定する最後に接続するノード。
・ プレビューウィンドウ : 現在のシェーダー出力をプレビューするウィンドウ。

3. マスターノードの色の変更

マスターノードの色を変更するには、「Albedo」(拡散反射光(Diffuse))で色を変更します。赤にすると、プレビューも赤くなります。

画像2

4. Simple Noiseノードの追加

Simple Noise」は、シンプルなノイズを適用するノードです。

(1)  ShaderGraphウィンドウの右クリック「Create Node → Simple Noise」で「Simple Noise」を追加。
(2) 「Simple Noise」の「Out」と「マスターノード」の「Emission」に線で繋ぐ。

画像3

(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

(4) 「Fresnel Effect」の「X」を変更することで、プレビューの反射領域が変化することを確認。
数値入力以外に、「X」(⇔)の左右ドラッグでも値を変更することができます。

6. Colorノードの追加

Color」は、色を適用するノードです。

(1)  ShaderGraphウィンドウの右クリック「Create Node → Color」で「Color」を追加。
(2)  ShaderGraphウィンドウの右クリック「Create Node → Multiply」で「Multiply」を追加。
(3) 「Color」に黄色を指定し、「線」を以下のように繋ぐ。

画像5

(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」を繋げる。

画像6

(3) 「Vector 1」を右クリックし「Convert To Property」を選択。
「ブラックボード」にもプロパティが追加されます。

画像7

(4) 「ブラックボード」で「Vector1」の名前を「Scale」に変更。

画像8

8. シェーダーの利用

Sceneビューに戻り、「Sphere」を配置し、作成したシェーダーを利用したマテリアルを適用します。

(1) Hierarchyウィンドウの「+ → 3D Object → Sphere」で「Sphere」を作成し、見えやすい位置に配置。

画像9

(2) Projectウィンドウで「+ → Material」でマテリアルを作成し、「MyShaderMat」と名前を指定。
(3) 「Sphere」に「MyShaderMat」をドラッグ&ドロップ。
(4) 「Sphere」の「MyShaderMat」の「Shader」で「Shader Graphs → My Shader」を選択。

画像10

(5) 画面に作成したシェーダーが適用されたことを確認。

画像11

(6) Inspectorウィンドウの「Scale」プロパティで、ノイズ量を設定できることを確認。

画像12


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