Move enabled state onto the LightSource
This commit is contained in:
parent
814f228db9
commit
cca09a298e
|
@ -57,6 +57,7 @@ void _glInitLights() {
|
|||
LIGHTS[i].position[0] = LIGHTS[i].position[1] = LIGHTS[i].position[3] = 0.0f;
|
||||
LIGHTS[i].position[2] = 1.0f;
|
||||
LIGHTS[i].isDirectional = GL_TRUE;
|
||||
LIGHTS[i].isEnabled = GL_FALSE;
|
||||
|
||||
LIGHTS[i].spot_direction[0] = LIGHTS[i].spot_direction[1] = 0.0f;
|
||||
LIGHTS[i].spot_direction[2] = -1.0f;
|
||||
|
@ -72,6 +73,10 @@ void _glInitLights() {
|
|||
_glPrecalcLightingValues(~0);
|
||||
}
|
||||
|
||||
void _glEnableLight(GLubyte light, GLboolean value) {
|
||||
LIGHTS[light].isEnabled = value;
|
||||
}
|
||||
|
||||
GL_FORCE_INLINE void _glPrecalcLightingValues(GLuint mask) {
|
||||
float baseColour[4];
|
||||
|
||||
|
@ -464,7 +469,7 @@ void _glPerformLighting(Vertex* vertices, const EyeSpaceData* es, const int32_t
|
|||
for(i = 0; i < MAX_LIGHTS; ++i) {
|
||||
__builtin_prefetch(LIGHTS + i + 1, 0, 1);
|
||||
|
||||
if(!_glIsLightEnabled(i)) continue;
|
||||
if(!LIGHTS[i].isEnabled) continue;
|
||||
|
||||
if(LIGHTS[i].isDirectional) {
|
||||
float Lx = LIGHTS[i].position[0] - data->xyz[0];
|
||||
|
|
|
@ -182,6 +182,7 @@ typedef struct {
|
|||
GLfloat ambient[4];
|
||||
|
||||
GLboolean isDirectional;
|
||||
GLboolean isEnabled;
|
||||
|
||||
/* We set these when the material changes
|
||||
* so we don't calculate them per-vertex. They are
|
||||
|
@ -321,7 +322,7 @@ GLubyte* _glGetMipmapLocation(const TextureObject* obj, GLuint level);
|
|||
GLuint _glGetMipmapLevelCount(const TextureObject* obj);
|
||||
|
||||
GLboolean _glIsLightingEnabled();
|
||||
GLboolean _glIsLightEnabled(GLubyte light);
|
||||
void _glEnableLight(GLubyte light, unsigned char value);
|
||||
GLboolean _glIsColorMaterialEnabled();
|
||||
|
||||
GLboolean _glIsNormalizeEnabled();
|
||||
|
|
13
GL/state.c
13
GL/state.c
|
@ -26,6 +26,8 @@ static GLenum FRONT_FACE = GL_CCW;
|
|||
static GLboolean CULLING_ENABLED = GL_FALSE;
|
||||
static GLboolean COLOR_MATERIAL_ENABLED = GL_FALSE;
|
||||
|
||||
static GLboolean LIGHTING_ENABLED = GL_FALSE;
|
||||
|
||||
/* Is the shared texture palette enabled? */
|
||||
static GLboolean SHARED_PALETTE_ENABLED = GL_FALSE;
|
||||
|
||||
|
@ -249,17 +251,10 @@ void _glUpdatePVRTextureContext(pvr_poly_cxt_t* context, GLshort textureUnit) {
|
|||
}
|
||||
}
|
||||
|
||||
static GLboolean LIGHTING_ENABLED = GL_FALSE;
|
||||
static GLboolean LIGHT_ENABLED[MAX_LIGHTS];
|
||||
|
||||
GLboolean _glIsLightingEnabled() {
|
||||
return LIGHTING_ENABLED;
|
||||
}
|
||||
|
||||
GLboolean _glIsLightEnabled(unsigned char light) {
|
||||
return LIGHT_ENABLED[light & 0xF];
|
||||
}
|
||||
|
||||
GLboolean _glIsColorMaterialEnabled() {
|
||||
return COLOR_MATERIAL_ENABLED;
|
||||
}
|
||||
|
@ -340,7 +335,7 @@ GLAPI void APIENTRY glEnable(GLenum cap) {
|
|||
case GL_LIGHT5:
|
||||
case GL_LIGHT6:
|
||||
case GL_LIGHT7:
|
||||
LIGHT_ENABLED[cap & 0xF] = GL_TRUE;
|
||||
_glEnableLight(cap & 0xF, GL_TRUE);
|
||||
break;
|
||||
case GL_NEARZ_CLIPPING_KOS:
|
||||
_glEnableClipping(GL_TRUE);
|
||||
|
@ -402,7 +397,7 @@ GLAPI void APIENTRY glDisable(GLenum cap) {
|
|||
case GL_LIGHT5:
|
||||
case GL_LIGHT6:
|
||||
case GL_LIGHT7:
|
||||
LIGHT_ENABLED[cap & 0xF] = GL_FALSE;
|
||||
_glEnableLight(cap & 0xF, GL_FALSE);
|
||||
break;
|
||||
case GL_NEARZ_CLIPPING_KOS:
|
||||
_glEnableClipping(GL_FALSE);
|
||||
|
|
Loading…
Reference in New Issue
Block a user