In this assignment, you will tackle photorealistic rendering of the scene you created for Assignment #2. You are required to write OpenGL and shader code to render the scene, and then compare the result with an actual photograph of the reference environment.

Specification

[5 point] Write your own vertex and fragment shaders to reproduce the reference environment on the screen. The phong shading example serves as the baseline of your implementation.

[5 point] Your shaders are expected to simulate the BRDFs of the reference environment. Additionally, if your scene contains textures, applying texture mapping is recommended.

[5 point] The standard Cornell box features an area light source located at the center of the ceiling. This area light is often approximated using an array of point light sources.

[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.


[optional] You may also create an additional rendered scene that does not necessarily match the reference environment. This extra scene can include objects with complex material properties, such as transparency, translucency, high reflectivity, or bumpy textures. Transparent and translucent objects require special attention to ensure they are rendered and composited in the correct order. The use of texture, bump, or displacement mapping techniques is encouraged to enhance realism in your scene.

[optional] You are also encouraged to experiment with light sources to create beautiful scenes such as Christmas light-up decorations. The key idea is to use many small lights that locally illuminate specific areas.

[optional] The local illumination model does not produce shadows. Optionally, you are encouraged to experiment with shadow mapping or shadow volumes to add shadow effects to your scene. These shadow techniques will be covered in the upcoming lecture.