shader_type canvas_item; render_mode blend_mix; uniform float fire_progression = 0; uniform sampler2D flame_noise: repeat_enable; uniform sampler2D ash_gradoent: repeat_disable; uniform sampler2D help: hint_screen_texture; vec3 RNGV3(vec3 p) { vec3 a = fract(sin(vec3(p.x, p.y, p.z)) * vec3(111.11,333.33,444.44)); a += dot(a, a+33.51); return fract(vec3(a.x*a.y, a.y*a.z, a.z*a.x)); //outputs a random vec2 between 0 and 1 } vec4 voronoy(vec3 loc, float scale){ loc = loc*scale; vec4 output = vec4(0., 0., 0., 10.); for(float y=-1.; y<=1.; y++){ for(float x=-1.; x<=1.; x++){ for(float z=-1.; z<=1.; z++){ vec3 offs = vec3(x,y,z); vec3 n = RNGV3(floor(loc)+offs)*2.0-1.0; vec3 p = offs+sin(n) * .5; float d = length((fract(loc)-0.5)-p); if(d