見出し画像

[Unity Shader Graph] Dissolve Shader消えていくシェーダー

unity version 2021.3.14f1

RPはURPを使用しています。
Built-inRPの場合はPackage ManagerからShaderGraphのインストールが必要です。

参考元

Shader Graph

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、ノードを作成

  1. Positionノードを作成しSpaceをObjectにする

  2. Rotate About Axisノードを2つ作成しPositionノードをそれぞれのInに繋ぐ
    値は以下のように入力
    Axis x,0 y,1 z,0 Rotation90
    Axis x,1 y,0 z,0 Rotation90

  3. Simple Noiseノードを3つ作成し先に作成した3つのノードをそれぞれのUVに繋ぐ

  4. Floatノードを作成しノードを右クリックしConvert To >> Propertyからプロパティ化する
     名前は任意。ここではNoiseScaleとしておく
    値は30ぐらいにする。これも任意で調整

  5. Floatノードを3つのSimple NoiseノードのScaleに繋ぐ

  6. Addノードを作成しSimpleNoiseノードのうち2つをAとBに繋ぐ

  7. もう一つAddノードを作成し残ったSimpleNoiseノードとAddノードをAとBに繋ぐ

  8. Remapノードを作成し2つ目のAddノードをInに繋ぐ
    値は任意で調整。
    ここでは In Min Max x,0.3 y,2.5 Out Min Max x,0 y,1とする

  9. Stepノードを2つ作成しRemapノードをそれぞれのEdgeに繋ぐ

  10. Floatノードを作成しプロパティ化してStepノードのInに繋ぐ(これをStepノード1とする)
    名前は任意。ここではDissolveとしておく
    この値の変化でオブジェクトが消えていくことになる
    プロパティを選択しGraph InspectorのNodeSettingsのModeをSliderにしておくと確認しやすい

  11. もう1つFloatノードを作成する
    値は任意。ここでは-0.02とする
    この値は消えていく境目のところを別の色にするための値で境目の太さを調整できる

  12. Addノードを作成し2つのFloatノードをAとBに繋ぐ

  13. Addノードを残ったStepノードのInに繋ぐ(これをStepノード2とする)

  14. Colorノードを作成する
    これがオブジェクトの色になる

  15. Multiplyノードを作成しColorノードとStepノード1をAとBに繋ぐ

  16. One Minusノードを作成しStepノード2を繋ぐ

  17. Colorノードを作成しプロパティ化
    これは境目の色になる

  18. Multiplyノードを作成しOne MinusノードとColorノードをAとBに繋ぐ
    境目を発光させたい場合はこれをFragmentのEmissionに繋ぐ

  19. Addノードを作成し15と18で作成したMultiplyをAとBに繋ぐ

  20. AddノードをFragmentのBaseColorに繋ぐ

  21. Stepノード1をFragmentのAlphaに繋ぐ

  22. ウィンドウ左上のSaveAssetをクリック

3、マテリアルを作成

  1. Projectウィンドウで右クリックからCreate >> Materialで作成
    ShaderGraphファイル上から行うとそのままShaderGraphが設定される

  2. MaterialファイルにShader Graphファイルをドラッグ&ドロップする

4、オブジェクトを作成

  1. Hierarchyウィンドウで右クリック>>3D Objectから3Dモデルを作成

  2. 作成した3Dモデルを選択しInspectorウィンドウのMesh RendererのMaterialsで作成したマテリアルに変更する

5、確認

Materialファイルを選択しInspectorウィンドウでプロパティ化したノードのDissolveの値を調整して消えるかを確認する

説明が間違っている可能性があります自分でも調べて確認してみてください

いいなと思ったら応援しよう!