From 22f17f52f8d8f08f2546a1552e5075d4895d6937 Mon Sep 17 00:00:00 2001 From: taw27 Date: Wed, 6 Aug 2008 21:49:27 +0000 Subject: Fixes for ATI fussiness git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@226 84d2e878-0bd5-11dd-ad15-13eda11d74c5 --- data/shaders/fill-light.frag | 2 +- data/shaders/lighting.frag | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'data') diff --git a/data/shaders/fill-light.frag b/data/shaders/fill-light.frag index eb89c79..975e403 100644 --- a/data/shaders/fill-light.frag +++ b/data/shaders/fill-light.frag @@ -41,7 +41,7 @@ void main() { norm = normalize(normal); /* Ambient */ - ambi = min(1.0, col_ambi_diff * (gl_LightModel.ambient.rgb + vec3(0.5, 0.5, 0.5))); + ambi = col_ambi_diff * (gl_LightModel.ambient.rgb + vec3(0.5, 0.5, 0.5)); /* Emission */ emit = col_emit; diff --git a/data/shaders/lighting.frag b/data/shaders/lighting.frag index 48c6cf0..bf03dbb 100644 --- a/data/shaders/lighting.frag +++ b/data/shaders/lighting.frag @@ -35,12 +35,6 @@ void main() { vec3 L, E, R; vec3 tex; - tex = texture2D(texture, gl_TexCoord[0].st).rgb; - if ( texture_emits ) { - gl_FragColor = vec4(tex.r, tex.g, tex.b, alpha); - return; /* Bail out early in this case */ - } - diff = vec3(0.0, 0.0, 0.0); spec = vec3(0.0, 0.0, 0.0); @@ -62,7 +56,7 @@ void main() { spot = pow(spot, gl_LightSource[0].spotExponent); /* Ambient */ - ambi = col_ambi_diff * (gl_LightModel.ambient.rgb + gl_LightSource[0].ambient*spot*falloff); + ambi = col_ambi_diff * (gl_LightModel.ambient.rgb + gl_LightSource[0].ambient.rgb * spot * falloff); /* Diffuse */ diff_fac = max(0.0, dot(normalize(light0vc).xyz, norm)); @@ -79,10 +73,15 @@ void main() { /* Light 1: Diffuse background glow */ diff += col_ambi_diff * gl_LightSource[1].diffuse.rgb * max(0.0, dot(vec3(light1vc), norm)); - gl_FragColor = vec4(min(tex.r * (ambi.r + diff.r) + spec.r, 1.0), - min(tex.g * (ambi.g + diff.g) + spec.g, 1.0), - min(tex.b * (ambi.b + diff.b) + spec.b, 1.0), - alpha); - + tex = texture2D(texture, gl_TexCoord[0].st).rgb; + if ( texture_emits ) { + gl_FragColor = vec4(tex.r, tex.g, tex.b, alpha); + } else { + gl_FragColor = vec4(min(tex.r * (ambi.r + diff.r) + spec.r, 1.0), + min(tex.g * (ambi.g + diff.g) + spec.g, 1.0), + min(tex.b * (ambi.b + diff.b) + spec.b, 1.0), + alpha); + } + } -- cgit v1.2.3