CS 5610/6610 - Interactive Computer Graphics



Chuck Hansen

Email: hansen 'at' cs dot Utah dot edu

Office: 4692 WEB (south-west corner, 4th floor Warnock Bldg.)

Hours: Just email me and we’ll set up a meeting time

oTeaching Assistant

Vikram Singh

Email: u1016510 ‘at’ Utah dot edu

Announced each day, held in 3115 MEB, or email for an appointment.

If you plan on visiting the TA during TA hours, please also email him so that he knows you are coming.

Monday:          2-5pm

Wednesday:    9:30am to 12:30pm

Friday:             9:30 am to 11:30 am

Student Info

This is not an introductory course. That would be CS 4600 which is offered in the Fall semester. If you have not taken CS 4600 or an Introduction to Computer Graphics course, you need to discuss this with the instructor. I will not allow students to register for the course without appropriate pre-requisites.  You are expected to be proficient at OpenGL programming before taking this course.

oLecture: L110 WEB, TTh 2-3:20pm

oTextbook: We will use on-line resources,

            On-line resource GLSL Specification:      https://www.opengl.org/documentation/glsl/


            Optional books you may find of help:


OpenGL Programmers Guide:

the ‘Red Book’



OpenGL Super Bible (strongly recommended): http://www.openglsuperbible.com/



oClass mailing list: We will use sympa in the CADE for discussions and questions.  Please feel free to respond to other students just don’t post solutions!

                                    We’ll use one mailing list for both CS5610 and CS 6610.  Please sign up as Chuck and Vikram will send emails to this rather than

                                    Discussions in Canvas.


Subscribe with this link using your preferred email address


To post questions, issues, non-spam, send email to: cs5610@list.eng.utah.edu 

I expect all questions about the lectures, assignments, or the class in general to be sent to the class email list. The reason is that others may very well have the same question and it saves myself and the TA from repeatedly answering the same question. Don't be bashful about posting to the class email list ... everyone is learning!

College of Engineering Guidelines

College Guidelines (pdf file)


Course Philosophy and Objectives

In this course we will explore advanced graphics topics utilizing features in the OpenGL graphics library and GLSL the OpenGL Shading Language. This will entail reading material handed out in class or on-line, attending lectures and applying those concepts to multiple programs to be assigned during the semester. We will also read research papers where graphics ideas were presented and learn how to transform these ideas into concrete working projects. There will be a final project based on a research paper of your choice. A good project for CS 5610 would be a particle system for smoke and fire and a good project for CS 6610 is to an algorithm described in a paper from the one of the recent SIGGRAPH proceedings or I3D.

The emphasis will be on programming for more extensive effects than Gouraud shading and other advanced graphics topics. This is a programming course, be prepared for heavy programming. I know of no other way to really learn OpenGL/GLSL. Since we are not using a textbook, there will be on-line material to read and lots of handouts consisting of research papers you are expected to read and discuss in class. It is important to read these handouts, they form the basis for the advanced topics we will be discussing in class and you will be implementing as assignments. In class discussion will focus on issues raised by the readings including both handouts and the textbook. A substantial (same work as one programming assignment) final project will involve implementing a paper from the SIGGRAPH proceedings or an advanced graphics algorithm agreed upon with the instructor.

You will learn to program interesting effects for computer graphics. You will also learn to read research papers and implement algorithms from them. This is a skill you will use throughout your professional career.

Above all, this course should be fun.



80% assignments (Project counts as 2 assignments)
15% exams
5% class participation

Cheating will not be tolerated.  If you are caught cheating, you will fail the class. You should work alone and you may not copy code from any web-page or other resource than the book and the book’s web-page.  DON'T share code: it is considered cheating! DON'T grab code off the web: it is considered cheating! (we check; you will fail the class!) DON’T use code from other students or other books: it is considered cheating!

Late penalty: -20%/day. But you have 4 free late-days. That is, you can use these to avoid a late penalty since stuff-happens. Yes, this is stiff but you should turn in what you have for partial credit rather than try to complete an assignment a week late.
NO Incompletes, except for very serious medical reasons. Turn in semi-working stuff for partial credit.


There will not be a final. Grades will be assigned based upon the homeworks, the project, and exams.



Project Assignment (You should think about what you are doing) will be given mid-semester.

Preliminary Project Results and running code will be due 2-3 week prior to the end of the semester. Your preliminary results must contain a demo code of a partially completed project.  Something must RUN to demonstrate you have started and are on the way to completing your project. a web-link to your project writeup, as well as a report on what you have done and what you will do to complete the project. Intermediate results are required, a fully developed, running program is not. 


If you are lost about what to do for a project, check out the ACM Symposium on Interactive 3D Graphics (use the Marriott Library to access on-line journals) or ACM SIGGRAPH. Another resource is Ke-Sen Huang’s list of conferences.

If you are still lost, try a specific paper like Chris Wyman's "An Approximate Image-Space Approach for Interactive Refraction" which uses shader programming. If you are still lost, let me know.


Project Talk (last week of classes): You are required to give a short (5-10 min) talk on your project. This should 1) introduce your project, 2) describe where you are with your project (include 1-2 screen shots), 3) describe what else you will do with your project. This presentation is the class presentation and combined with the preliminary results is 25% of your grade. The remaining 75% will depend on your final project.

Project Demo: You are required to demo your project.


