burnover.glsl
860 Bytes
uniform vec4 resolution;
uniform float progress;
uniform sampler2D src1;
uniform sampler2D src2;
uniform sampler2D displacement;
uniform int useTexture;
varying vec2 vUv;
void main() {
float p = progress;
vec2 uv = (vUv - vec2(0.5)) * resolution.zw + vec2(0.5);
vec4 col = vec4(0.);
vec4 heightmap = TEXTURE2D(displacement, uv).rrra;
vec4 background = TEXTURE2D(src1, uv);
vec4 foreground = TEXTURE2D(src2, uv);
float t = p * 1.2;
vec4 erosion = smoothstep(t - .2, t, heightmap);
vec4 border = smoothstep(0., .1, erosion) - smoothstep(.1, 1., erosion);
col = (1. - erosion) * foreground + erosion * background;
vec4 leadcol = vec4(1., .5, .1, 1.);
vec4 trailcol = vec4(0.2, .4, 1., 1.);
vec4 fire = mix(leadcol, trailcol, smoothstep(0.8, 1., border)) * 2.;
col += border * fire;
gl_FragColor = col;
}