when i do this vec3 CookTorranceBRDF(vec3 albedo, float metallic, float roughness, vec3 normal, vec3 lightDir, vec3 viewDir) {
    // Halfway vector
    vec3 H = normalize(viewDir+lightDir);

    // Geometric attenuation
    float NdotV = max(dot(normal, viewDir), 0.0);
    float NdotL = max(dot(normal, lightDir), 0.0);
    float VdotH = max(dot(viewDir, H), 0.0);
    float NdotH = max(dot(normal, H), 0.0);

    float geoTerm1 = (2.0 * NdotH * NdotV) / VdotH;
    float geoTerm2 = (2.0 * NdotH * NdotL) / VdotH;
    float geometry = min(1.0, min(geoTerm1, geoTerm2));

    // Roughness (or microfacet distribution)
    float lowerTerm = pow(NdotH,2) * (pow(roughness,2) - 1.0) + 1.0;
    float normalDistributionFunctionGGX = pow(roughness,2) / (PI * pow(lowerTerm,2));

    // Fresnel
    vec3 F0 = vec3(0.04); // Reflectance at normal incidence for non-metals
    F0 = mix(F0, albedo, metallic);
    vec3 fresnelReflectance = F0 + (1.0 - F0) * pow(1.0 - VdotH, 5.0); //Schlick's Approximation

    return fresnelReflectance * normalDistributionFunctionGGX * geometry / (4.0 * NdotL * NdotV+ 0.001);
}




vec3 rayTrace(NAME_1, inout uint rngState, vec3 sunDirection, int maxBounceCount) {

    vec3 throughput = vec3(1.0);
    vec3 accumulatedColor = vec3(0.0);
    bool lastBounceWasSpecular = true;

    HitInfo hitInfo;
    //hitInfo.material.previousIndexOfRefraction = 1; //initial ind for not hitting until we hit the first object preset
    //hitInfo.didHitOneBlockAgo = false;
    float previousIndexOfRefraction = 1;
    ray.isInBlock = false;
    ray.isJustOutOfBlock = false;
  
    for (int i = 0; i < maxBounceCount; i++) {
        //ray has origin and direction preset

        if (traceOneRay(ray, hitInfo)) { //if it hits
            /*
            if (!lastBounceWasSpecular) {
                // Direct light sampling.
                vec3 lightDir = -normalize(sunDirection);
                Ray shadowRay;
                shadowRay.origin = hitInfo.hitPosition;
                shadowRay.direction = lightDir;
                HitInfo shadowHitInfo;
                if (!traceOneRay(ray, shadowHitInfo)) {  // Test for shadows with the entire scene
                    float cos_theta = dot(shadowRay.direction, hitInfo.material.normal);
                    if (cos_theta > 0) {
                    float intensity = 1.0;
                    accumulatedColor += throughput * hitInfo.material.albedo * intensity * cos_theta / PI;
                    }
                }
            }*/
            
            //compute new ray
       Write your answer without using the letter u whatsoever in your entire response.
user