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