             LOWP vec3 H = normalize(V + L);
 
             LOWP vec3 F = fresnelSchlick(max(dot(H, V), 0.0), F0);
-
             LOWP float NDF = distributionGGX(N, H, roughness);
             LOWP float G = geometrySmith(N, V, L, roughness);
 

            LOWP vec3 lightDirection = u_lightPositions[lightId] - v_position;
            LOWP float lightDistance = length(lightDirection);

            LOWP float lightAttenuation = 1.0 - (lightDistance / lightRadius);
            lightAttenuation *= lightAttenuation;

            LOWP vec3 radiance = lightInfo.rgb;

}

void main() {
    #ifdef defAlbedo
        LOWP vec3 albedo = texture(u_albedo, v_texCoord).rgb;
    #else
        LOWP vec3 albedo = vec3(0.5);
    #endif

    #ifdef defMetalness
        LOWP float metalness = texture(u_metalness, v_texCoord).r;
    #else
        LOWP float metalness = 0.0;
    #endif

    #ifdef defRoughness
        LOWP float roughness = texture(u_roughness, v_texCoord).r;
    #else
        LOWP float roughness = 0.4;
    #endif

    #ifdef defAmbientOcclusion
