はじめに
Unity version 2018から使えるShader Graph機能ですが、
Unity version 2018.2からマスターノードにPositionが追加され、
頂点シェーダーの機能が使用できるようになりました。
頂点シェーダーは、オブジェクトの各頂点に対して参照・変換ができ、オブジェクトの変形や回転などが可能になります。
そこで今回、Unity Shader Graphの勉強として平面から地形を作ってみました。
環境
・macOS Sierra 10.12.6
・Unity version 2018.2.1f1
プロジェクト作成からShader適用まで
・Lightweight RP(Preview)でプロジェクトを作成します。
・Shaderを適用するオブジェクトの作成
・Create -> Shader -> PBR Graph作成
・Shader GraphファイルからCreate -> Material作成
・Materialをオブジェクトにアタッチする。
今回使ったノード
・Simple Noise:単純なノイズ
・Remap:入力の値を再設定する。
・Multiply:乗算
・Split:入力を4つの出力R、G、BおよびAに分割する。
・Position:メッシュ頂点またはフラグメントの位置へのアクセス
↓各Nodeの役割については、こちらのサイトに詳しく書かれています。↓
https://github.com/Unity-Technologies/ShaderGraph/wiki/Node-Library
実装について
頂点座標の操作:
・Positionで各頂点座標を取得後、Splitでx, y, z座標に分割
→x, z座標はそのままVector3に繋ぐ。
→y座標はSimple Noiseに基づいた値を繋ぐ。
色の操作:
・Simple Noiseでノイズ生成後、Vector3のxに繋ぐ。
・Simple Noiseでノイズ生成後、Remapで0~1を1~0に反転させて、Vector3のyに繋ぐ。
→ノイズ0~1が緑~赤といった感じになります。
これにより、頂点座標の操作と色の操作で同じSimple Noiseを使っているため、
y座標が高いと赤く、低いと緑色になります。