 	float shininess;
 } u_material;
 
-#ifdef NUM_DIRECTIONAL_LIGHTS
-uniform struct DirectionalLight {
+struct DirectionalLight {
   vec4 ambient;
 	vec4 diffuse;
 	vec4 specular;
 
   vec3 direction;
   vec3 halfVector;
-} u_directionalLights[NUM_DIRECTIONAL_LIGHTS];
+};
 
 void calculateDirectionalLight(in DirectionalLight _light, in vec3 _normal, inout vec4 _ambient, inout vec4 _diffuse, inout vec4 _specular){
 	vec3  halfVector;

    float constantAttenuation;
    // float linearAttenuation;
    // float quadraticAttenuation;
} u_pointLights[NUM_POINT_LIGHTS];

void calculatePointLight(in PointLight _light, in vec3 _eye, in vec3 _ecPosition3, in vec3 _normal, inout vec4 _ambient, inout vec4 _diffuse, inout vec4 _specular){
    float nDotVP;         // normal . light direction


//	COMPUTE DIRECTIONAL LIGHTS
//
// #pragma tangram: DIRECTIONAL_LIGHTS
#ifdef NUM_DIRECTIONAL_LIGHTS
    calculateDirectionalLight(u_directionalLights[0], _normal, amb, diff, spec);
#endif

//	COMPUTE POINT LIGHTS
//
// #pragma tangram: POINT_LIGHTS
#ifdef NUM_POINT_LIGHTS
    calculatePointLight(u_pointLights[0], eye, _ecPosition, _normal, amb, diff, spec);
#endif

//	COMPUTE SPOT LIGHTS
//
// #pragma tangram: SPOT_LIGHTS
#ifdef NUM_SPOT_LIGHTS
    calculateSpotLight(u_spotLights[0], eye, _ecPosition, _normal, amb, diff, spec);
#endif

	vec4 color =  	amb * u_material.ambient + 
#ifdef COLOR_TEXTURE
