CS 5610/6610 - Spring 2020
Interactive Computer Graphics

Instructor:Cem Yuksel (Office hours: by appointment, MEB 3116)
Time:Tuesday & Thursday @ 2:00pm - 3:20pm
Location:WEB L110
Contact:cs6610@googlegroups.com (includes instructor & TA)
TA: Siddhant Ranade
Office Hours: Mondays, Wednesdays, and Fridays: 1pm to 3pm


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 discussion board.

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.

Schedule (subject to change)

WeekDateTopicProject Deadlines
1Jan 7Images and Transformations
Jan 9Rendering Algorithms
2Jan 14The Graphics Pipeline
Jan 16Introduction to GLUT & GLFW
3Jan 21Introduction to Modern OpenGLProject 1 deadline - Hello World
Jan 23Introduction to GLSL
4Jan 28Lights and ShadingProject 2 deadline - Transformations
Jan 30The Rendering Equation
5Feb 4TexturesProject 3 deadline - Shading
Feb 6Textures (cont.)
6Feb 11Render to TextureProject 4 deadline - Textures
Feb 13— TA lab session —
7Feb 18Environment MappingProject 5 deadline - Render Buffers
Feb 20Reflections
8Feb 25ShadowsProject 6 deadline - Environment Mapping
Feb 27Shadow Mapping
9Mar 3Geometry ShadersProject 7 deadline - Shadow Mapping
Mar 5Final Project Discussions
10Mar 10— Spring Break —
Mar 12— Spring Break —
11Mar 17— No Class —
Mar 19Tessellation Shaders [1]Final Project Proposal deadline
12Mar 24Bump, Normal, Displacement, and Parallax Mapping
Mar 26Mesh Shaders [2], Compute Shaders, and SelectionProject 8 deadline - Tessellation
13Mar 31Global Illumination and Ambient Occlusion
Apr 2Light Mapping and Soft Shadows
14Apr 7Deferred ShadingFinal Project Progress Report deadline
Apr 9Transparency and Alpha Blending
15Apr 14Volume Rendering
Apr 16GPU Ray Tracing
16Apr 21General Discussion
Apr 23
Apr 24Final Project Presentations
Time: 1:00pm-3:00pm
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.

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 20% penalty and an additional 20% penalty is applied on each following class day at noon. Therefore, a project that is submitted two weeks after its deadline can only receive up to 20% of its total points. If a project is submitted more than two weeks later than its deadline, it will receive no points. To accomodate special circumstances, first three late penalties (i.e. up to 60% late penalty) of each student will be omitted. No late submission is accepted for the final project without prior permission from the instructor.

Project submissions are handled through canvas.

All projects are individual projects. Group projects are not permitted. Therefore, 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 tolerated. See the Academic Misconduct Policy of the School of Computing for details.


Project 1-35 points
Projects 4-810 points
Final Project Abstract5 points
Final Project Progress Report10 points
Final Project20 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.