Project 4: Illuminate (Algo)
You can find the handout for this project here.
Raytracing Pipeline
List at least three aspects of the fully fledged raytracing pipeline that were omitted in Intersect, but are required for Illuminate. Explain how you can use your code from Intersect to implement these components. There is not necessarily a correct answer! We are looking for a qualitative description of your approach.
Reflection Equation
Given an incoming light direction
Assuming both
Texture Coordinates
In Illuminate, you will be texture-mapping images onto your implicit shapes. One step of this process is taking a given intersection point, with known UV coordinates, and figuring out which pixel of the image we should use.
However, two different coordinate systems are in play here:
- Image coordinates have their origin at the top left of a
width x height
pixel grid. These are used for images like our Brush canvas, our Intersect output, and, most relevantly, images we use as textures. - Texture (UV) coordinates have their origin at the bottom left of a unit square. These are used on the surfaces of our objects, as inputs to the equations you will write below.
Study the diagram below, then complete the next two questions, where you will define a mapping from UV coordinates to image coordinates.
A Single Texture
Suppose we have an image of size
What is the pixel index
Repeated Textures
Suppose that we'd now like to repeat the texture
Now, what is the pixel index
Shadow Generation
To test if some intersection point
Suppose point
Submission
Submit your answers to these questions to the "Algo 4: Illuminate" assignment on Gradescope. Instructions on using Gradescope are available here.