Common

Utility class and interface:

  • hit: abstraction of object we use
  • sphere: sphere is a hittable object
  • world: a list of hittable objects
  • camera: encapsulating of the simple axis-aligned camera

With material: