[Unity Shader Graph] Dissolve Shader消えていくシェーダー
unity version 2021.3.14f1
RPはURPを使用しています。
Built-inRPの場合はPackage ManagerからShaderGraphのインストールが必要です。
参考元
1、Shader Graphを作成
Projectウィンドウで右クリックからCreate >> Shader Graph >> URP >> Lit Shader Graph を選択してファイルを作成
Unlit Shader Graphでも大丈夫です。
Shader Graphファイルをダブルクリックするとウィンドウが開く
ウィンドウ上で右クリックからCreate NodeでNode検索ウィンドウが出てノードを作成できる
※Create NodeをクリックしてもNode検索ウィンドウが表示されない場合はShader Graphのウィンドウ上で一度左クリックしてみる
使用するノード
Simple Noise:ノイズを生成して出力
Rotate About Axis:入力ベクトル In を、Rotation の値の分だけ、軸 Axis を中心に回転させます。回転角度の単位は Unit パラメーターで選択できます。(入力された値を特定の軸で回転して出力するっぽい)
Float:浮動小数値を1つ出力
Color:色を出力
Add:2つの入力値を足し合わせる(加算)
Multiply:2つの入力値を掛け合わせる(乗算)
Position:ノードが属するグラフセクションで有効な シェーダステージ に応じて、メッシュの頂点あるいはフラグメントの 位置 (Position) へのアクセスを提供します。Space ドロップダウンパラメーターで、出力値の座標空間を選択できます。(よくわかっていない)
Dot Product:入力値のドット積 (点乗積)、あるいはスカラー積 (内積) を出力(よくわかっていない)
Remap:入力された値を指定の範囲内に変換して出力
Step:範囲外の値を切り捨てる
2、ノードを作成
Positionノードを作成しSpaceをObjectにする
Rotate About Axisノードを2つ作成しPositionノードをそれぞれのInに繋ぐ
値は以下のように入力
Axis x,0 y,1 z,0 Rotation90
Axis x,1 y,0 z,0 Rotation90Simple Noiseノードを3つ作成し先に作成した3つのノードをそれぞれのUVに繋ぐ
Floatノードを作成しノードを右クリックしConvert To >> Propertyからプロパティ化する
名前は任意。ここではNoiseScaleとしておく
値は30ぐらいにする。これも任意で調整Floatノードを3つのSimple NoiseノードのScaleに繋ぐ
Addノードを作成しSimpleNoiseノードのうち2つをAとBに繋ぐ
もう一つAddノードを作成し残ったSimpleNoiseノードとAddノードをAとBに繋ぐ
Remapノードを作成し2つ目のAddノードをInに繋ぐ
値は任意で調整。
ここでは In Min Max x,0.3 y,2.5 Out Min Max x,0 y,1とするStepノードを2つ作成しRemapノードをそれぞれのEdgeに繋ぐ
Floatノードを作成しプロパティ化してStepノードのInに繋ぐ(これをStepノード1とする)
名前は任意。ここではDissolveとしておく
この値の変化でオブジェクトが消えていくことになる
プロパティを選択しGraph InspectorのNodeSettingsのModeをSliderにしておくと確認しやすいもう1つFloatノードを作成する
値は任意。ここでは-0.02とする
この値は消えていく境目のところを別の色にするための値で境目の太さを調整できるAddノードを作成し2つのFloatノードをAとBに繋ぐ
Addノードを残ったStepノードのInに繋ぐ(これをStepノード2とする)
Colorノードを作成する
これがオブジェクトの色になるMultiplyノードを作成しColorノードとStepノード1をAとBに繋ぐ
One Minusノードを作成しStepノード2を繋ぐ
Colorノードを作成しプロパティ化
これは境目の色になるMultiplyノードを作成しOne MinusノードとColorノードをAとBに繋ぐ
境目を発光させたい場合はこれをFragmentのEmissionに繋ぐAddノードを作成し15と18で作成したMultiplyをAとBに繋ぐ
AddノードをFragmentのBaseColorに繋ぐ
Stepノード1をFragmentのAlphaに繋ぐ
ウィンドウ左上のSaveAssetをクリック
3、マテリアルを作成
Projectウィンドウで右クリックからCreate >> Materialで作成
ShaderGraphファイル上から行うとそのままShaderGraphが設定されるMaterialファイルにShader Graphファイルをドラッグ&ドロップする
4、オブジェクトを作成
Hierarchyウィンドウで右クリック>>3D Objectから3Dモデルを作成
作成した3Dモデルを選択しInspectorウィンドウのMesh RendererのMaterialsで作成したマテリアルに変更する
5、確認
Materialファイルを選択しInspectorウィンドウでプロパティ化したノードのDissolveの値を調整して消えるかを確認する