diff --git a/Effects/model-default.eff b/Effects/model-default.eff
index e4951bb91..fb3d92c82 100644
--- a/Effects/model-default.eff
+++ b/Effects/model-default.eff
@@ -62,7 +62,7 @@
Shaders/model-default.vert
- Shaders/model-default.frag
+ Shaders/default.frag
texture
diff --git a/Shaders/default.frag b/Shaders/default.frag
index f6bf8abd4..53d3fc20d 100644
--- a/Shaders/default.frag
+++ b/Shaders/default.frag
@@ -1,21 +1,27 @@
// -*-C++-*-
-varying vec4 diffuse, ambient;
+varying vec4 diffuse, constantColor;
varying vec3 normal, lightDir, halfVector;
varying float fogCoord, alpha;
uniform sampler2D texture;
+float luminance(vec3 color)
+{
+ return dot(vec3(0.212671, 0.715160, 0.072169), color);
+}
+
void main()
{
vec3 n, halfV;
float NdotL, NdotHV, fogFactor;
- vec4 color = ambient + gl_FrontMaterial.emission;
+ vec4 color = constantColor;
vec4 texel;
vec4 fragColor;
vec4 specular = vec4(0.0);
-
n = normalize(normal);
+ if (!gl_FrontFacing)
+ n = -n;
NdotL = max(dot(n, lightDir), 0.0);
if (NdotL > 0.0) {
color += diffuse * NdotL;
diff --git a/Shaders/default.vert b/Shaders/default.vert
index 78c463232..e1a0e5148 100644
--- a/Shaders/default.vert
+++ b/Shaders/default.vert
@@ -8,7 +8,7 @@
// Diffuse and ambient colors come from the gl_Color. This is
// equivalent to osg::Material::AMBIENT_AND_DIFFUSE.
-varying vec4 diffuse, ambient;
+varying vec4 diffuse, constantColor;
varying vec3 normal, lightDir, halfVector;
varying float fogCoord, alpha;
@@ -22,7 +22,7 @@ void main()
halfVector = normalize(gl_LightSource[0].halfVector.xyz);
diffuse = gl_Color * gl_LightSource[0].diffuse;
alpha = gl_Color.a;
- ambient = gl_Color * gl_LightSource[0].ambient;
- ambient += gl_Color * gl_LightModel.ambient;
+ constantColor = gl_FrontLightModelProduct.sceneColor
+ + gl_FrontMaterial.ambient * gl_LightSource[0].ambient;
fogCoord = abs(ecPosition.z);
}
diff --git a/Shaders/model-default.frag b/Shaders/model-default.frag
deleted file mode 100644
index 25bbe685b..000000000
--- a/Shaders/model-default.frag
+++ /dev/null
@@ -1,37 +0,0 @@
-// -*-C++-*-
-
-varying vec4 diffuse, constantColor;
-varying vec3 normal, lightDir, halfVector;
-varying float alpha, fogCoord;
-
-uniform sampler2D texture;
-
-void main()
-{
- vec3 n, halfV;
- float NdotL, NdotHV, fogFactor;
- vec4 color = constantColor;
- vec4 texel;
- vec4 fragColor;
- vec4 specular = vec4(0.0);
- n = normalize(normal);
- NdotL = max(dot(n, lightDir), 0.0);
- if (NdotL > 0.0) {
- color += diffuse * NdotL;
- halfV = normalize(halfVector);
- NdotHV = max(dot(n, halfV), 0.0);
- if (gl_FrontMaterial.shininess > 0.0)
- specular.rgb = (gl_FrontMaterial.specular.rgb
- * gl_LightSource[0].specular.rgb
- * pow(NdotHV, gl_FrontMaterial.shininess));
- }
- color.a = alpha;
- // This shouldn't be necessary, but our lighting becomes very
- // saturated. Clamping the color before modulating by the texture
- // is closer to what the OpenGL fixed function pipeline does.
- color = clamp(color, 0.0, 1.0);
- texel = texture2D(texture, gl_TexCoord[0].st);
- fragColor = color * texel + specular;
- fogFactor = exp(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord);
- gl_FragColor = mix(gl_Fog.color, fragColor, fogFactor);
-}