テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】ShaderGraphで頂点シェーダーを使用してみる

Unity 2018.2から使用できるShaderGraph 3.0から頂点シェーダーの機能が使用できるようになったので、使ってみました。

 

 

ShaderGraph3.0

これを動かすには、ShaderGraphとLWRPを3.0に上げる必要がありました。

f:id:tsubaki_t1:20180728225109j:plain

Unity 2018.2のShaderGraph 3.0から、マスターノードにはPositionという新しい項目が追加されました。この項目が頂点一つ一つの座標になります。

f:id:tsubaki_t1:20180728222500j:plain

なので、この頂点情報にCos(Time)の分だけ座標を上下してやれば、上下に玉が動くと、そんな感じです。

 

とりあえず上下に移動するだけのシェーダーを作る

まずは頂点シェーダーの動作を確認する為、オブジェクトが上下に動くだけのシェーダーを作ってみます。

 

まず、特に何もしていない状態です。
Position(Object)で取得した座標を、そのままPositionへ出力しています。

f:id:tsubaki_t1:20180728222730j:plain

時間で上下するベクトルを作ります。
float3(0, cos(_Time.x))な感じです。

f:id:tsubaki_t1:20180728222815j:plain

頂点の初期座標と、時間で上下するベクトルを加算して、最終ノードに出力するようにします。

f:id:tsubaki_t1:20180728222910j:plain

これでオブジェクトが上下に動くシェーダーが出来ました。

f:id:tsubaki_t1:20180728225230g:plain

f:id:tsubaki_t1:20180728225221j:plain

 

なお、動くのは頂点だけでバウンディングボックスは動いてないので、あまり上下に動かすと途中で消えたりするので注意です。

 

旗も作ってみる

ともちゃラボさんの記事を参考に、旗の動きとかも作ってみました。
コードをそのままシェーダーグラフのノードに書き直したら動いた感じです。

f:id:tsubaki_t1:20180728223319j:plain

f:id:tsubaki_t1:20180728220717g:plain

nn-hokuson.hatenablog.com

感想

結構簡単に頂点シェーダーでモデルを動かすことが出来ました。

ShaderGraphで色を色々試行錯誤するよりは、完成形ありきで作る感ありますが、中々に楽しいです。