Computer Graphics Programming II


Table of Contents

Course Description
Prerequisite
Texts
Required Materials
Grading
Grading Scale
Late Work
Attendance and Participation
AiPD Policies
Lab Policies
Plagiarism
Students with Disabilities
Course Calendar
Week 1 ( January 12th, 2010 )
Week 2 ( January 26th, 2010 )
Week 3 ( January 29th, 2010 )
Week 4 ( February 2nd, 2010 )
Week 5 ( February 9th, 2010 )
Week 6 ( February 16th, 2010 )
Week 7 ( February 23rd, 2010 )
Week 8 ( March 2nd, 2010 )
Week 9 ( March 9th, 2010 )
Week 10 ( March 16th, 2010 )
Week 11 ( March 23rd, 2010 )

Course Description

VGP352A

Winter 2010, 3 credits

Tuesday, 6:00PM - 9:45PM

Room #202

In this course students will be introduced to principles of 3D computer graphics using the OpenGL programming interface. Students will learn fundamental concepts of transformation, lighting, and texturing.

By the end of the course, students will be able to:

  • Understand and implement advanced per-pixel lighting algorithms.
  • Understand and implement procedural textures.
  • Understand and implement render-to-texture type algorithms.
  • Read, understand, and make use of information in academic papers.

The complete, up to date, course syllabus is also available on-line at the course website. The syllabus is available as both HTML and PDF.

Prerequisite

Successful completion of VGP351 or consent of instructor is required.

This course is both programming and math intensive. A strong background in C or C++ programming is required. Familiarity with object oriented programming principles will be very helpful but is not strictly required. Previous knowledge of matrix math and trigonometry is required and will be extremely important. Particularly tenacious students may be able to learn the required math during the term, but it will be a lot of extra work.

Texts

Required text:

Akenine-Moeller, Tomas and Haines, Eric and Hoffman, Mathaniel. Real-Time Rendering (3rd Ed.), AK Peters, Ltd., 2008. ISBN 978-1-56881-424-7.

There will be weekly assigned readings from this book. Equivalent readings from the second edition will also be listed. This textbook will also be used in VGP352 and VGP353. However, there will be readings in those courses that were added in the third edition.

The book also has a website that includes numerous additional references and sample code.

The following OpenGL reference books may prove to be very useful.

Rost, Randi J.. OpenGL Shading Language (2nd. Ed.), Addison-Wesley Professional, January 25, 2006. ISBN 0-32133-489-2.

Wright, Richard S.; Lipchak, Benjamin; and Haemel, Nicholas. OpenGL SuperBible: Comprehensive Tutorial and Reference (4th Ed.), Addison-Wesley Professional, June 2007. ISBN 0-321498-828.

OpenGL Superbible has a website, that includes source code and pre-built binaries. Earlier editions of this book are not suitable for this course because they do not cover the OpenGL shading language.

OpenGL Shading Language also has a website, that includes example shaders and some references. Earlier editions of this book should also be sufficient for this course.

Required Materials

In addition to paper and writing utensils, each student will need a removable storage device. The storage device will be used to both bring documents and sample code home from class and bring homework completed assignments to class. The storage requirements should be minimal, so a small USB flash-drive (256MB) should be sufficient.

Grading

Each student's grade in this course will be primarily based on a total of five single-week programming assignments and one four-week programming project. Each student will also be required to read an academic paper and present a summary of that paper to the class. The remainder of the student's grade will be based on bi-weekly quizes and a final exam.

Programming assignments will be graded first and foremost on whether or not correct output is produced. The remaining points are based on the style of the program. This includes, but is not limited to, algorithm selection, code formatting, and naming conventions. A detailed rubric will be provided with each assignment.

Programming Assignments 
In-class presentation20 pts.
Homework programming assignments50 pts.
Term project50 pts.
Subtotal120 (63%)
Tests 
In-class quizzes20 pts.
Final Exam50 pts.
Subtotal70 pts. (37%)
Total190 pts. (100%)

Some assignments may carry extra-credit opportunities, but they will be infrequent.

Grading Scale

A=93% and above
A-=90%-92%
B+=87%-89%
B=83%-86%
B-=80%-82%
C+=77%-79%
C=73%-76%
C-=70%-72%
D+=67%-69%
D=60%-66%

Late Work

I do not accept late work. If you miss a deadline, you will not earn the points for that activity. There are no make-up opportunities. If you are unable to attend class on the due date for a assignment, please submit it by e-mail before class.

Attendance and Participation

If you are not in class for an in-class exercise, you cannot earn those points. If you miss an entire class, you are responsible for obtaining copies of handouts and other classroom materials from your classmates.

AiPD Policies

Lab Policies

Leave food and drink outside the class. Disciplinary action will be taken toward any student found using the equipment in an inappropriate manner, taking cell phone calls or surfing the web. Disruptive, disrespectful or rude behavior will not be tolerated.

Plagiarism

Presenting the writings, images or paraphrased ideas of another as ones own, is strictly prohibited at the Art Institute of Portland. Properly documented excerpts from others works, when they are limited to an appropriate amount of the total length of a student's paper, are permissible when used to support a researched argument.

Students with Disabilities

It is AiPD policy not to discriminate against qualified students with a documented disability in its educational programs, activities or services. If you have a disability-related need for adjustments or other accommodations in this class, contact the Disability Services Coordinator.


Amber Perrin
Disabilities Services Coordinator
The Art Institute of Portland
1122 NW Davis Street
PortlandOR 97209-2911
503-382-4836

Course Calendar

Week 1 ( January 12th, 2010 )

Lecture slides

