Shaders de particules

Les shaders de particules sont un type spécial de vert shader qui s'exécute avant que l'objet ne soit dessiné. Ils sont utilisés pour calculer les propriétés des matériaux telles que la couleur, la position et la rotation. Ils sont dessinés avec n'importe quel matériau de base de CanvasItem ou Spatial, selon qu'ils sont 2D ou 3D.

Les shaders de particules sont uniques car ils ne sont pas utilisés pour dessiner l'objet lui-même. Ils sont utilisés pour calculer les propriétés des particules, qui sont ensuite utilisées par le shader du CanvasItem ou du Spatial. Ils ne contiennent qu'une fonction de processeur de sommet qui a plusieurs propriétés en sortie (voir les propriétés intégrées ci-dessous).

Les shaders de particules utilisent un shader de feedback de transformation, qui est un type spécial de vertex shader qui fonctionne tout seul. Il prend les données d'entrée dans un tampon comme le fait un vertex shader ordinaire, mais il sort également les données vers un tampon au lieu de les envoyer vers le fragment shader pour le traitement des pixels. Pour cette raison, les shaders de feedback de transformation peuvent s'appuyer sur eux-mêmes à chaque exécution, contrairement aux autres shaders qui rejettent les données qu'ils ont calculées une fois qu'ils dessinent dans le tampon de trame.

Note

Les shaders de particules sont uniquement disponibles dans le backend GLES3. Si vous avez besoin de particules dans GLES2, utilisez des CPUParticles.

Mode de rendu

Mode de rendu

Description

keep_data

Ne pas effacer les données précédentes au redémarrage.

disable_force

Désactiver la force d'attraction. (Pas actuellement implémenté dans la 3.1)

disable_velocity

Ignorer la valeur de VELOCITY.

Variables intégrées

Les valeurs marquées comme "in" sont en lecture seule. Les valeurs marquées comme "out" sont pour l'écriture facultative et ne contiendront pas nécessairement de valeurs sensibles. Les valeurs marquées comme "inout" fournissent une valeur par défaut sensible et peuvent éventuellement être réécrites. Les échantillonneurs ne sont pas soumis à l'écriture et ne sont pas marqués.

Variables intégrées Globales

Les modules intégrés globaux sont disponibles partout, y compris dans les fonctions personnalisées.

Intégré

Description

in float TIME

Temps global, en secondes.

Variables intégrées de sommet

Afin d'utiliser la variable COLOR dans un SpatialMaterial, définissez use_vertex_as_albedo sur true. Dans un ShaderMaterial, accédez-y avec la variable COLOR.

Intégré

Description

inout vec4 COLOR

Couleur de particule, peut être écrit et accessible dans la fonction vertex du mesh.

inout vec3 VELOCITY

La vélocité des particules, peut être modifiée.

out float MASS

Masse de particules, utilisation pour les attracteurs (non implémentée en 3.1).

inout bool ACTIVE

true quand la particule est active, peut être réglé sur false.

in bool RESTART

true quand la particule doit redémarrer (cycle de vie).

inout vec4 CUSTOM

Données personnalisées des particules. Accessible depuis le shader de la maille comme INSTANCE_CUSTOM.

inout mat4 TRANSFORM

Transformation de particules.

in float LIFETIME

Durée de vie des particules.

in float DELTA

Durée du processus Delta.

in uint NUMBER

Numéro unique depuis le début de l'émission.

in int INDEX

Indice de particule (sur le nombre total de particules).

in mat4 EMISSION_TRANSFORM

Transformation de l'émetteur (utilisée pour les systèmes non locaux).

in uint RANDOM_SEED

Graine aléatoire utilisée comme base pour le hasard.