Skip to main content

Possible new course: Beyond Programmable Shading

We may offer the course described below this spring for students who have taken CSE 457.  If you think you might take the course, please send me an email (ceney@cs.washington.edu) keeping the subject heading consistent and let me know if you will:

1. Definitely take the course if it’s offered T/TH 1030-noon

2. Definitely take the course if it’s offered T/TH 12-120

3. Might take the course if it’s offered at one of these two times
It would likely be offered T/Th for 1.5 hours each day probably 1030-noon or noon-1:20pm.

It would be 3 credits.

Course info:

Beyond Programmable Shading

A university graduate course to be taught at Stanford University (Mike Houston) and University of Washington (Aaron Lefohn) in the Spring Quarter of 2010

DRAFT 1/8/2010

Course Description:

There are strong indications that the future of interactive graphics programming is a more flexible model than today’s OpenGL/Direct3D pipelines. Researchers and developers are combining flexible parallel graphics architectures and emerging parallel programming models with the traditional graphics pipeline to create new graphics pipelines and algorithms that significantly increase image quality. This course introduces students to the parallel graphics architectures and the parallel programming models that are fueling this change and teaches students how to create interactive rendering algorithms and pipelines that extend, or are completely different than, the traditional Direct3D/OpenGL interactive rendering pipeline. The course also introduces students to many of the unsolved rendering and programming model research topics in this field.

The first part of the course introduces parallel graphics architectures, parallel programming models for graphics, and parallel algorithm primitives. The second part of the course looks at cases studies from recent rendering algorithms and systems—discussing the mix of parallel programming constructs used, details of the graphics algorithms, and how the rendering pipeline and computation interact to achieve the technical goals. The focus is on what currently can be done, how it is done, and future trends. Topics include examples from game developers using these new capabilities in next-generation rendering engines, volumetric and hair lighting, alternate real-time rendering pipelines including ray tracing and micropolygon rendering, in-frame data structure construction, and complex image processing.

This is an advanced graphics course designed for graduate students interested in pursuing research in real-time rendering algorithms, graphics systems, or parallel programming systems. It is open to students who have at least an introductory background in computer graphics and computer systems and architecture. Two short analysis/exploration projects and one large, team-based final project must be completed.

Prerequisites:

Students should be comfortable with OpenGL and/or Direct3D and have had an introductory computer architecture course.

Stanford: CS248 or equivalent introduction to compute graphics course

UW: CSE557 or equivalent introduction to computer graphics course

Syllabus (Two 75-minute lectures per week):

“Background Block”

Week 1:

Introduction: “why and how is graphics programming” and retrospective
A trip down the rasterization graphics pipeline

Week 2:

Overview of current GPU architectures
Overview of proposed future architectures: Larrabee, Fusion, tile-based rendering, etc

Week 3:

Parallel programming for interactive graphics: data-, task-, pipeline parallelism
DirectCompute and OpenCL

Week4:

Data-parallel primitives (scan, reduce, sort, etc)
Building graphics pipelines

“Case Studies Block”

Week 5:

Game task graphs and “blurring lines between graphics and compute” (DICE work)
MegaTexture (id Tech5) and  Voxel rendering (id Tech6)

Week 6:

Image processing – i.e. fuzzy/blurry things like DOF, recursive filters, etc.
Shadows

Week 7:

Rasterizing transparent objects (esp. hair rendering)
Real-time ray tracing

Week 8:

Real-time micropolygon rendering
Game physics (focus on parallelization challenges and interactions with graphics system)

Week 9

What if the pipeline is just software?
Open questions: future of graphics APIs and real-time graphics programming systems

Week 10:

(Deadweek at most universities – course debrief and reviews)

Week 11:

Project presentations

Projects:

Project #1 (1.5 weeks)

–          Assign middle of week 2 due end of week 3 (individual project)

–          TODO: We need to decide on one of the following

  • Build a CPU task system that supports a “parallel_for” construct (no SIMD use)?
  • “Hello world” OpenCL + OpenGL program?

Project #2 (2.5 weeks)

–          Assign middle of week 3 due end of week 5 (individual project)

–          Heterogeneous parallel compute “warm-up” that uses a mix of task-, data-, and pipeline parallelism on a combination of CPU and GPU to draw a picture.

  • Could use OpenCL tasks on CPU, OpenCL data-parallel compute on CPU or GPU, and OpenGL graphics pipeline.
  • Could use Thread Building Blocks (TBB) tasking on CPU with DirectX 11 data-parallel compute and graphics pipeline on GPU.

–          We will provide examples of possible examples but students will be free to choose a different problem as long as they incorporate all forms of parallelism into their application.

Term project (4-5 weeks)

–          Assign middle of week 5 (group project with 2-3 people per team)

–          Proposal due week 6, checkpoint week 8

–          We will provide a list of possible ideas, but we expect teams to propose their own ideas with the best projects being prototypes of new research ideas. Example scope of ideas includes:

  • New rendering algorithms that use all compute resources in machine and mixes of parallelism
  • New rendering system (
  • New parallel programming systems for CPU or GPU targeted at graphics

Readings:

Background material (helpful but not required):

–          Real-Time Rendering—Akenine-Moller, Haines, and Hoffman

–          Fundamentals of Computer Graphics—Shirley et al

–         Computer Architecture: A Quantitative Approach—Hennessy and Patterson

–         Patterns for Parallel Programming—Mattson, Sanders, and Massingill

Material for the course:

–          No text book currently exists for this material. Throughout the quarter, we will recommend reading from a combination of recent conference presentations, research papers, API documentation, and books.

March 4, 2010