]> git.sur5r.net Git - fstl/commitdiff
Compensate for z-flattening when zooming
authorMatt Keeter <matt.j.keeter@gmail.com>
Mon, 24 Mar 2014 23:14:17 +0000 (19:14 -0400)
committerMatt Keeter <matt.j.keeter@gmail.com>
Mon, 24 Mar 2014 23:14:17 +0000 (19:14 -0400)
gl/mesh.frag
src/canvas.cpp

index 59490256d4ed873c7f2fcda903a67e117b87af92..d7a54d55f3a180b4d49279dafcc377670d47bd31 100644 (file)
@@ -1,12 +1,18 @@
 #version 120
 
+uniform float zoom;
+
 varying vec3 ec_pos;
 
 void main() {
     vec3 base3 = vec3(0.99, 0.96, 0.89);
     vec3 base2 = vec3(0.92, 0.91, 0.83);
     vec3 base00 = vec3(0.40, 0.48, 0.51);
+
     vec3 ec_normal = normalize(cross(dFdx(ec_pos), dFdy(ec_pos)));
+    ec_normal.z *= zoom;
+    ec_normal = normalize(ec_normal);
+
     float a = dot(ec_normal, vec3(0.0, 0.0, 1.0));
     float b = dot(ec_normal, vec3(-0.57, -0.57, 0.57));
 
index 1539469949155de9eeb1b824bc97d2037134dbf0..1a1e06077a69cea7ff3c9c2292de06f6a3807732 100644 (file)
@@ -89,6 +89,9 @@ void Canvas::draw_mesh()
                 mesh_shader.uniformLocation("view_matrix"),
                 1, GL_FALSE, view_matrix().data());
 
+    // Compensate for z-flattening when zooming
+    glUniform1f(mesh_shader.uniformLocation("zoom"), 1/zoom);
+
     // Find and enable the attribute location for vertex position
     const GLuint vp = mesh_shader.attributeLocation("vertex_position");
     glEnableVertexAttribArray(vp);