パーティクルシェーダー

パーティクルシェーダーは、オブジェクトが描画される前に実行される特別なタイプの頂点シェーダーです。これらは、色、位置、回転などのマテリアル特性の計算に使用されます。 2Dか3Dかによって、CanvasItemまたはSpatialの通常のマテリアルで描画されます。

パーティクルシェーダーは、オブジェクト自体の描画には使用されないため、ユニークです。これらはパーティクルプロパティの計算に使用され、SpatialシェーダーのCanvasItemによって使用されます。これらには、複数のプロパティを出力する頂点プロセッサ関数のみが含まれています(以下のビルトインを参照)。

パーティクルシェーダーは、独自に実行される特殊なタイプの頂点シェーダーである変換フィードバックシェーダーを使用します。通常の頂点シェーダーと同様にバッファー内のデータを取り込みますが、ピクセル処理のためにフラグメントシェーダーに出力する代わりに、データバッファーに出力します。このため、トランスフォームフィードバックシェーダーは、フレームバッファーに描画した後に計算したデータを破棄する他のシェーダーとは異なり、実行ごとに自身で構築できます。

注釈

パーティクルシェーダーは、GLES3バックエンドでのみ使用できます。 GLES2でパーティクルが必要な場合は、CPUParticles を使用します。

レンダリングモード

レンダリングモード 説明
keep_data 再起動時に以前のデータをクリアしない。
disable_force アトラクターの力を無効にします。(3.1ではまだ実装されていません)
disable_velocity VELOCITY 値を無視します。

Built-ins

"in"としてマークされた値は読み取り専用です。"out"とマークされた値はオプションの書き込み用であり、必ずしも適切な値を含むとは限りません。"inout"とマークされた値は、適切なデフォルト値を提供し、オプションで書き込むことができます。サンプラーは書込みの対象ではなく、マークされていません。

Global built-ins

Global built-ins are available everywhere, including custom functions.

ビルトイン 説明
in float TIME 秒単位のグローバル時間。

頂点用ビルトイン

SpatialMaterialで COLOR 変数を使用するには、use_vertex_as_albedotrue に設定します。 ShaderMaterialで、COLOR 変数を使用してアクセスします。

ビルトイン 説明
inout vec4 COLOR パーティクルの色。メッシュの頂点関数に書き込み、アクセスできます。
inout vec3 VELOCITY パーティクルの速度は変更できます。
out float MASS パーティクルの質量、アトラクターで使用(3.1では実装されていません)。
inout bool ACTIVE パーティクルがアクティブな場合は truefalse に設定できます。
in bool RESTART パーティクルを再起動する必要がある(ライフサイクルが繰り返される)場合は true
inout vec4 CUSTOM カスタムパーティクルデータ。メッシュのシェーダーから INSTANCE_CUSTOM としてアクセス可能。
inout mat4 TRANSFORM パーティクルの変換。
in float LIFETIME パーティクルの寿命。
in float DELTA デルタプロセス時間。
in uint NUMBER 放出開始以降のユニークな番号。
in int INDEX パーティクル インデックス(パーティクル全体から)。
in mat4 EMISSION_TRANSFORM エミッタの変換(非ローカルシステムに使用)。
in uint RANDOM_SEED 乱数のベースとして使用される乱数シード。