This is an introductory course to introduce undergraduate and graduate students to basics of computer graphics. Core concepts coordinate spaces, vectors, matrices, transformation, projection, rendering, clipping, 3D viewing will be covered in detail. After covering this course, the student is expected to gain enough understanding to write his/her own rasterization or ray tracing based rendering engine using OpenGL/DirectX.

- Introduction to Computer Graphics
- Introduction to OpenGL Graphics API
- Coordinate Spaces
- Vectors and Matrices
- Transformations
- Affine Transformations: Translation, Rotation, Uniform Scaling
- Non-affine Transformations: Non-uniform Scaling, Projection
- Types of Projections
- Viewing using Pinhole Camera Model
- Lighting
- Shadows
- Render to Texture
- Model Formats
- Rendering Models: Rasterization vs Raytracing vs Pathtracing
- Recent advances and introduction to GPUs
- Conclusion

Total Assignments: 5-7

Total Quizzes: 5-7

Reference Books:

- Real-time Rendering 3rd Edition by Tomas Akenine-Möller, Eric Haines, and Naty Hoffman
- Fundamentals of Computer Graphics 3rd Edition by Peter Shirley and Steve Marschner
- Foundations of 3D Computer Graphics by Steven J. Gortler
- Computer Graphics-Principles and Practice 3rd Edition by John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, Kurt Akeley
- Introduction to 3D Game Programming with DirectX 11 by Frank Luna

- GPU based rasterization engine
- GPU based ray tracing engine
- GPU based path tracing engine
- Mesh model viewer
- Transformation modeler
- Simple physics simulator