Compensate for z-flattening when zooming
This commit is contained in:
parent
e36ff6ae9c
commit
9283aa4752
2 changed files with 9 additions and 0 deletions
|
@ -1,12 +1,18 @@
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
|
uniform float zoom;
|
||||||
|
|
||||||
varying vec3 ec_pos;
|
varying vec3 ec_pos;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec3 base3 = vec3(0.99, 0.96, 0.89);
|
vec3 base3 = vec3(0.99, 0.96, 0.89);
|
||||||
vec3 base2 = vec3(0.92, 0.91, 0.83);
|
vec3 base2 = vec3(0.92, 0.91, 0.83);
|
||||||
vec3 base00 = vec3(0.40, 0.48, 0.51);
|
vec3 base00 = vec3(0.40, 0.48, 0.51);
|
||||||
|
|
||||||
vec3 ec_normal = normalize(cross(dFdx(ec_pos), dFdy(ec_pos)));
|
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 a = dot(ec_normal, vec3(0.0, 0.0, 1.0));
|
||||||
float b = dot(ec_normal, vec3(-0.57, -0.57, 0.57));
|
float b = dot(ec_normal, vec3(-0.57, -0.57, 0.57));
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,9 @@ void Canvas::draw_mesh()
|
||||||
mesh_shader.uniformLocation("view_matrix"),
|
mesh_shader.uniformLocation("view_matrix"),
|
||||||
1, GL_FALSE, view_matrix().data());
|
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
|
// Find and enable the attribute location for vertex position
|
||||||
const GLuint vp = mesh_shader.attributeLocation("vertex_position");
|
const GLuint vp = mesh_shader.attributeLocation("vertex_position");
|
||||||
glEnableVertexAttribArray(vp);
|
glEnableVertexAttribArray(vp);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue