This project is the homework for GAMES101: Introduction and Fundamentals of Computer Graphics. Thanks to Prof. Yan for giving me the opportunity to appreciate the brilliance of computer graphics.
Homepage:GAMES101 Homepage
Course on Bilibili:GAMES101 Lectures
-
Homework 0: Basis
Environment configuration and library Eigen foundation.
The homework for the course uses a virtual machine environment, and this project uses Windows with Visual Studio + Eigen + OpenCV. -
Homework 1: Transformation
Fundamentals of linear transformation. The main content includes the perspective projection matrix and the MVP transformation.
The homework involves drawing a triangle and controlling its rotation using the keyboard, as shown in the following figure:
-
Homework 2: Rastzerization
Fundamentals of rasterization. The main content includes determining pixel and triangle positions, signal analysis and anti-aliasing, and Z-buffer.
The homework involves drawing and coloring two triangles and judging the relationship between them, as shown in the following figure:
-
Homework 3: Shading
Fundamentals of shading. The main content includes the Blinn Phone lighting model, barycentric coordinates, bilinear interpolation and texture mapping.
The homework requires the drawing of a given model and texture mapping. The lighting model is used to calculate the illumination of the object firstly. Then, the rendering accuracy is improved by interpolating the barycentric coordinates, and finally the texture is drawn by using the texture map.
The first part of this homework is shown in the following figure:
Other methods of shading. Bump mapping achieves virtual distance changes by perturbing local positions without modifying the model. Displacement mapping achieves ideal results by applying distance changes to the vertices of the mesh.
The second part of this homework is shown in the following figure:
-
Homework 4: Geometry
Fundamentals of geometry. The main content includes implicit and explicit representations of geometric models, Bezier curves and surfaces, mesh subdivision and mesh simplification.
The homework requires drawing a Bezier curve with four artificially placed control points, as shown in the following figure:
-
Homework 5: Ray Tracing
Fundamentals of Ray Tracing. The main content includes Whitted-style ray tracing, the MT algorithm for finding intersections between rays and triangular surfaces.
The homework requires completing the rendering result of the Whitted-style ray tracing, as shown in the following figure:
-
Homework 6: BVH
Fundamentals of Ray Tracing. The main content includes the creation of bounding boxes, spatial partitioning and object partitioning.
The homework requires the implementation of the BVH algorithm to determine the intersection between the ray and objects, as shown in the following figure:
-
Homework 7: Path Tracing
Fundamentals of path tracing. The main content includes radiometry, Monte Carlo integration, and path tracing algorithms.
The homework requires implementing a path tracing algorithm and rendering the Cornell Box model. The tasks are completed according to the pseudo code in the document, but the effect is not yet perfect, as shown in the following figure: