CS 5610/6610 - Interactive Computer Graphics


Staff

oInstructor

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’

http://www.opengl-redbook.com/

 

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.


 


Grading

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.


Final

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


 


Project

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

 

 


Exams

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…..

Wk

Date

Topic

Reading

1

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)

2

Tues 1/19

Blending

 

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

3

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

4

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

Silhouettes

Read about Testing and Operating on Fragments

5

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

6

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

7

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

8

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

 

9

Tues 3/8

No Class

 

Thur 3/10

Exam 2

Covers through Shadows, not Bump Mapping

One page of notes but closed book

10

Tues 3/15

Spring Break

 

Thurs 3/17

Spring Break

 

11

Tues 3/22

Geometry Shaders

 

 

Thurs 3/24

Geometry and Tessellation Shaders continued

12

Tues 3/29

Volume Rendering

GPU Gems

 

 

Thurs 3/31

 

Volume Rendering

           

13

Tues 4/5

 

Transfer Functions

 

 

Thurs 4/7

Volume Rendering Shadows

Translucent rendering and shadows

 

Translucent rendering

14

Tues 4/12

Screen Space Ambient Occlusion

Wikapedia

CryEngine SIGGRAPH Course

Tutorial

Nvidia

 

Thurs 4/14

??? Vulkan ????

OpenGL AZDO and Vulkan

Migrating from OpenGL

Code Examples

15

Tues 4/19

No class – Work on Project

 

 

Thurs 4/21

No class – Work on Project

16

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


 


Assignments

        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

             

 


 

Updates


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

    https://github.com/assimp/assimp/tree/master/samples/SimpleOpenGL

 

 

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.