human
what needs to be updated in the code to produce ambient occlusion with no or very minimal graininess : /*[EXTRA_CODE_HERE]*/

#ifdef DEFINE_GL_FRAGCOLOR
out vec4 frag_color;
#else
#define frag_color gl_FragColor
#endif

//class 2 -- shadows and SSAO

// Inputs
VARYING vec2 vary_fragcoord;

vec4 getPosition(vec2 pos_screen);
vec3 getNorm(vec2 pos_screen);

float sampleDirectionalShadow(vec3 shadow_pos, vec3 norm, vec2 pos_screen);
float sampleSpotShadow(vec3 shadow_pos, vec3 norm, int index, vec2 pos_screen);
float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen);

void main() 
{
    vec2 pos_screen = vary_fragcoord.xy;
    vec4 pos  = getPosition(pos_screen);
    vec3 norm = getNorm(pos_screen);

    frag_color.r = sampleDirectionalShadow(pos.xyz, norm, pos_screen);
    frag_color.g = calcAmbientOcclusion(pos, norm, pos_screen);
    frag_color.b = sampleSpotShadow(pos.xyz, norm, 0, pos_screen);
    frag_color.a = sampleSpotShadow(pos.xyz, norm, 1, pos_screen);
}
gpt
--- Reasoning ---
1. Is the question multiple-choice question?
No
2. Is it implied multiple-choice question?
No
3. If two experts were independently asked the question, will the final answer be exactly the same?
No

--- Answer ---
open