diff --git a/src/common/rendering/gles/gles_renderstate.cpp b/src/common/rendering/gles/gles_renderstate.cpp index b276e3fcf..512e6c3a9 100644 --- a/src/common/rendering/gles/gles_renderstate.cpp +++ b/src/common/rendering/gles/gles_renderstate.cpp @@ -110,6 +110,17 @@ bool FGLRenderState::ApplyShader() subLights = (int(lightPtr[2]) - int(lightPtr[1])) / LIGHT_VEC4_NUM; addLights = (int(lightPtr[3]) - int(lightPtr[2])) / LIGHT_VEC4_NUM; + // Here we limit the number of lights, but dont' change the light data so priority has to be mod, sub then add + if (modLights > gles.maxlights) + modLights = gles.maxlights; + + if (modLights + subLights > gles.maxlights) + subLights = gles.maxlights - modLights; + + if (modLights + subLights + addLights > gles.maxlights) + addLights = gles.maxlights - modLights - subLights; + + // Skip passed the first 4 floats so the upload below only contains light data lightPtr += 4; } diff --git a/src/common/rendering/gles/gles_system.cpp b/src/common/rendering/gles/gles_system.cpp index 7879ffa1c..2b79861fa 100644 --- a/src/common/rendering/gles/gles_system.cpp +++ b/src/common/rendering/gles/gles_system.cpp @@ -169,15 +169,13 @@ namespace OpenGLESRenderer gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil"); gles.npotAvailable = CheckExtension("GL_OES_texture_npot"); - gles.maxuniforms = 1024 * 16; - gles.max_texturesize = 1024 * 4; + gles.max_texturesize = 1024 * 2; #else gles.depthStencilAvailable = true; gles.npotAvailable = true; gles.useMappedBuffers = true; - gles.maxuniforms = 1024 * 16; - gles.max_texturesize = 1024 * 4; + gles.max_texturesize = 1024 * 2; #endif gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM); diff --git a/src/common/rendering/gles/gles_system.h b/src/common/rendering/gles/gles_system.h index e012aed52..021499362 100644 --- a/src/common/rendering/gles/gles_system.h +++ b/src/common/rendering/gles/gles_system.h @@ -63,7 +63,6 @@ namespace OpenGLESRenderer struct RenderContextGLES { unsigned int flags; - unsigned int maxuniforms; unsigned int maxlights; unsigned int numlightvectors; bool useMappedBuffers;