#version 330 core out vec4 FragColor; in vec2 TexCoord; uniform sampler2D inputImageTexture; uniform sampler2D inputImageTexture2; uniform float mixturePercent; uniform int directionType; // Both clips translate together: outgoing slides off-screen toward the named // edge, incoming slides in from the opposite edge. directionType convention // same as transition_slide.fs. void main() { if (directionType == 2) { if (TexCoord.y > mixturePercent) { FragColor = texture(inputImageTexture, vec2(TexCoord.x, TexCoord.y - mixturePercent)); } else { FragColor = texture(inputImageTexture2, vec2(TexCoord.x, TexCoord.y + (1.0 - mixturePercent))); } } else if (directionType == 1) { if (TexCoord.x > mixturePercent) { FragColor = texture(inputImageTexture, vec2(TexCoord.x - mixturePercent, TexCoord.y)); } else { FragColor = texture(inputImageTexture2, vec2(TexCoord.x + (1.0 - mixturePercent), TexCoord.y)); } } else if (directionType == 0) { float p = 1.0 - mixturePercent; if (TexCoord.y < p) { FragColor = texture(inputImageTexture, vec2(TexCoord.x, TexCoord.y + (1.0 - p))); } else { FragColor = texture(inputImageTexture2, vec2(TexCoord.x, TexCoord.y - p)); } } else if (directionType == 3) { float p = 1.0 - mixturePercent; if (TexCoord.x < p) { FragColor = texture(inputImageTexture, vec2(TexCoord.x + (1.0 - p), TexCoord.y)); } else { FragColor = texture(inputImageTexture2, vec2(TexCoord.x - p, TexCoord.y)); } } else { vec4 a = texture(inputImageTexture, TexCoord); vec4 b = texture(inputImageTexture2, TexCoord); FragColor = mix(a, b, mixturePercent); } }