       float shadow = apprSoftShadow(p2, light, 0.01, 3.0, 5.0);
 
       final *= shadow;
-      // vec3 I_L =
-      // vec3 N =
-      // vec3 color = vec3(0.6, 0.6, 0.6);
-      // final += lambertIllumination(color, p2, cameraPos);
     }
   }
   final /= float(AA * AA);

  );
}

float sdScene(vec3 p) {
  float cubeTheta = sin(iTime);
  vec3 cubePoint = (vec4(p, 1.0) * rotateY(cubeTheta)).xyz;
  vec3 cubeSize = vec3(1.0, 0.1, 0.1);

  vec3 floorPoint = (vec4(p, 1.0) * translateY(0.5)).xyz;
  float sceneFloor = sdBox(floorPoint, vec3(5.0, 0.1, 5.0));

  return sdUnion(
    sceneFloor,
    sdDiff(
      sdUnion(
        sdSphere(vec4(p, 1.0).xyz, 0.5),
        sdRoundBox(cubePoint, cubeSize, 0.35)
      ),
      sdTorus(p, vec2(1.0, 0.25))
    )
  );
}


}

void main(){
  mat4 viewToWorld = viewMatrix2(cameraPos, vec3(0.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));

  vec3 final = vec3(0.0);
  for (int m = 0; m < AA; m++){
    for (int n = 0; n < AA; n++){

      vec2 offset = vec2(float(m), float(n)) / float(AA) - 0.5;
      vec2 p = 2.0 * (gl_FragCoord.xy + offset) - SIZE / 2.0;
