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 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, ...).
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
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, ISBN 978-1138627000.
Discord: We will be using the 491-graphics 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:
|presentation||10%||10-minute in-class presentation||Schedule by Sep 16|
|feedback||20%||Presentation feedback||By end of day of presentation|
|assn0||10%||Getting Set Up||Sep 12|
|assn1||10%||Shader Programming||Sep 23|
|assn2||10%||Actor Programming 1||Oct 7|
|assn3||10%||Actor Programming 2||Oct 21|
|assn4||10%||Plugins 1||Nov 4|
|assn5||10%||Plugins 2||Nov 18|
|assn6||10%||Engine Code||Dec 9|
Programming assignments will be built within the Unreal Engine game engine, but will require the use of the C/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.
These will be linked to slides as the class proceeds
- Shader Demo
- Actor Coding
- Large Codebases
- Advanced Actors
- Graphics Hardware
- Basic Plugins
- Acceleration Structures (no slides)
- Advanced Plugins
- Proxy Geometry
- Fitting and Approximation
- Engine Coding
- Rendering Passes
- Physically-Based Rendering (time permitting)
- Animation (time permitting)
I'll update this schedule as we go, both for topics that take more or less time than originally planned.
- Schedule Presentation
- NO CLASS
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.
UMBC has set clear expectations for masking while on campus that include the requirement that you must wear a face mask that covers your nose and mouth in all classrooms and labs regardless of your vaccination status. This is to protect your health and safety as well as the health and safety of your classmates, instructor, and the university community. Anyone attending class without a mask or wearing one improperly will be asked by the instructor to put on a mask or fix their mask in the appropriate position. Any student that refuses to comply with this directive will be asked to leave the classroom immediately and failure to do so will result in the instructor requesting the assistance of the University Police. Students who refuse to wear masks may be referred to Student Conduct and Community Standards and may face disciplinary action for violations of the Code of Student Conduct, specifically, Rule 2: Behavior Which Jeopardizes the Health or Safety of Self or Others and Rule 16: Failure to Comply with the Request of a University Official. UMBC’s on-campus safety protocols, including masking requirements, are subject to change in response to the evolving situation with Covid-19
More information here.
Class absences may take the form of not attending an in-person class or a scheduled synchronous online class; or not participating in online class activities (synchronous or asynchronous). Students who are absent from class due to COVID-19-related situations are expected to communicate directly with the course instructor. Students should submit notification of the absence in writing to their instructor either prior to the absence or as soon afterwards as possible. If the COVID-19 related absence coincides with graded work (e.g., homework, in-class activities, quizzes, presentations, activities, etc.), students should work with the instructor to arrange for an academic accommodation.
It is important to affirm that class absences, COVID-19-related or not, do not alter the academic requirements of any course and students remain responsible for information and material missed during the absence. Additionally, COVID-19-related absences are not considered a “disability” and as such do not require that students seek accommodations from the Office of Student Disability Services.
More information here.
Accessibility and Disability Accommodations
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: email@example.com
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, Gender Based Violence and Discrimination
UMBC Policy and Federal law (Title IX) prohibit 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 retaliation should contact the University’s Title IX Coordinator to make a report and/or access support and resources:
Mikhel A. Kushner, Title IX Coordinator (she/they)
410-455-1250 (direct line), firstname.lastname@example.org
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 or thinking about 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 are Responsible Employees with Mandatory Reporting Obligations:
All faculty members are considered Responsible Employees, per UMBC’s Policy on Sexual Misconduct, Sexual Harassment, and Gender Discrimination. Faculty are therefore required to report any/ all available information regarding conduct falling under the Policy and violations 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 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 assault, domestic and interpersonal 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:
- The Counseling Center (Main Campus): 410-455-2472 / After-Hours 410-455-3230 [Monday – Friday; 8:30 a.m. – 5 p.m.]
- Center for Counseling and Consultation (Shady Grove Campus): 301-738-6273 (Messages checked hourly) Online Appointment Request Form
- University Health Services: 410-455-2542 [Monday – Friday 8:30 a.m. – 5 p.m.]
- Pastoral Counseling via Interfaith Center: 410-455-3657; email@example.com [7 days a week; Fall and Spring 7 a.m. – 11 p.m.; Summer and Winter 8 a.m. – 8 p.m.]
- Women’s Center (for students of all genders): 410-455-2714; firstname.lastname@example.org. [Monday – Thursday 9:30am-6pm and Friday 9:30am-4pm]
- Shady Grove Student Resources, Maryland Resources, National Resources.
Child Abuse and Neglect:
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.
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