[require] GLSL >= 1.10 [vertex shader] varying float y; void main() { gl_Position = gl_Vertex; y = gl_Vertex.y; } [fragment shader] varying float y; uniform float x; void main() { float retVal = tan(x); // expected result, calculated by C program const float tolerance = 0.001; const vec2 expVal = vec2(1255.765592 - tolerance, 1255.848311 + tolerance); // Top half of the window should be 0.5 gray, and the bottom half // should be green. if (y > 0.0) gl_FragColor = vec4(vec2(retVal / (2.0 * expVal)).xyy, 1.0); else gl_FragColor = ((retVal >= expVal.x) && (retVal <= expVal.y)) ? vec4(0.0, 1.0, 0.0, 1.0) // green : vec4(1.0, 0.0, 0.0, 1.0); // red } [test] uniform float x 1.57 draw rect -1 -1 2 2 relative probe rgb (0.1, 0.6) (0.5, 0.5, 0.5) relative probe rgb (0.1, 0.1) (0.0, 1.0, 0.0)