I am currently in the early phases of designing a computer graphics course and so far, what I have planned is a brief description of what the course is about and what it will include.
In this course, students will be immersed in the fascinating world of computer graphics, where they will learn the fundamentals of rendering visually appealing scenes on the screen using sophisticated algorithms and building their own 3D software rasterizer using the C++ programming language.
The course will include the following goals and outcomes:
- Introduction to computer graphics and its applications in various industries.
- Understanding vector and matrix operations and their applications in computer graphics.
- Understanding the concepts of 2D and 3D coordinate systems and transformations.
- Understanding various algorithms for anti-aliasing, rasterization, and visibility determination.
- Understanding the basics of lighting, shading, and post processing techniques.
- Creating essential utility libraries, including:
- Window System: Managing window creation, resizing, and handling.
- Event System: Capturing and processing various events such as application and input events.
- Input System: Handling keyboard, mouse, and other HID devices.
- File I/O: Reading and writing graphics-related data from/to files.
- Resource Manager: Managing textures, shaders, and other assets efficiently.
- Building a 3D software rasterizer from scratch using the C++ programming language.
By the end of this course, students will have gained a deep understanding of computer graphics principles, the intricacies of rasterization, and the ability to develop their own sophisticated 3D software rasterizer along with essential utility libraries. This knowledge will empower them to pursue careers in game development, animation, visual effects, virtual reality, and various other industries where computer graphics expertise is highly sought after.
Having read and gained an understanding of what the course aims to deliver to students, would this be something that you might be interested in and if so, what topics would you love to see on this course? Please provide me with as much feedback and details as possible.