はじめに
ここにもある通りShaderGraphのGradientはプロパティ化出来ないため、グラデーションをマテリアルからいじれないので不便です。
WHERE is the exposed Gradient node property in Shadergraph - Unity Forum
なので何か対策方法がないか調べてみました
案1 複数のLerpを使用する
トライトーンというものを使用します
参考
メリット
・ Colorノードを使用しているためCustom Dataで色情報の受け渡しが出来る。
・ Colorを変更するだけなので調整が楽
デメリット
・複雑なグラデーションが出せない
案2 グラデーションテクスチャを使う
グラデーションテクスチャは以下のエディタ拡張で作成できます。
Genボタン押してからグラデーションテクスチャを作成できるまで若干ラグあるので注意です
あとは以下のようにノードをつなげればOKです 左下のSample Texture 2Dノード確認用なので消しても大丈夫です
メリット
・ Lerpと比べて複雑なグラデーションを作成しやすい
・ テクスチャを使用しているため同じような色合いを出したいときにテクスチャを使い回しできる
デメリット
・使用するテクスチャが増えるため容量が増える
・テクスチャにHDRなカラーを持たせることで出来ないので、徐々に発光させるみたいなグラデーションが作れない
複数のグラデーションを格納したテクスチャを使用する場合
こちらのやり方が参考になります
ShaderGraphでテクスチャのグラデーション使って色付けるやつができた。
— AKI(Flypot代表) (@frontakk) 2023年3月6日
こんな簡単だったっけ?#shadergraph #unity #vfx pic.twitter.com/3RIABSxNl4
案3 ブーリアンまたはシェーダーバリアントを使用する
以下の記事みたいすれば数種類のグラデーションを切り替えることが出来る
メリット
・ グラデーションノード使用できるので自由にグラデーションが設定できる
デメリット
・プロパティ側でグラデーションの色合いを変更できない
・処理速度またはコンパイル時間が長くなる
おわりに
どちらの方法にもメリット、デメリットがあるのでケースバイケースでやるのがいいと思います。