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

  1. Know a variety of advanced graphics techniques used in games
  2. Know how to navigate and make changes to a large pre-existing codebase
  3. Integrate advanced graphics techniques into a game environment
  4. Present technical topics to a knowledgeable audience

Requirements:

I will assume you can program in C++, are comfortable using know data structures and linear algebra, and know at least some calculus. 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

Getting Help:

Instructor: Dr. Marc Olano <olano@umbc.edu>
Office Hours: TuTh 1:30-2:30, ITE 217

Grader: Nagesh Chennakeshava <nageshc1@umbc.edu> (grading questions only)

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 projects, 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:

Grades for the course will be distributed as follows:

What Weight Description Due Date
presentation 20% Two 10-minute in-class presentations Schedule by Sep 12
feedback 20% Presentation feedback By end of day of presentation
proj1 10% Shader Programming Sep 11
proj2 10% Actor Programming 1 Sep 25
proj3 10% Actor Programming 2 Oct 9
proj4 10% Plugins 1 Oct 25
proj5 10% Plugins 2 Nov 8
proj6a 10% Engine Code Nov 15
proj6b Dec 4

Programming projects will be built within the Unreal Engine game engine, but will require the use of the C++ programming language. These projects may be time-consuming. START EARLY!.

Projects are to be submitted electronically as a tagged git "release" by 11:59 PM on the due date. Projects may be submitted up to three days late for a penalty of 5 percent of the possible score per day. We will do a walkthrough of a project solution on the following day, so projects more than three days late will receive a score of 0.

Students enrolled for graduate credit will have additional work on most projects. 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

Schedule

I'll update this schedule as we go, to reflect the content covered each day.

UMBC Policies

Academic Integrity

Accessibility and Disability Accommodations

Sexual Assault, Sexual Harassment, Gender Based Violence and Discrimination

Pregnant and Parenting Students

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.

The purposes of higher education are the learning students and faculty undertake, the knowledge and thinking skills developed, and the enhancement of personal qualities that enable students to be strong contributing members of society. In a competitive world, it is essential that all members of the UMBC community uphold a standard that places integrity of each student’s honestly earned achievements above higher grades or easier work dishonestly sought.

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 will not share or look at any class-related code from current or former students. For this class it is acceptable to use AI assistance in your programming, but if you do, you must 1) document exactly what part(s) of project were done by AI and what your direct contributions were, 2) understand all of the code you submit, even the AI code, and be able to explain it if asked, and 3) ensure what you submit actually satisfies the project requirements, using the algorithms specified.


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 Disability Access and Resources (DAR) 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 DAR website at accessibility.umbc.edu for registration information and office procedures.

DAR email: adasupport@umbc.edu

DAR phone: 410-455-2459

If you will be using DAR 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 ecr@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 Mandated Reporters with Mandatory Reporting Obligations

All faculty members and teaching assistants are considered Mandated Reporters, per UMBC’s Interim Policy on Sex Discrimination, Sex-Based Harassment, and Sexual Misconduct. 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.

Women’s, Gender, and Equity 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.

Other Resources

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 even if the person who experienced the abuse or neglect is now over 18.


Pregnant and Parenting Students

UMBC’s Interim Policy on Sex Discrimination, Sex-Based Harassment, and Sexual Misconduct expressly prohibits all forms of discrimination and harassment on the basis of sex, including pregnancy. Resources for pregnant, parenting and breastfeeding students are available through the University’s Office of Equity and Civil Rights. Pregnant and parenting students are encouraged to contact the Title IX Coordinator to discuss plans and ensure ongoing access to their academic program with respect to a leave of absence – returning following leave, or any other accommodation that may be needed related to pregnancy, childbirth, adoption, breastfeeding, and/or the early months of parenting.

In addition, students who are pregnant and have an impairment related to their pregnancy that qualifies as disability under the ADA may be entitled to accommodations through the Office of Disability Access and Resources (DAR).


Additional Policies

Additional policies on religious observances and accommodation; and hate, bias, discrimination and harrassment can be found on the Office of Equity and Civil Rights site