shader_type canvas_item; render_mode blend_add; uniform sampler2D heat_gradient; void fragment() { float gradient = pow(max(0.0, 1.0-(length(UV-.5)*(3.0-COLOR.r))), 1.5-COLOR.r*1.0); gradient *= mix(1.0, pow(length(UV*vec2(1.7, 1.7)-vec2(0.85, 0.1))*1.5, 4.2), COLOR.r); COLOR = vec4(texture(heat_gradient, vec2(COLOR.b)).xyz, min(gradient, 1.0))*.25 * pow(COLOR.g, 2.2); }