summaryrefslogtreecommitdiff
path: root/indra/newview/pipeline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/pipeline.cpp')
-rw-r--r--indra/newview/pipeline.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 71f9ce7eb2..6cd8b94405 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -4592,7 +4592,6 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
glLightfv(gllight, GL_POSITION, light_pos_gl.mV);
glLightfv(gllight, GL_DIFFUSE, light_color.mV);
glLightfv(gllight, GL_AMBIENT, LLColor4::black.mV);
- glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
glLightf (gllight, GL_CONSTANT_ATTENUATION, 0.0f);
glLightf (gllight, GL_LINEAR_ATTENUATION, atten);
glLightf (gllight, GL_QUADRATIC_ATTENUATION, quad);
@@ -4606,11 +4605,16 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
glLightfv(gllight, GL_SPOT_DIRECTION, at_axis.mV);
glLightf (gllight, GL_SPOT_EXPONENT, 1.0f); // 1.0 = good old dot product
glLightf (gllight, GL_SPOT_CUTOFF, 90.0f); // hemisphere
+ glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
}
else // omnidirectional (point) light
{
glLightf (gllight, GL_SPOT_EXPONENT, 0.0f);
glLightf (gllight, GL_SPOT_CUTOFF, 180.0f);
+
+ // we use specular.w = 1.0 as a cheap hack for the shaders to know that this is omnidirectional rather than a spotlight
+ const float specular = {0.f, 0.f, 0.f, 1.f},
+ glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
}
cur_light++;
if (cur_light >= 8)