replicant-frameworks_native/opengl/libagl
Mathias Agopian 69ca17a124 fix [1610840] Positional light doesn't work correctly on emulator
This bug was introduced when lighting computations was changed from eye-space to object-space.
The light position need to be transformed back to object-space each time the modelview matrix changes which requires us to compute the inverse of the modelview matrix. This computation was done with the assumption that normals where transformed (which was the case when the computation was made in eye-space), however, normals only require the inverse of the upper 3x3 matrix while transforming positions requires the inverse of the whole matrix.
This caused the interesting behavior that lights were more-or-less transformed properly, but not translated at all, which caused improper lighting with directional lights in particular.

There was also another smaller bug affecting directional lights: when vertices are read, only the active component are read, the other ones are ignored, later, the transformation operations are set up to ignore the unset values, howver, in the case of lighting, we use the vertex in object space (that is, before it is transformed), and therefore were using uninitalized values; in particular w.
2009-06-03 15:09:52 -07:00
..
Android.mk
array.cpp
array.h
BufferObjectManager.cpp
BufferObjectManager.h
context.h
dxt.cpp
dxt.h
egl.cpp
fixed_asm.S
fp.cpp
fp.h
iterators.S
light.cpp
light.h
matrix.cpp
matrix.h
mipmap.cpp
primitives.cpp
primitives.h
state.cpp
state.h
texture.cpp
texture.h
TextureObjectManager.cpp
TextureObjectManager.h
Tokenizer.cpp
Tokenizer.h
TokenManager.cpp
TokenManager.h
vertex.cpp
vertex.h