Only the brightest pixels in the frame catch fire and tear.
GLSL fragment shader
The effect's own code. The uniforms and helpers above it — uTex, uFeedback, the depth proxy, the frame ring, depthAt(), timeAt() — are the same header every Ether-MOSH shader opens with, and are documented once on the registry rather than reprinted on all 143 pages.
void main(){ vec4 base = texture2D(uTex, vUv); float lum = dot(base.rgb, vec3(0.299, 0.587, 0.114)); // A luminance key: only pixels brighter than the threshold catch fire. float burnMask = smoothstep(uThreshold, uThreshold + 0.1, lum); // Vertical tearing + heat shimmer float heat = noise(vUv * 20.0 - vec2(0.0, uTime * 2.0)); float tear = (noise(vec2(vUv.x * 50.0, uTime * 15.0)) - 0.5) * 0.1; vec2 fireUv = fract(vUv + vec2(tear * burnMask, heat * 0.05 * burnMask)); vec3 fire = texture2D(uTex, fireUv).rgb; // A glowing orange rim on whatever is burning fire += vec3(1.0, 0.3, 0.0) * burnMask * uAmount * (0.5 + heat); gl_FragColor = vec4(mix(base.rgb, fire, burnMask * clamp(uAmount * 2.0, 0.0, 1.0)), base.a); }