rn.log

備忘録など

 【シェーダーグラフメモ その29】ランダム頂点数の多角形を飛ばすパーティクルを作る

はじめに

今回は、シェーダーグラフとParticleSystemを組み合わせて頂点数がランダムな多角形を飛ばすパーティクルの作り方を解説します。

f:id:r-ngtm:20181222105451g:plain

 

バージョン

Unity2018.3.0f1

ShaderGraph Version4.1.0

 

作り方解説

STEP1 : ParticleSystem作成

まずはParticleSystemを作成します

f:id:r-ngtm:20181222115049p:plain

 

見やすさのため、Start Sizeを3、1秒当たりの生成数を5に設定します。

f:id:r-ngtm:20181222110017p:plain

f:id:r-ngtm:20181222110626p:plain

 

STEP2 : シェーダーグラフを作成

以下のようなシェーダーグラフを作成します

f:id:r-ngtm:20181222110149p:plain



STEP3 : シェーダーグラフをパーティクルに適用

シェーダーグラフから作成したマテリアルをParticleSystemに登録します。

f:id:r-ngtm:20181222110209p:plain

 

登録すると以下のような、灰色の四角形パーティクルになります。

f:id:r-ngtm:20181222110626p:plain

 

UnlitマスターノードのColorで設定した色がそのままパーティクルに反映されています

f:id:r-ngtm:20181222110837p:plain

 

STEP4 : パーティクルを三角形にしてみる

Polygonノードを以下のように接続すると、パーティクルが三角形になります。

UnlitマスターノードはTransparentに設定しておきます。

f:id:r-ngtm:20181222111026p:plain

f:id:r-ngtm:20181222111049p:plain

 

STEP5 : パーティクルの頂点数をランダムにする

パーティクルからランダムな値をシェーダーへ渡す

ParticleSystemのCustom Vertex StreamsRandom/Stable.xを登録すると、TEXCOORD0.zにランダムな値(0~1)が渡るようになります。

f:id:r-ngtm:20181222111152p:plain

 

シェーダーグラフからランダムな数値を利用する

シェーダーグラフでは、UVノードがTEXCOORD0に相当しており、B成分を取り出すことでTEXCOORD0.zを利用することができます。

TEXCOORD0.zには0~1のランダムな値が入っています。

 

 

f:id:r-ngtm:20181222111233p:plain

 

パーティクルの頂点数が3,4,5のいずれかでランダムで設定されるようになり、以下のようになります。

f:id:r-ngtm:20181222111358p:plain

 

Random/Stable.xの追加方法

f:id:r-ngtm:20181222111942p:plain

f:id:r-ngtm:20181222111929p:plain

f:id:r-ngtm:20181222111934p:plain

 

 

色を変えたり、重力を付けてバウンドさせてみたりするのも面白いかもしれません。

f:id:r-ngtm:20181222120503g:plain