In this assignment, you will render the scene you created in Assignment #2 with photorealistic quality using ray tracing. OpenGL and PyGlet will no longer be used; instead, you will directly manipulate the rendered image by casting rays through each pixel and evaluating the radiance at each point. The final result should be compared against both a real photograph of the reference environment and the rendered image from Assignment #4.
It recommended to use an image processing library, such as Pillow, to manipulate images.
[10 point] Implement ray casting and shadow ray logic to simulate realistic shadows in your scene by determining whether each point is occluded from the light source. Since your environment includes an area light source, properly rendered shadows should exhibit soft boundaries in the penumbra region.
[10 point] Your ray tracer is expected to support recursive reflection and refraction. If your environment does not contain any glossy or transparent/translucent objects, you must add synthetic ones to the scene in addition to the real environment to demonstrate these effects.
[5 point] Implement any features we discussed in class that are necessary to make your rendered image closely match the actual photograph. The specific features required may vary depending on the types of objects present in your environment. Since each student may implement different features, you must demonstrate their effectiveness by comparing results with and without those features applied.
[5 points] You are encouraged to implement additional features, such as antialiasing via supersampling, depth of field, or motion blur, if they contribute to the visual realism or aesthetic appeal of the rendered image.
[5 points] You are also encouraged to implement spatial data structures to accelerate ray tracing. To demonstrate their effectiveness, you must compare rendering times with and without using these structures.
[New! - 10 points] Show off your work at Demo Day! You can use an A1 poster, a physical setup, or anything else that helps compare your Cornell Box with your rendered images. Be creative—this is your chance to shine!
[5 points] Write a report describing
Submit a single ZIP file through ETL. The ZIP should include your code, data, report, and all necessary files to run your code.