Back to shaders
Shader test bench
Dreamy.fs
runnable fragment
Complete GLSL fragment shader. Stronghold runs it directly when the browser can compile it.
Code
uniform sampler2D startImage;
uniform sampler2D endImage;
uniform float progress;
precision mediump float;
/*
{
"ISFVSN" : "2",
"INPUTS" : [
{
"TYPE" : "image",
"NAME" : "startImage"
},
{
"NAME" : "endImage",
"TYPE" : "image"
},
{
"TYPE" : "float",
"NAME" : "progress",
"MIN" : 0,
"MAX" : 1,
"DEFAULT" : 0
}
],
"CATEGORIES" : [
"Distortion"
],
"CREDIT": "Automatically converted from https://www.github.com/gl-transitions/gl-transitions/tree/master/Dreamy.glsl",
"DESCRIPTION" : "Automatically converted from https://gl-transitions.com/"
}
*/
vec4 getFromColor(vec2 inUV) {
return texture2D(startImage, inUV);
}
vec4 getToColor(vec2 inUV) {
return texture2D(endImage, inUV);
}
// Author: mikolalysenko
// License: MIT
vec2 offset(float progress, float x, float theta) {
float phase = progress*progress + progress + theta;
float shifty = 0.03*progress*cos(10.0*(progress+x));
return vec2(0, shifty);
}
vec4 transition(vec2 p) {
return mix(getFromColor(p + offset(progress, p.x, 0.0)), getToColor(p + offset(1.0-progress, p.x, 3.14)), progress);
}
void main() {
gl_FragColor = transition((gl_FragCoord.xy / u_resolution.xy).xy);
}