Pref.
Unite2018Tokyoで高橋さんがご登壇された
「新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!」
の中で紹介されたUnity2018からPreview実装されているShaderGraphの機能紹介とテクニック紹介
を簡単にまとめした.
【Unite Tokyo 2018】新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!
Shader Graphとは
ノードベースのShader Editor.
グラフィカルな環境でShaderでの絵作りが可能になる.
利用することでの利点
1. 簡単にShaderを扱える
Shaderを手書きでソースから書くと難しいのに比べノードベースのShader EditorであるShader Graphは
誰でも簡単に扱うことができる.
2. 互換性
最終的な画面の描画までの様々な描画処理の流れをRender Piplineというが,従来のShaderの仕組みでは
Render PiplineごとにShaderを書き直さなければならなかったが,従来のRender Piplineは大きく
2つしか存在していなかったので特に問題は起きなかった.
しかしこれから「Scriptable Render Pipline」機能,つまりスクリプトによる
カスタムRender Piplineの登場により,Render Piplineが無数に追加が可能になる.
そういったときに従来のShaderの仕組みではそれぞれでの最適化が難しくなる.
Shader Graphは一回ShaderをShader Graph上で作成してしまえばそれら全てに対応できる仕組みになっている.
Shaderに抽象性を持たせる,結果どのレンダリングパイプラインでも使い回せるようになっている.
いわばShader GraphはSRP(Scriptable Render Pipline)世代のUnityにおいて
シェーダを組むための標準の仕組みである.
Shader Graphセットアップ手順
現在2通りの方法があるが1のLightweight-RPテンプレートを利用の方が簡単である.
1. Lightweight-RPテンプレートを利用
Unityのプロジェクトを構築するときにテンプレート「Lightweight-RP」を選択する.
2. Package Manager経由でインストール
Package Managerを利用してShader Graphをインストールする.
この方法だと私の環境では現時点でうまく行かなかったので
打開策をhttps://qiita.com/nmxi/items/cddf16f1ade9913e0780に書いておきました.
実際にShader GraphでShaderを作ってみる
UnityエディタのProjectタブ内を右クリックして,いつも通りShaderを新規作成するタブに
- PBR Graph (Phisicaly Based Rendering ライティグあり)
- Sub Grap (複雑なので今回の公演では説明は割愛)
- Unlit Graph (ライティングなし)
が追加されているので,それぞれ選択する.
するとこれまたいつも通りにファイルが生成されるので(.ShaderGraphファイル)
ダブルクリックでShader Graphのエディタ画面に移ることができる.
紹介されたノード
ノード名 | 説明 |
---|---|
Sample texture 2D | 2Dテクスチャを読み込む |
Sample Noise | ノイズを生成 |
Add | 値を足し算 |
Step | ある値以上を抽出 |
Smooth Step | Stepノードのなめらかに値が変化する版 |
Fraction | 小数点以下を返す 1.1→0.1 2.4→0.4 0.5→0.5 |
Invert Color | 色を反転 |
Time | ゲームが開始されてからの経過時間を秒で返す |
Multiply | 色を掛け合わせる |
Remap | 値一次変換 In,Min,Maxでの範囲で値の範囲で入力された値がOut,Min,Maxの範囲で出力されるように一次変換してくれる |
Lerp | 値の補間 A,Bの間を繋ぐ |
Split | ベクトルを成分に分解 Combineとセットで覚えると良い |
Combine | ベクトル成分を結合 Splitとセットで覚えると良い |
Saturate | 0~1以外の値を切り捨てる 負の値はバグになりやすいのでその点有効 |
Sine | sin波 周期的な値を生成 |
紹介されたテクニック
とても端折ってるので動画を見たほうが早いです.