初めに
私はParticle System、Shader Graphは3か月ほど前から学習しているため、何かしらのミスあればご指摘をお願いします。また、これはAizu Advent Calendar 2025の25日目の記事です。下記リンクから他の投稿も是非ご覧ください!
https://adventar.org/calendars/12305
1. 使用環境
今回は以下のバージョンで実装をしました。
- Unity: 6000.2.6f2
2. 完成形
今回は以下のようなシェーダーを実装しました。
3. Particle System側の設定
解説
-
Custom Data
オンにして1以上の明るさを持たせてAlpha値を調整します。 -
Renderer
Render ModeをMeshに変更してMeshesに使用するMeshを入れます。
Materialに解説するShader Graphで作成したマテリアルを追加します。
Custom Vertex Streamsを有効にしてAgePercent、StableRandom.x、Custom1.xyzwを下のプラスから追加します。 -
Shader Graph側では、UV、AgePercent、Custom1.xyzwを使用します。AgePercentには、各パーティクルの残りの寿命の割合が0~1で保存されています。Custom1.xyzwには、Custom Dataで設定したカラーが保存さています。
4. Shader Graph概要
解説
こちらのShader Graphは受け取る情報として、以下の情報があります。
- MainTexture(Inspector側から指定)
- UVのY座標(UVチャンネル0のY)
- パーティクルの寿命(UVチャンネル0のZ)
- Custom Dataのカラー情報(UVチャンネル1のXYZW)
メインとなるカラーの計算は以下のようになります。
${mainTexture} * {Custom Dataのカラー}$
アルファの値の計算は以下のようになります。
$({UV.y}-{AgePercent})*(Color計算の時に出たアルファの値)$
また、最後のStepとMultiplyノードで値のしきい値を設定します。
※私はこの部分を設定しないせいでAlpha値が0にならず苦戦していました...
まとめ
シェーダーとエフェクト作成は、ほとんどの機会で同時に必要になってくるスキルだと思っています。そのため、Shader Graphを使えば、普段コードを書くことなどに慣れていなくても簡単に実装することができます。
また、Custom Dataには、Vectorというデータも存在するので、それを使ってもShader Graph側に表現したい情報を持っていけることもできます。

