Computer Science 22C:251, Spring 2008

Class Time: Tuesdays & Thursdays 9:30-10:45am, 218 MacLean Hall

[ Download a Syllabus ]

Professor: Chris Wyman
E-mail: cwyman@cs.uiowa.edu (Preferred contact method)
Office: 101J MacLean Hall
Phone: (319) 353-2549 (Please use e-mail when possible)
Office Hours: TTh 10:45 am - 12:15 pm
Course Synopsis
Open to any student with basic OpenGL experience. We'll cover in greater depth the OpenGL pipeline:
  • Performance considerations and rendering bottlenecks.
  • Programmable hardware (vertex, geometry, and fragment shaders) and fixed-function pipeline limitations.
  • Ways of accelerating "non-traditional" graphics problems (e.g., visualization, image processing)
  • Ways to accelerate more realistic rendering techniques.

Textbooks:


Announcements:


Assignments:

(Submit your assignments using ICON. Follow these instructions. In particular, only submit one single .zip or .tgz file.)

Homework #5 (Due: Thursday, May 15th @ 9:45am)

Homework #4 (Due: Tuesday, April 22nd)

Windows OpenGL Framework for Visual Studio: [.zip] [README]
Linux OpenGL Framework (w/Makefile for g++): [.tgz] [README]


Windows (only) demos:
  • Complex mirror scene demo (Should run on any Windows machine)
  • Interactive refraction demo (Needs nVidia card with EXT_framebuffer_object extension)
  • Simple render-to-texture reflections demo (Needs any card with EXT_framebuffer_object extension)
  • Simple stenciled reflections demo (Should run on any Windows machine)

    High-level code snippets:
  • Stencil-based planar reflections (for demo above) (Briefly examined in class a while ago)
  • Render-to-texture planar reflections (for demo above) (Briefly examined in class a while ago)

    Relevant papers:
  • Interactive Reflections on Curved Objects
  • A GPU-driven Algorithm for Accurate Interactive Reflections on Curved Objects
  • An Approximate Image-Space Approach for Interactive Refraction
  • Real-Time Relief Mapping on Arbitrary Polygonal Surfaces

  • Homework #3 (Due: Thursday, Mar 27th)

    For Problem 1:
  • More details about the Game of Life. Sample start state.
  • Sample input for image processing: rose, jittered rose, noisy rose, hat lady, New Zealand
  • More information about various filters: [Box Filter] [Canny Edge Detector] [Gaussian Filter] [LaPlace Filter] [Median Filter] [Sobel Filter]

    For Problem 2:
  • Sample input models: Buddha (50k) Cow Molecule Triceratops
  • Code to load ".hem" models: [.tar.gz] [.zip]
  • Sample usage of .hem code (to convert OBJ->HEM): [Linux (.tar.gz)] [Windows (.zip)]
  • Example images: Cow, Buddha 1, Buddha 2, Buddha 3 (All drawn silhouettes + phong shaded object)

    Code Snippets:
  • Framebuffer Object Class: [.h] [.cpp] [README]
  • Frame Capture / Screenshot Class: [.zip]
  • Video Capture Class (Windows Only): [.zip]

  • Homework #2 (Due: Thursday, Feb 28th)

    Simple models can be found here.
    Homework #1 (Due: Thursday, Feb 14th)

    Required Models: Low-Res Dragon, Mid-Res Dragon, High-Res Dragon, Low-Res Buddha, Mid-Res Buddha, High-Res Buddha.
    Optional Models: Yeah Right, Cube, Bunny
    Images: Transparent Earth Texture (.rgb), Checker Pattern, Non-Transparent Earth Texture

    Code Snippets:
  • Code for reading images in PPM, BMP, and RGB formats.
  • Text drawing utility code: [.cpp] [.h]
  • Framerate computations: [.cpp] [.h]
  • High resolution timer (used by framerate class): [.h]
  • Trackball class: [.cpp] [.h]
  • GLM code (reads .obj & .smf files)
  • Sample framework, including Makefile, for 301 MLH lab that includes all the files, and a basic OpenGL program that demonstrates how to use them.
  • Sample framework, including Visual Studio Project, for Windows machines that includes all the files, and a basic OpenGL program that demonstrates how to use them.
  • Sample display list code for a sphere. Vertex array code for the same sphere. Vertex array idea for a more complex object.

  • Student Web Pages:

    Note: If you do not want your page listed here, please let me know!
    1. Noah Abrahamson
    2. Chris Bush
    3. Jonathan Hall
    4. Thomas Hansen
    5. Chelsey Keller
    6. Ju Li Khaw
    7. JT Kimbell
    8. Alberto Lopez Rubio
    9. Vani Murarka
    10. Ritesh Nadhani
    11. Rajeev Penmatsa
    12. Shashank Polasa Venkata
    13. David Quackenbush
    14. Dan Slaubaugh
    15. Scott Small
    16. Uday Verma
    17. Brian Washburn


    Notes About Graphics Hardware Requirements:

    We will talk about and use very advanced OpenGL features in this course. I plan to teach the course using hardware based on the "DirectX 10" pipeline. Five machines in the MLH 301 lab are now equipped with GeForce 8600 GTS donated by nVidia:

    Please note that these are the only lab machines that are guaranteed to work for all the assignments this semester. Other machines may work for some assingments or parts of others. Also note that you must physically be at the terminal to utilize this hardware -- you cannot use it via SSH. These machines should all be in the back row.

    If 5 machines are not enough (when combined with the few people with suitable home machines), I may allow students access to a few of my lab machines in MLH 317. However, these may not be accessible all the time, and have Windows (instead of Linux) installed, which may make switching back and forth between 301 and 317 challenging. Please plan to do assignments far enough in advance to handle machine-scheduling conflicts.

    If you do not have a GeForce 8x00 or a Radeon HD 2x00 or 3x00 card (all new in the last year), you will not be able to do all assignments from home. If, for some reason, you plan to buy a new video card explicitly for this class, you may wish to chat with me for suggestions.


    Helpful Links:

    OpenGL Links: University Policy Links:


    Last Modified: Wednesday, October 25, 2007

    Chris Wyman (cwyman@cs.uiowa.edu)