Description:
This course is an introduction to some of the computer graphics methods commonly used in 3D computer games, for both real-time rendering and offline preprocessing. Students will learn several common algorithms in each topic area with sufficient depth for implementation.
We will be using the Unreal Engine as a basis for the class, so you will also learn details of how a large game engine is constructed, and how to find your way around a very large pre-existing program.
Note that (as the course title says), this is a course about computer graphics, specifically 3D graphics, as used by many games. It is not a class about playing games, nor about all of the other equally important aspects of creating a game (AI, art, game play, interface design, ...).
Objectives:
On successful completion of this course, students will
- Know a variety of advanced graphics techniques used in games
- Know how to navigate and make changes to a large pre-existing codebase
- Integrate advanced graphics techniques into a game environment
- Present technical topics to a knowledgeable audience
Requirements:
I will assume you can program in C++ and know data structures, at least some calculus, and linear algebra. In UMBC undergraduate classes, these would be covered by a combination of CMSC 341, MATH 151, and MATH 221.
Recommended but not required: CMSC 435/634 (Introduction to Computer Graphics). That class covers software and hardware algorithms below the ones we cover in this class. For this class, it is enough to know the GPU will draw a triangle when the engine tells it to, without understanding the algorithms the GPU might use. Understanding those should not be necessary for this class, but can be useful in providing background and context.
There is no required text, but you may find these useful
- The Graphics Codex
- Akenine-Möller, Haines, Hoffmann, Pesce, Hillaire, and Iwanicki, Real-Time Rendering, AK Peters/CRC Press, ISBN 978-1138627000.
Getting Help:
Instructor:
Dr. Marc Olano <olano@umbc.edu>
Office Hours: Wednesday 2:30-4:00 online.
For project questions, be prepared to screen share from your computer.
Discord: We will be using the 438 channel on the UMBC CMSC discord server for this class. Questions on concepts and algorithms, especially relating to the assignments, should be asked and answered there. If you ask me a general question by email, I will ask you to re-post it on discord so the rest of the class can benefit from the answer.
Please only post messages on discord that are appropriate for the entire class to see. Messages about grades or other private matters should be sent directly to the instructor and/or grader.
Grades & Assignments:
Grades for the course will be distributed as follows:
What | Weight | Description | Due Date |
---|---|---|---|
presentation | 10% | 10-minute in-class presentation | Schedule by Sep 13 |
feedback | 20% | Presentation feedback | By end of day of presentation |
assn0 | 10% | Getting Set Up | Sep 9 |
assn1 | 10% | Shader Programming | Sep 20 |
assn2 | 10% | Actor Programming 1 | Oct 4 |
assn3 | 10% | Actor Programming 2 | Oct 18 |
assn4 | 10% | Plugins 1 | Nov 1 |
assn5 | 10% | Plugins 2 | Nov 15 |
assn6 | 10% | Engine Code | Dec 6 |
Programming assignments will be built within the Unreal Engine game engine, but will require the use of the C++ programming language. These assignments may be time-consuming (even assn0!!!). START EARLY!.
Assignments are to be submitted electronically as a tagged git "release" by 11:59 PM on Friday of the week listed unless otherwise noted. Assignments may be submitted up to three days late (by the end of the day on Monday) for a penalty of 5 percent of the possible score per day. We will do a walkthrough of a project solution on the Tuesday after the due date, so assignments more than three days late will receive a score of 0.
Students enrolled for graduate credit will have additional work on most assignment. The graduate components will be more open-ended and may require a bit more independent research and thinking on your part than the undergraduate components.
Class Topics
These will be linked to slides, when available, as the class proceeds
- Getting Set Up
- Shading
- Shader Demo
- Actor Coding
- Large Codebases
- Advanced Actors
- Basic Plugins
- CPU & GPU Hardware
- Advanced Plugins
- Proxy Geometry
- Precomputation
- Engine Internals
- Approximation (Mathematica demo)
- Animation
- Rendering Passes
- Shadows (time permitting)
- Physically-Based Rendering (time permitting)
Tentative Schedule
I'll update this schedule as we go, both for topics that take more or less time than originally planned.
- Sun
- Mon
- Tue
- Wed
- Thu
- Fri
- Sat
- Class
Overview - Class
Setup - Class
Shading - assn0
- Class
Shader Demo - Add/Drop
- Class
Sample Talk
Shader Demo - Schedule Presentation
- Class
Shader Demo - Class
Actors - assn1
- Class
Actors - Class
Large Codebases - Class
Large Codebases - Class
Advanced Actors - assn2
- Class
assn2 Walkthrough - Class
Plugins - Class
Hardware - Class
Hardware - assn3
- Class
assn3 Walkthrough - Class
Acceleration Structures - Class
Advanced Plugins - Class
Advanced Plugins - assn4
- Class
assn4 Walkthrough - Class
assn5 Prep - Class
Proxies - Class
Precomp - assn5
- Class
assn5 Walkthrough - Class
Engine Coding - Class
Approximation - Thanksgiving
- Class
Approx Walkthrough - Class
Animation - assn6
- Class
assn6 Walkthrough
UMBC Policies
Academic Integrity
Accessibility and Disability Accommodations
Sexual Assault, Sexual Harassment, Gender Based Violence and Discrimination
Additional Policies
Academic Integrity
Academic integrity is an important value at UMBC. By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC’s scholarly community in which everyone’s academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. These principles and policies apply in both face-to-face and online classes. Resources for students about academic integrity at UMBC are available at academicconduct.umbc.edu/resources-for-students.
For this course, the expectation is that you can discuss concepts and algorithms, but any code you write should be your own.
Accessibility and Disability Accommodations, Guidance and Resources
Accommodations for students with disabilities are provided for all students with a qualified disability under the Americans with Disabilities Act (ADA & ADAAA) and Section 504 of the Rehabilitation Act who request and are eligible for accommodations. The Office of Student Disability Services (SDS) is the UMBC department designated to coordinate accommodations that creates equal access for students when barriers to participation exist in University courses, programs, or activities.
If you have a documented disability and need to request academic accommodations in your courses, please refer to the SDS website at sds.umbc.edu for registration information and office procedures.
SDS email: disAbility@umbc.edu
SDS phone: 410-455-2459
If you will be using SDS approved accommodations in this class, please contact the instructor to discuss implementation of the accommodations. During remote instruction requirements due to COVID, communication and flexibility will be essential for success.
Sexual Assault, Sexual Harassment, and Gender Based Violence and Discrimination
UMBC Policy in addition to federal and state law (to include Title IX) prohibits discrimination and harassment on the basis of sex, sexual orientation, and gender identity in University programs and activities. Any student who is impacted by sexual harassment, sexual assault, domestic violence, dating violence, stalking, sexual exploitation, gender discrimination, pregnancy discrimination, gender-based harassment, or related retaliation should contact the University’s Title IX Coordinator to make a report and/or access support and resources. The Title IX Coordinator can be reached at titleixcoordinator@umbc.edu or 410-455-1717
You can access support and resources even if you do not want to take any further action. You will not be forced to file a formal complaint or police report. Please be aware that the University may take action on its own if essential to protect the safety of the community.
If you are interested in making a report, please use the Online Reporting/Referral Form. Please note that, if you report anonymously, the University’s ability to respond will be limited.
Notice that Faculty and Teaching Assistants are Responsible Employees with Mandatory Reporting Obligations
All faculty members and teaching assistants are considered Responsible Employees, per UMBC’s Policy on Sexual Misconduct, Sexual Harassment, and Gender Discrimination. Faculty and teaching assistants therefore required to report all known information regarding alleged conduct that may be a violation of the Policy to the Title IX Coordinator, even if a student discloses an experience that occurred before attending UMBC and/or an incident that only involves people not affiliated with UMBC. Reports are required regardless of the amount of detail provided and even in instances where support has already been offered or received.
While faculty members want to encourage you to share information related to your life experiences through discussion and written work, students should understand that faculty are required to report past and present sexual harassment, sexual assault, domestic and dating violence, stalking, and gender discrimination that is shared with them to the Title IX Coordinator so that the University can inform students of their rights, resources, and support. While you are encouraged to do so, you are not obligated to respond to outreach conducted as a result of a report to the Title IX Coordinator.
If you need to speak with someone in confidence, who does not have an obligation to report to the Title IX Coordinator, UMBC has a number of Confidential Resources available to support you:
- Retriever Integrated Health (Main Campus): 410-455-2472; Monday – Friday 8:30 a.m. – 5 p.m.; For After-Hours Support, Call 988.
- Center for Counseling and Well-Being (Shady Grove Campus): 301-738-6273; Monday-Thursday 10:00a.m. – 7:00 p.m. and Friday 10:00 a.m. – 2:00 p.m. (virtual) Online Appointment Request Form
- Pastoral Counseling via The Gathering Space for Spiritual Well-Being: 410-455-6795; i3b@umbc.edu; Monday – Friday 8:00 a.m. – 10:00 p.m.
Other Resources:
- Women’s Center (open to students of all genders): 410-455-2714; womenscenter@umbc.edu; Monday – Thursday 9:30 a.m. – 5:00 p.m. and Friday 10:00 a.m. – 4 p.m.
- Shady Grove Student Resources
- Maryland Resources
- National Resources
Please note that Maryland law and UMBC policy require that faculty report all disclosures or suspicions of child abuse or neglect to the Department of Social Services and/or the police even if the person who experienced the abuse or neglect is now over 18.
Additional Policies
Additional policies on pregnant and parenting students; religious observances and accommodation; and hate, bias, discrimination and harrassment can be found on the Office of Equity and Inclusion site