ここまでShaderを理解するためにコードを読んでいましたが、UnityではGUIベースでShaderを作成できるShaderGraphと呼ばれる機能があります。
今回ShaderGraphを導入し使用していきます。
〇新しいプロジェクトを作成する
今回はUnity2019.2.9f1を使用しています。
Shader Graphを使用するためには[3D]ではなく[LWRP Template]のテンプレートを選択します。
プロジェクトの名前と保存場所を設定し作成します。
This template is a good starting point for developers focused on performance,The Lighteright Render Pipeline offers both real-time lighting and baked lighting in a single-pass forward renderer, This decreases the a mount od necessary draw calls, making LWRP idea for projects that must scale across platforms,including mobile hardware.
このテンプレートは、パフォーマンスを重視する開発者のための良い出発点です。Lighteright Render Pipelineは、シングルパスのフォワードレンダラでリアルタイムライティングとベイクドライティングの両方を提供しています。
[3D]テンプレートと異なりUnityが開いたらすぐにサンプルシーンが開きます。
[PackageManager]を開くと[Lightweight RP]がすでに導入されていることがわかります。これによってカスタムShaderを作成することができます。
〇マテリアルを作成する
Shaderを作成してUnityで表示させ見るためにまずはマテリアルを作成します。
Assets/Materials内で右クリックから[Create]で新規のマテリアルを作成します。
ここで[3D]テンプレートの場合DefaultShaderがデフォルトで設定されますが、ここでは[Lightwaight Render Pipline/Lit]がデフォルトで設定されます。
〇Shaderを作成する
では本題のShaderを作成します。
マテリアル同様Assets/Materials内で右クリックから[Create]で新規のShaderを作成します。
ここでは[Standard SurfaceShader]ではなくShaderGraphを使用するために[PBR Graph]を選択します。
作成したShaderをダブルクリックすることでShaderGraphのWindowが開きます。
[PBR Master]にプロパティがありそれぞれに対応するノードが接続されています。
〇ShaderGraphを使用する
新しいノードを作成します。これはShaderGraphのウィンドウで[スペースキー]を押すことでダイアログが開きます。
ここではノイズマテリアルを作成したいと思います。検索バーに[Noise]と検索します。
[SimpleNoise]を追加します。
[SimpleNoise]には二つのパラメータが存在します。
・UV=ノイズの適応座標
・scale=ノイズの拡大率
次にリムライトなどを再現する[Frenel Efect]のノードを追加します。
〇作成したノードをつなぐ
スペースキーでノードの追加から[Multiply]を選択し追加します。
画像のようにD&Dから線を出しノードとノードをつなぎます。
これをPBRの[Emittion]につなぎます。
これでマテリアルの発光としてリムの部分にノイズが適応されました。
〇カラーの追加
新しいノードとして[Color]を追加します。
Modeを[HDR]に変更します。HDRとはハイ・ダイナミック・レンジの意で発光など明るさにかかわる色に使用します。
2つ目の[Multiply]を追加しColorの出力と一つ目のMultiplyの出力をそれぞれつなぎます。
最後にPBRの[Emittion]にノードをつなぐことで発光色を持たせることができました。
〇保存
作成したShaderGraphを保存します。
Window上部の[Save Asset]をクリックすることで保存することができます。
〇マテリアルとしてUnityで見る
シーンウィンドウへ戻り作成したShaderをマテリアルに適応後適当なオブジェクトにマテリアルを適応しました。
これでShaderGraphを使用することができました。
まずは導入とShaderGraphがどのようなものかが理解できたので次はもっと複雑なことにチャレンジします。