From 5a706eea4beb1c4f256351109eecc5beb23eb533 Mon Sep 17 00:00:00 2001 From: ansgar <ansgar@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Sat, 29 May 2010 15:51:45 +0000 Subject: [PATCH] fixed broken point/line display for some shaders git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/branches/new_gfx@2307 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/gfx/src/shader/basic_hf_vs.glsl | 5 ++++- modules/gfx/src/shader/dumpnorm_vs.glsl | 5 ++++- modules/gfx/src/shader/toon_vs.glsl | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/gfx/src/shader/basic_hf_vs.glsl b/modules/gfx/src/shader/basic_hf_vs.glsl index 4dbe147a6..80324bf1d 100644 --- a/modules/gfx/src/shader/basic_hf_vs.glsl +++ b/modules/gfx/src/shader/basic_hf_vs.glsl @@ -17,7 +17,10 @@ void main() // hemisphere lighting contribution vec3 ec_pos = vec3(gl_ModelViewMatrix* gl_Vertex); if(lighting_flag) { - vec3 normal = normalize(gl_NormalMatrix * gl_Normal); + vec3 normal = vec3(0,0,1); + if(dot(gl_Normal,gl_Normal)>0.001) { + normal = normalize(gl_NormalMatrix * gl_Normal); + } vec3 l_dir = normalize(gl_LightSource[0].position.xyz); // assume directional vector float a = 0.5+0.5*dot(normal,l_dir); gl_FrontColor.rgb = mix(ground_color, sky_color, a).rgb; diff --git a/modules/gfx/src/shader/dumpnorm_vs.glsl b/modules/gfx/src/shader/dumpnorm_vs.glsl index f11d00259..f4cc4a1b4 100644 --- a/modules/gfx/src/shader/dumpnorm_vs.glsl +++ b/modules/gfx/src/shader/dumpnorm_vs.glsl @@ -1,7 +1,10 @@ void main() { gl_Position = ftransform(); - vec3 normal = gl_NormalMatrix * gl_Normal; + vec3 normal = vec3(0,0,1); + if(dot(gl_Normal,gl_Normal)>0.001) { + normal = gl_NormalMatrix * gl_Normal; + } gl_TexCoord[0].stp=normal; } diff --git a/modules/gfx/src/shader/toon_vs.glsl b/modules/gfx/src/shader/toon_vs.glsl index 1913f445e..3eb50da66 100644 --- a/modules/gfx/src/shader/toon_vs.glsl +++ b/modules/gfx/src/shader/toon_vs.glsl @@ -7,7 +7,10 @@ void main() // for some reason, the fog and z coordinate are sign toggled... gl_FogFragCoord = -ec_Pos.z; - vec3 normal = normalize(gl_NormalMatrix * gl_Normal); + vec3 normal = vec3(0,0,1); + if(dot(gl_Normal,gl_Normal)>0.001) { + normal = normalize(gl_NormalMatrix * gl_Normal); + } // since a directional light is used, the position is not needed gl_TexCoord[0].stp=normal; -- GitLab