CS 5610/6610 - Spring 2021
Interactive Computer Graphics

Instructor:Cem Yuksel
Time:Tuesday & Thursday @ 2:00pm - 3:20pm
TAs: Daqi Lin
Hyojoon Park


This course covers the fundamental concepts of interactive (and real-time) rendering. The topics covered in this course are directly related to any application domain that displays 3D information, ranging from video games to interactive visualization. This is a project-heavy course with multiple programming assignments.

Interactive rendering often relies on the GPU hardware to perform most of the rendering-related tasks. Therefore, this course will cover topics related to GPU programming for interactive rendering. The examples that will be covered in this course will use the OpenGL API and the OpenGL Shading Language (GLSL), but students are permitted to use other fundamental graphics API like Direct3D or Vulkan for their projects.

The Canvas page for the course will be primarily used for project submissions, announcements, and online discussions.

Course Objectives

The main objective of this course is to introduce students the fundamental concepts of interactive rendering in computer graphics. At the conclusion of this course students will be able to:
  • Understand the stages of the interactive graphics rendering pipeline,
  • Effectively use OpenGL and GLSL,
  • Write complex GPU shaders, and
  • Implement modern interactive rendering methods.

Learning Outcomes

Given a 2D or 3D virtual scene representation, students will be able to develop interactive applications that can display the given scene with proper shading, textures, lighting, and shadows; write GPU shaders that can perform tessellation and geometry modifications; and implement algorithms for handling reflections and visibility computations.

Online Lectures

All lectures of this course will be online via interactive video conferencing. Lectures will also be streamed live on youtube and recorded. The recordings will be made available to the students. More details on the lectures are available on canvas.

Online Assistance

The instructor and the TAs of this course will be available for consultation and assistance to help students implement their projects and answer their questions. We will use piazza for all course-related communication.


This course will not follow a textbook. Students, who would like to improve their background knowledge on fundamentals of computer graphics, can refer to the textbook for CS 4600 (Introduction to Computer Graphics).

Schedule (subject to change)

WeekDateTopicProject Deadlines
1Jan 19Introduction
Jan 21Images and Transformations
2Jan 26Rendering Algorithms
Jan 28Windowing APIs
3Feb 2Introduction to Modern OpenGLProject 1 deadline - Hello World
Feb 4Introduction to GLSL
4Feb 9Triangular MeshesProject 2 deadline - Transformations
Feb 11Lights and Shading
5Feb 16TexturesProject 3 deadline - Shading
Feb 18Textures on the GPU
6Feb 23Render to TextureProject 4 deadline - Textures
Feb 25The Rendering Equation
7Mar 2Environment MappingProject 5 deadline - Render Buffers
Mar 4Reflections
8Mar 9ShadowsProject 6 deadline - Environment Mapping
Mar 11Shadow Mapping
9Mar 16Geometry ShadersProject 7 deadline - Shadow Mapping
Mar 18Final Project Discussions
10Mar 23Tessellation Shaders [1]Final Project Proposal deadline
Mar 25Bump, Normal, Displacement, and Parallax Mapping
11Mar 30Compute Shaders and Mesh Shaders [2]Project 8 deadline - Tessellation
Apr 1Deferred Shading
12Apr 6Global Illumination
Apr 8Ambient Occlusion and Soft Shadows
13Apr 13Transparency, Blending, and Alpha TestingFinal Project Progress Report deadline
Apr 15Volume Rendering
14Apr 20GPU Ray Tracing
Apr 22General Discussion
Apr 27Final Project Discussions
Time: 2:00pm-3:20pm
Final Project deadline - Final Project


Students must submit their source codes for each project through Canvas. Students are highly encouraged to use C++ for their projects.

All projects, except for the final project, are individual projects. Group projects are permitted only for the final project.

For individual projects, each student must write his/her own code. Collaboration between students is encouraged, but code sharing is not permitted.

External libraries and source code can be used only for additional functionalities that are not core parts of the projects, and they should be clearly indicated in comments within the source code and in the project report.

Failure to follow these rules may lead to a failing grade. Academic misconduct will not be tollerated. See the Academic Misconduct Policy of the School of Computing for details.

Deadlines and Late Submissions: The deadline for each project is at noon (12:01pm) on the date indicated on the schedule (see above). Late submissions suffer a 5% penalty and an additional 5% penalty is applied every day at noon (12:01 PM). To accommodate for special circumstances, the first 10 late penalties of each student will be omitted.

Resubmissions: Students are permitted to resubmit their projects after the submission deadline for up to 20 days. Resubmissions are not allowed for the final project. Project submissions close 20 days after the deadline. Resubmissions can be used for fixing bugs or incorrectly implemented parts of the projects. As long as the first submission of a project shows a clear attempt to complete the project, no late penalty is applied to subsequent resubmissions.

Final Project: No late submissions or resubmissions are permitted for the the final project. Students are permitted to form groups for the final project only.

Project submissions are handled through canvas.


Project 1-35 points
Projects 4-810 points
Final Project Abstract5 points
Final Project Progress Report5 points
Final Project25 points
TOTAL100 points

School of Computing Policies and Guidelines

The School of Computing Policies and Guidelines represent important information that students taking courses in, or seeking degrees from, the School of Computing, must be aware of. It is important that you read, understand, and adhere to this information.

Safe Classroom Environment

In this class, derogatory comments based on race, ethnicity, class, gender identity, sexual orientation, religion, (dis)ability status, age, citizenship, or nationality will not be tolerated, nor is it permissible to state one's opinion in a manner that silences the voices of others. Further, egregious disrespect, including, but not limited to, racism, sexism, ageism, homophobia, transphobia, classism, etc. will not be tolerated.

University of Utah Disability Accommodation Policy

The University of Utah seeks to provide equal access to its programs, services, and activities for people with disabilities. If you need accommodations in the class, reasonable prior notice should be given to the Center for Disability Services, 162 Olpin Union Building, 801-581-5020 (V/TDD), http://disability.utah.edu/. CDS will work with you and the instructor to make arrangements for accommodations.

University Safety Statement

The University of Utah values the safety of all campus community members. To report suspicious activity or to request a courtesy escort, call campus police at 801-585-COPS (801-585-2677). You will receive important emergency alerts and safety messages regarding campus safety via text message. For more information regarding safety and to view available training resources, including helpful videos, visit safeu.utah.edu.


  1. M. Nießner, B. Keinert, M. Fisher, M. Stamminger, C. Loop, and H. Schäfer. 2016. Real-Time Rendering Techniques with Hardware Tessellation. In Computer Graphics Forum, Vol. 35, No. 1, pp. 113-137.
  2. Shawn Hargreaves. 2020. Reinventing the Geometry Pipeline: Mesh Shaders in DirectX12. DirectX Dev Day.