#version 150 in vec4 colorLeft; in vec4 colorRight; in float edge; in float midpoint; out vec4 fragColor; float curveWithMidpoint(float x, float midpoint) { float sample = pow(x, midpoint / (1.0 - midpoint)); float inverseSample = 1.0 - pow(1.0 - x, (1.0 - midpoint) / midpoint); return (sample + inverseSample) * 0.5; } void main() { float colorMix = curveWithMidpoint(edge, midpoint); fragColor = colorLeft * (1.0 - colorMix) + colorRight * colorMix; }