Syllabus for CSC 476: Real-Time 3D Computer Graphics Software


Welcome to 3D game development. This course will teach you some of the important computer graphics principals of 3D games. This course is primarily focused on the graphics components of interactive 3D games/worlds. We will cover advanced real-time graphics techniques mostly in the context of games. This course requires substantial math and programming skills. Experience with C or C++ will be essential and experience with linear algebra will be very helpful. We will be using OpenGL and GLSL for our graphics APIs, along with C++ to create computer graphics games throughout the quarter. You are welcome to develop your programs under varying operating systems as long as the final programs can be demonstrated and run on multiple machines for the final gameplay demo.

Course Objectives

By the end of the quarter, students will:


Please see the course website for deadline details. There is a strict late policy for all assignments – no late programs/project demos will be accepted.



Real-time rendering Tomas Akenine-Moller and Eric Hanes (highly recommended)



Throughout the course, there will be many opportunities to participate interactively in and out of the classroom. I expect you to participate by asking or answering questions, either in class or online on piazza. To encourage in-class participation, laptops, phones, and other smart devices are not to be used during class, unless specified for workshop format classes.


Although I encourage you to have lively discussions with one another, all work you hand in must be your own work. If your program or parts of your program are plagiarized from another student or unapproved sources including tutorials, you will fail the course and a letter will be put in your file with Cal Poly Judicial Affairs. Note some old tutorials do not use modern graphics – if you use them, this can result in problems. You can talk to one another about your solutions and you may look at another student’s code that has a bug (I encourage you to help each other with de-bugging), but you cannot look at someone else’s working code.

Note that I expect your OpenGL code to conform to at least OpenGL 3.2 standards (sometimes referred to as “modern graphics”) some specifics include no use of immediate mode for rendering and no OpenGL matrix stack calls (instead use glm) and all shading will be computed using GLSL shaders.

The schedule on the home page of the website for the lectures and assignments may change and is provided to give you a rough outline of the topics we will cover and the timings of your final project reviews. Check reading chapters with the topic in case your book edition varies.