Lecture topics:

  • Course road-map

  • Curves

  • Curved Surfaces

  • Per-fragment lighting recap

    • Phong shading

    • Surface-space

Homework assignments:

  • Read to recap this week:

    Real-Time Rendering, 3rd edition, chapter 13 sections 1 and 2 (pp. 575 -- 606).

    Real-Time Rendering, 2rd edition, chapter 12 sections 1 and 2 (pp. 481 -- 512).

  • Programming assignment #1. Due 1/26.

  • Patch data for assignment #1.

  • one_cube.cpp demo. You'll need to supply your own vertex and fragment shaders, but each is pretty trivial.

Week 2 ( January 26th, 2010 )

Lecture slides

Lecture topics:

  • Bump mapping / Normal mapping

    • Basic usage

    • Normal map storage

  • Introduction to procedural textures

    • Fundamental techniques

    • Noise

    • Problems with procedural textures

Homework assignments:

  • Read to recap this week:

    Real-Time Rendering, 3rd edition, chapter 6 sections 3 through 7.4 (pp. 178 -- 193). You may skip section 4, 5, and 6.

    Real-Time Rendering, 2rd edition, chapter 5 section 7.5 (pp. 166 -- 177). Skip the subsections "Emboss Bump Mapping" and "Environment Map Bump Mapping". Some of the material from chapter 6.3 of the 3rd edition appears on pages 126 and 127, begining with the sentance "Three-dimensional texture can be synthesized", in the 2nd edition.

    Toksvig, Michael, Mipmapping Normal Maps. NVIDIA. April 2004. http://developer.nvidia.com/object/mipmapping_normal_maps.html

Week 3 ( January 29th, 2010 )

Lecture slides

Quiz #1. DO NOT BE LATE TODAY!

Lecture topics:

  • Render to texture

  • Environment map

  • Improving the reflection model

    • Using environment maps as better lights

    • Fresnel reflection

Homework assignments:

Week 4 ( February 2nd, 2010 )

Lecture slides

Lecture topics:

  • Bi-direction reflection distribution function

  • Common terminology and notation

  • Cook-Torrance model

  • Microfacet-based BRDFs

    • Normal distribution

    • Occlusion

Homework assignments:

  • Read to prepare for next week:

    Ashikmin, Michael and Premo\v{z}e, Simon and Shirley, Peter, "A microfacet-based BRDF generator." In SIGGRAPH '00: Proceedings of the 27th Annual Conference on Computer Graphics and Interactive Techniques , pages 65--74. ACM Press/Addison-Wesley Publishing Co., 2000. http://www.cs.utah.edu/~shirley/papers/facets.pdf

  • Programming assignment #2: Normal mapped Bézier surfaces. Due 2/16.

Week 5 ( February 9th, 2010 )

Lecture slides

In-class notes

Quiz #2. DO NOT BE LATE TODAY!

Lecture topics:

  • Anisotropic BRDFs

    • What does anisotropy mean in this context?

    • Ward BRDF

    • Ashikhmin BRDF

  • Metals

    • How metals reflect light

    • Lafortune BRDF

Homework assignments:

Week 6 ( February 16th, 2010 )

Lecture slides

In-class notes

Lecture topics:

  • Fur and hair

    • Goldman's ``Fake Fur Rendering''

    • Shells and fins

    • Banks BRDF

  • Implementing BRDFs in real-time rendering engines

Homework assignments:

  • Read to prepare for next week:

    Gooch, Amy and Gooch, Bruce and Shirley, Peter and Cohen, Elaine, "A non-photorealistic lighting model for automatic technical illustration." In SIGGRAPH '98: Proceedings of the 25th annual conference on Computer graphics and interactive techniques , pages 447--452. ACM, 1998. http://www.cs.utah.edu/npr/papers.html#1998

    Lake, Adam and Marshall, Carl and Harris, Mark and Blackstein, Marc, "Stylized rendering techniques for scalable real-time 3D animation." In NPAR '00: Proceedings of the 1st international symposium on Non-photorealistic animation and rendering , pages 13--20. ACM, 2000. http://software.intel.com/en-us/articles/intel-3d-software-technologies/

    Card, Drew and Mitchel, Jason. "Non-Photorealistic Rendering with Pixel and Vertex Shaders" in Engel, Wolfgang F. (editor) ShaderX, Wordware Publishing, Inc., May 2002. http://developer.amd.com/documentation/reading/pages/ShaderX.aspx

  • Programming assignment #3: Improved lighting with BRDFs. Due 3/2.

Week 7 ( February 23rd, 2010 )

Lecture slides

Quiz #3. DO NOT BE LATE TODAY!

Lecture topics:

  • Non-photorealistic rendering

    • Cel (toon) shading

    • Silhouette edge rendering

    • Technical illustration

  • Texture rectangles (briefly)

  • Post-processing, part 1

Homework assignments:

Week 8 ( March 2nd, 2010 )

Lecture slides

Lecture topics:

  • Post-processing, part 2

    • General image filters

    • Separable filters

    • Depth-of-field

    • High dynamic range (HDR) rendering

Homework assignments:

Week 9 ( March 9th, 2010 )

Lecture slides

Lecture topics:

  • Interior mapping

  • Parallax textures

  • Displacement mapping

Homework assignments:

Week 10 ( March 16th, 2010 )

Lecture slides

In-class notes

Quiz #4. DO NOT BE LATE TODAY!

Lecture topics:

  • Multiple render targets

  • Deferred shading

  • Real-time global illumination

Week 11 ( March 23rd, 2010 )

FINAL EXAM - 5:30PM - 7:30PM.DO NOT BE LATE TODAY!