     	  continue;
       }
 
+      vec3 spherePos = vec3(0.0, 0.0, 0.0);
+      float sphereRad = 1.0;
+
       // lighting
       vec3 p2 = cameraPos + dist * worldDir;
       vec3 K_a = vec3(0.35, 0.35, 0.35);
       vec3 K_d = vec3(0.6, 0.6, 0.6);
       vec3 K_s = vec3(1.0, 1.0, 1.0);
+      if (p2.y < 0.0) {
+        K_d = vec3(0.5, 0.5, 0.6);
+      } else if (p2.y < 1.5) {
+        K_a = vec3(0.5, 0.5, 0.5);
+        K_d = vec3(1.0, 1.0, 1.0);
+      } else {
+        K_a = vec3(0.35, 0.15, 0.15);
+        K_d = vec3(1.0, 0.4, 0.4);
+      }
       float shininess = 10.0;
       final += phongIllumination(K_a, K_d, K_s, shininess, p2, cameraPos);
 

  );
}

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))
    )
  );
}


  );
}

mat4 rotateZ(float theta){
  float c = cos(theta);
  float s = sin(theta);
  return mat4(
    vec4(c, s, 0, 0),
    vec4(-s, c, 0, 0),
    vec4(0, 0, 1, 0),
    vec4(0, 0, 0, 1)
  );
}

mat4 translateY(float dist){
  return mat4(
    vec4(1, 0, 0, 0),
