From d5b1cda91ea5826e0fe8fa20d7daad57dc9ffd8b Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Tue, 24 Apr 2012 00:50:56 +0300 Subject: [PATCH] libagl: Transform the vertex if using eye space lighting with point lights This fixes lighting when using point lights, when eye space lighting is used (which is the default). Change-Id: I0cd0d2329893d6b5f8af3b1e595274c2076fc322 --- opengl/libagl/light.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/opengl/libagl/light.cpp b/opengl/libagl/light.cpp index ca715db60..fafec3fa2 100644 --- a/opengl/libagl/light.cpp +++ b/opengl/libagl/light.cpp @@ -381,7 +381,14 @@ void lightVertex(ogles_context_t* c, vertex_t* v) // compute vertex-to-light vector if (ggl_unlikely(l.position.w)) { // lightPos/1.0 - vertex/vertex.w == lightPos*vertex.w - vertex +#if !OBJECT_SPACE_LIGHTING + vec4_t o; + const transform_t& mv = c->transforms.modelview.transform; + mv.point4(&mv, &o, &v->obj); + vss3(d.v, l.objPosition.v, o.w, o.v); +#else vss3(d.v, l.objPosition.v, v->obj.w, v->obj.v); +#endif sqDist = dot3(d.v, d.v); vscale3(d.v, d.v, gglSqrtRecipx(sqDist)); } else {