Shaders Particle¶
Los shaders de partículas son un tipo especial de shader de vértices que se ejecuta antes de que el objeto sea dibujado. Se utilizan para calcular las propiedades de los materiales, como el color, la posición y la rotación. Se dibujan con cualquier material normal para CanvasItem o Spatial, dependiendo de si son 2D o 3D.
Los shaders de partículas son únicos porque no se utilizan para dibujar el objeto en sí mismo; se usan para calcular las propiedades de las partículas, que luego son utilizadas por el CanvasItem de Shader Espacial. Sólo contienen una función de procesador de vértices que da salida a múltiples propiedades (véase más adelante).
Los shaders de partículas utilizan un shader de feedback transformada. Recibe los datos en una memoria intermedia como lo hace un shader de vértices normal, pero también da salida a las memorias intermedias de datos en lugar de dar salida al shader de fragmentos para el procesamiento de píxeles. Debido a esto, los shaders de feedback de transformación pueden construirse sobre sí mismos cada vez que se ejecutan, a diferencia de otros shaders que descartan los datos que han calculado una vez que se dibujan en el frame buffer.
Nota
Los shaders de partículas sólo están disponibles en el backend GLES3. Si necesitas partículas en GLES2, usa CPUParticles.
Modos de renderizado¶
Modo de renderizado |
Descripción |
---|---|
keep_data |
No borre los datos anteriores sobre el reinicio. |
disable_force |
Desactiva la fuerza de atracción. (No se aplica actualmente a 3.1) |
disable_velocity |
Ignora el valor de VELOCIDAD. |
Funciones propias¶
Los valores marcados como "in" son de sólo lectura. Los valores marcados como "out" son de escritura opcional y no necesariamente contendrán valores sensibles. Los valores marcados como "inout" proporcionan un valor por defecto sensato y pueden escribirse opcionalmente. Los valores marcados como "in" no son objeto de escritura y no están marcados.
Funciones incorporadas globales¶
Las internas globales están disponibles en todas partes, incluyendo las funciones personalizadas.
Integrado |
Descripción |
---|---|
en real TIME |
Tiempo global, en segundos. |
Vertex built-ins¶
Para usar la variable COLOR
en un SpatialMaterial, ponga use_vertex_as_albedo
en true
. En un ShaderMaterial, accede a él con la variable COLOR
.
Integrado |
Descripción |
---|---|
inout vec4 COLOR |
El color de las partículas, se puede escribir y acceder a la función de vértice de la malla. |
inout vec3 VELOCITY |
La velocidad de las partículas, puede ser modificada. |
out real MASS |
Masa de partículas, usado para los atractores (no implementado en 3.1). |
inout booleano ACTIVE |
|
in booleano RESTART |
|
inout vec4 CUSTOM |
Datos de partículas personalizadas. Accesible desde el shader de malla como INSTANCE_CUSTOM. |
inout mat4 TRANSFORM |
Transformación de partícula. |
in real LIFETIME |
La vida de las partículas. |
in real DELTA |
Tiempo de proceso Delta. |
in uint NUMBER |
Un número único desde el comienzo de la emisión. |
in int INDEX |
Índice de partículas (de partículas totales). |
in mat4 EMISSION_TRANSFORM |
Transformación del emisor (utilizado para sistemas no locales). |
in uint RANDOM_SEED |
Semillas al azar usadas como base para el azar. |