To sign up for a demo time on Monday/Tuesday (May 2/3), look at the web page and send Chuck Hansen email: https://www.eng.utah.edu/~cs5610/project.html




2005 exams (one and two).

2009 exam solutions (one and two)


Solution Exam1 2015


Solution Exam1 2016


Solution Exam2 2016




Weekly Plan 2016 – This changes as the semester moves along…..






Tues 1/12

Course Overview

GLSL Intro


Thur 1/14

GLSL continued

Review per vertex/per fragment lighting

(see OpenGL Super Bible Phong Lighting Example)


Tues 1/19



Blending Lecture



Thur 1/21

Blending (reading assignment)

“Transparency and antialiasing algorithms

implemented with the virtual pixel maps technique”, A. Mammen


Object Independent Transparency


Dual Depth Peeling


Nvidia Demo of Dual Depth Peeling


Tues 1/26

Texture Mapping (reading assignment)

2-part texture mapping

"Two-Part Texture Mapping", Bier and Sloan  Pyramidal Parametrics", Lance Williams


Thur 1/28

Texture Filtering


Tues 2/2

Environment Mapping

OpenGL CubeMap Fixed-Function

"Environment Mapping and other applications of World Projections", Ned Greene


Thurs 2/4

Stenciling, silhouettes and decaling

Hidden Lines


Read about Testing and Operating on Fragments


Tues 2/9

Shadow Maps and Percent Closer Filtering

Curved Shadows on Curved Reflectors", Williams and "Rendering Antialiased Shadows with Depth Maps", Reeves et al."


Thurs 2/11

Shadows Volumes

A General Version of Crow's Shadow Volumes, Bergeron and A Survey of Shadow Algorithms", Woo, Poulin, Fournier


Tues 2/16

Exam 1


Thurs 2/18

OpenGL Shadow Maps


Efficient Hybrid Shadows

Shadow Volume Reconstruction from Depth Maps, Michael D. McCool (great shadow volume/shadow map hack!


Fast Shadows and Lighting Effects Using Texture Mapping, Segal et al. (projective textures)


An Efficient Hybrid Shadow Rendering Algorithm, Eric Chan and Fredo Durand


Penumbra Maps: Approximate Soft Shadows in Real-Time, Chris Wyman and Charles Hansen Rendering Fake Soft Shadows with Smoothies, Eric Chan and Fredo Durand


Tues 2/23

Early-Z Reject


Soft Shadows


Penumbra Maps: Approximate Soft Shadows in Real-Time, Chris Wyman and Charles Hansen


Rendering Fake Soft Shadows with Smoothies, Eric Chan and Fredo Durand


Thurs 2/25

Bump Mapping and Tangent Space


Mathematics of Bump Mapping

Derivation of tangent space basis vectors for polygons


Tues 3/1

Bump Mapping Planar Reflectors

Bump Mapping in Cg


Thurs 3/3

Curved Reflectors


           Interactive Reflections on Curved Objects, Ofek and Rappoport


GPU Curved Reflectors



Tues 3/8

No Class


Thur 3/10

Exam 2

Covers through Shadows, not Bump Mapping

One page of notes but closed book


Tues 3/15

Spring Break


Thurs 3/17

Spring Break



Tues 3/22

Geometry Shaders



Thurs 3/24

Geometry and Tessellation Shaders continued


Tues 3/29

Volume Rendering

GPU Gems



Thurs 3/31


Volume Rendering



Tues 4/5


Transfer Functions



Thurs 4/7

Volume Rendering Shadows

Translucent rendering and shadows


Translucent rendering


Tues 4/12

Screen Space Ambient Occlusion


CryEngine SIGGRAPH Course




Thurs 4/14

??? Vulkan ????

OpenGL AZDO and Vulkan

Migrating from OpenGL

Code Examples


Tues 4/19

No class – Work on Project



Thurs 4/21

No class – Work on Project


Tues 4/26

Project Presentations

Make a web page – 5 min maximum presentation


Mon 5/2

Project Demos (signup by sending email)



Tues 5/3

Project Demos (signup by sending email)


Lecture Notes

Lecture Notes from class 2013. Current lecture notes are linked from the weekly plan



        Assignment 1  due 11:59pm, February 10, 2016 (NEW DUE DATE)

            Assignment 2 due 11:59pm, February 24, 2016

            Assignment 3 due 11:59pm, March 11, 2016

            Project Proposal due 11:59pm, March 28, 2016 (start looking for the project you wish to do!  See the project info listed above the weekly schedule)

            Assignment 4 due 11:59pm, April 1, 2016


            Final Project





Course Materials, Handouts, Resources, Links

Getting Started (this gets built into the OpenGL Super Bible code tree)


Code.rar (example OBJ reader from the TA)

    It has a sample file from here




OpenGL Super Bible Examples

Lighthouse3D GLSL tutorial

Open.GL (intro to OpenGL/GLSL)


OpenGL State Machine Diagram

OpenGL Examples Adv96 (fixed function pipeline examples)

OpenGL Examples Adv97 (fixed function pipeline examples)

OpenGL Tutorials for x86 Linux  (fixed function pipeline examples)

Nate Robbins' OpenGL tutorial page (fixed function pipeline examples)

GLSL Orangebook Demo (3DLabs Shader Demos)


This page is very much under construction. Please check back frequently for updates.