0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unityで下から消えていくパーティクルのシェーダーの実装

Last updated at Posted at 2025-12-24

初めに

私はParticle System、Shader Graphは3か月ほど前から学習しているため、何かしらのミスあればご指摘をお願いします。また、これはAizu Advent Calendar 2025の25日目の記事です。下記リンクから他の投稿も是非ご覧ください!
https://adventar.org/calendars/12305

1. 使用環境

今回は以下のバージョンで実装をしました。

  • Unity: 6000.2.6f2

2. 完成形

今回は以下のようなシェーダーを実装しました。

3. Particle System側の設定

ParticleSystemData

解説
  • 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

解説

こちらのShader Graphは受け取る情報として、以下の情報があります。

  • MainTexture(Inspector側から指定)
  • UVのY座標(UVチャンネル0のY)
  • パーティクルの寿命(UVチャンネル0のZ)
  • Custom Dataのカラー情報(UVチャンネル1のXYZW)

メインとなるカラーの計算は以下のようになります。
${mainTexture} * {Custom Dataのカラー}$

アルファの値の計算は以下のようになります。
$({UV.y}-{AgePercent})*(Color計算の時に出たアルファの値)$

また、最後のStepMultiplyノードで値のしきい値を設定します。
※私はこの部分を設定しないせいでAlpha値が0にならず苦戦していました...

まとめ

シェーダーとエフェクト作成は、ほとんどの機会で同時に必要になってくるスキルだと思っています。そのため、Shader Graphを使えば、普段コードを書くことなどに慣れていなくても簡単に実装することができます。

また、Custom Dataには、Vectorというデータも存在するので、それを使ってもShader Graph側に表現したい情報を持っていけることもできます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?