Если удаление shape.*.shader даёт тот же результат, что и Shader.NumLights=0, значит и в том и в другом случае шейдер не компилируется и не запускается.
Если Shader.NumLights оставить 32, Shader.NumLightsInt поставить 0 и shape.*.shader вернуть - что происходит? В логе есть какие-нибудь ошибки или предупреждения при загрузке шейдера есть?
Добавлено через 7 минут
Так он же пишет про отсутствие shadows.frag.shader, а не shape.frag.shader!
А по shape.frag.shader он загружает его и пишет другую ошибку. Значит файл-то был на месте.
Закомментируй в shape.*.shader
layout(std140) uniform LightsInt {
GLLightObj LightInt[%NumLightsInt%];
};
и его использование в main.