save code
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
shader_type particles;
|
||||
|
||||
render_mode keep_data,disable_force,disable_velocity;
|
||||
|
||||
|
||||
|
||||
void process() {
|
||||
// CUSTOM.w tracks the particles place in the trail, in range (0..LIFETIME]
|
||||
// requires that LIFETIME = number of particles
|
||||
float amount = LIFETIME;
|
||||
|
||||
vec4 a = EMISSION_TRANSFORM * vec4(0,1,0,1);
|
||||
vec4 b = EMISSION_TRANSFORM * vec4(0,-1,0,1);
|
||||
|
||||
// start
|
||||
if(CUSTOM.w == 0.0){
|
||||
CUSTOM.w = float(INDEX)+1.0;
|
||||
|
||||
// needed to pass to draw pass
|
||||
CUSTOM.z = amount;
|
||||
|
||||
// needed to initialize in case of CUSTOM.w == 2.0
|
||||
TRANSFORM = mat4(a,a,b,b);
|
||||
}
|
||||
|
||||
// restart
|
||||
if(CUSTOM.w == amount+1.0){
|
||||
CUSTOM.w = 1.0;
|
||||
}
|
||||
|
||||
if(CUSTOM.w == 1.0){
|
||||
// sets the quad to the line to cache this frame, it is not yet visible
|
||||
TRANSFORM = mat4(a,a,b,b);
|
||||
}
|
||||
|
||||
if(CUSTOM.w == 2.0){
|
||||
// sets the right edge of the quad
|
||||
TRANSFORM[1] = a;
|
||||
TRANSFORM[2] = b;
|
||||
}
|
||||
|
||||
CUSTOM.w++;
|
||||
}
|
||||
Reference in New Issue
Block a user