Wind line
Works in Godot 4. Converted it from my Godot 3.5 project, not really sure if this shader will work with Godot 3.5.
How To use it?
1. Make a 3d model like the one on the gif or something.
2. Create a particles node and add the mesh to draw passes.
3. Under surface 0 create a new ShaderMaterial.
4. Under the shader option create a shader and add the code.
Shader code
shader_type spatial;
render_mode cull_disabled, specular_schlick_ggx, unshaded;
void vertex() {
// Output:0
}
void fragment() {
// Input:5
vec3 n_out5p0 = vec3(UV, 0.0);
// Input:2
float n_out2p0 = TIME;
// Scalar:30
float n_out30p0 = 1.200000;
// ScalarOp:31
float n_out31p0 = n_out2p0 / n_out30p0;
// ScalarFunc:14
float n_out14p0 = tan(n_out31p0);
// ScalarOp:13
float n_in13p1 = 0.10000;
float n_out13p0 = n_out14p0 / n_in13p1;
// VectorCompose:7
float n_in7p0 = 0.00000;
float n_in7p2 = 0.00000;
vec3 n_out7p0 = vec3(n_in7p0, n_out13p0, n_in7p2);
// DotProduct:10
float n_out10p0 = dot(n_out5p0, n_out7p0);
// ScalarFunc:12
float n_out12p0 = -(n_out10p0);
// ScalarFunc:15
float n_out15p0 = min(max(n_out12p0, 0.0), 1.0);
// ScalarFunc:17
float n_out17p0 = 1.0 - n_out15p0;
// ScalarFunc:20
float n_out20p0 = fract(n_out17p0);
// ScalarFunc:18
float n_out18p0 = atan(n_out20p0);
// Scalar:22
float n_out22p0 = 0.350000;
// ScalarOp:21
float n_out21p0 = n_out18p0 * n_out22p0;
// ScalarFunc:28
float n_out28p0 = -(n_out10p0);
// Input:34
float n_out34p0 = TIME;
// Scalar:33
float n_out33p0 = 200.000000;
// ScalarOp:32
float n_out32p0 = n_out34p0 / n_out33p0;
// ScalarOp:35
float n_out35p0 = n_out28p0 * n_out32p0;
// ScalarFunc:23
float n_out23p0 = roundEven(n_out35p0);
// ScalarFunc:25
float n_out25p0 = min(max(n_out23p0, 0.0), 1.0);
// ScalarFunc:26
float n_out26p0 = tan(n_out25p0);
// ScalarOp:24
float n_out24p0 = n_out21p0 * n_out26p0;
// Input:11
vec3 n_out11p0 = COLOR.rgb;
// Output:0
ALPHA = n_out24p0;
EMISSION = n_out11p0;
}
void light() {
// Output:0
}

shader_type spatial; render_mode blend_mix, cull_disabled, unshaded; void fragment() { float edge_fade = 1.0 - length(UV * 2.0 - 1.0); float wave = sin(TIME * 2.0 + UV.x * 3.0) * 0.5 + 0.5; float alpha = edge_fade * wave; alpha = smoothstep(0.0, 0.8, alpha); float flicker = sin(TIME * 5.0 + UV.y * 10.0) * 0.1 + 0.9; ALPHA = alpha * flicker * 0.7; vec3 base_color = COLOR.rgb; EMISSION = base_color * (wave * 0.5 + 0.5); }created another version of this, maybe could be helpful for someone
You saved my live with this, thanks a bunch 🙂