/*{ "CATEGORIES": [ "Wipe" ], "CREDIT": "Automatically converted from https://www.github.com/gl-transitions/gl-transitions/tree/master/TVStatic.glsl", "DESCRIPTION": "", "INPUTS": [ { "NAME": "startImage", "TYPE": "image" }, { "NAME": "endImage", "TYPE": "image" }, { "DEFAULT": 0, "MAX": 1, "MIN": 0, "NAME": "progress", "TYPE": "float" }, { "DEFAULT": 0.05, "MAX": 1, "MIN": 0, "NAME": "offset", "TYPE": "float" } ], "ISFVSN": "2" } */ vec4 getFromColor(vec2 inUV) { return IMG_NORM_PIXEL(startImage, inUV); } vec4 getToColor(vec2 inUV) { return IMG_NORM_PIXEL(endImage, inUV); } // author: Brandon Anzaldi // license: MIT // Pseudo-random noise function // http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/ highp float noise(vec2 co) { highp float a = 12.9898; highp float b = 78.233; highp float c = 43758.5453; highp float dt= dot(co.xy * progress, vec2(a, b)); highp float sn= mod(dt,3.14); return fract(sin(sn) * c); } vec4 transition(vec2 p) { if (progress < offset) { return getFromColor(p); } else if (progress > (1.0 - offset)) { return getToColor(p); } else { return vec4(vec3(noise(p)), 1.0); } } void main() { gl_FragColor = transition(isf_FragNormCoord.xy); }