Trail dewiggle
When using a particle trail with lots of sections, you may see an unintended wiggling artifact caused by naive interpolation. Here I use a trick to improve the interpolation by extracting the size of the TrailMesh encoded in length(VERTEX.xz)
. Apply the shader to the draw pass with trails enabled, and comment lines 11/18 to compare.
NOTE: Ribbon trails are only available in Godot 4, but you can adapt the trick to work in combo with my own trail technique for Godot 3
Shader code
shader_type spatial;
render_mode unshaded,blend_add,cull_disabled,particle_trails;
uniform sampler2D texture_albedo : source_color;
varying float scale_interp;
void vertex() {
// dewiggle
scale_interp = length(VERTEX.xz);
UV *= scale_interp;
}
void fragment() {
vec2 base_uv = UV;
// dewiggle
base_uv /= scale_interp;
vec4 albedo_tex = texture(texture_albedo,base_uv);
ALBEDO = COLOR.rgb * albedo_tex.rgb;
ALPHA *= COLOR.a * albedo_tex.a;
}