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 |
|
in bool RESTART |
|
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. |