summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-01-28 16:20:06 -0800
committerTofu Linden <tofu.linden@lindenlab.com>2010-01-28 16:20:06 -0800
commitc3b37faba3cba425d749345a978ddec16bbd1338 (patch)
treec27fe118f517f0f3de8781e23c30cdecd6d45dc9 /indra
parent5a34cf1af83314774f11b0d24279794794bc9147 (diff)
first dribble of directional lights for shaderless path.
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/pipeline.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index d66662ed49..bced8a8e07 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -4596,8 +4596,22 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
glLightf (gllight, GL_CONSTANT_ATTENUATION, 0.0f);
glLightf (gllight, GL_LINEAR_ATTENUATION, atten);
glLightf (gllight, GL_QUADRATIC_ATTENUATION, quad);
- glLightf (gllight, GL_SPOT_EXPONENT, 0.0f);
- glLightf (gllight, GL_SPOT_CUTOFF, 180.0f);
+ if (light->getLightTexture()) // directional (spot-)light
+ {
+ LLVector3 spotparams = light->getSpotLightParams();
+ LLQuaternion quat = light->getRenderRotation();
+ LLVector3 at_axis(0,0,-1); // todo: verify against deferred
+ at_axis *= quat;
+ llinfos << "SPOT!!!!!!! fov: " << spotparams.mV[0] << " focus: " << spotparams.mV[1] << " dir: " << at_axis << llendl;
+ glLightfv(gllight, GL_SPOT_DIRECTION, at_axis.mV);
+ glLightf (gllight, GL_SPOT_EXPONENT, 0.0f); // fixme - focus
+ glLightf (gllight, GL_SPOT_CUTOFF, 22.0f); // fixme - fov
+ }
+ else // omnidirectional (point) light
+ {
+ glLightf (gllight, GL_SPOT_EXPONENT, 0.0f);
+ glLightf (gllight, GL_SPOT_CUTOFF, 180.0f);
+ }
cur_light++;
if (cur_light >= 8)
{
@@ -4613,7 +4627,6 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
glLightfv(gllight, GL_AMBIENT, LLColor4::black.mV);
glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
}
-
if (gAgent.getAvatarObject() &&
gAgent.getAvatarObject()->mSpecialRenderMode == 3)
{