【Unity】ShaderGraphで頂点シェーダーを使用してみる
Unity 2018.2から使用できるShaderGraph 3.0から頂点シェーダーの機能が使用できるようになったので、使ってみました。
ShaderGraph3.0
これを動かすには、ShaderGraphとLWRPを3.0に上げる必要がありました。
Unity 2018.2のShaderGraph 3.0から、マスターノードにはPositionという新しい項目が追加されました。この項目が頂点一つ一つの座標になります。
なので、この頂点情報にCos(Time)の分だけ座標を上下してやれば、上下に玉が動くと、そんな感じです。
とりあえず上下に移動するだけのシェーダーを作る
まずは頂点シェーダーの動作を確認する為、オブジェクトが上下に動くだけのシェーダーを作ってみます。
まず、特に何もしていない状態です。
Position(Object)で取得した座標を、そのままPositionへ出力しています。
時間で上下するベクトルを作ります。
float3(0, cos(_Time.x))な感じです。
頂点の初期座標と、時間で上下するベクトルを加算して、最終ノードに出力するようにします。
これでオブジェクトが上下に動くシェーダーが出来ました。
なお、動くのは頂点だけでバウンディングボックスは動いてないので、あまり上下に動かすと途中で消えたりするので注意です。
旗も作ってみる
ともちゃラボさんの記事を参考に、旗の動きとかも作ってみました。
コードをそのままシェーダーグラフのノードに書き直したら動いた感じです。
感想
結構簡単に頂点シェーダーでモデルを動かすことが出来ました。
ShaderGraphで色を色々試行錯誤するよりは、完成形ありきで作る感ありますが、中々に楽しいです。