Computer Graphics Programming I


Table of Contents
1. Course Description
2. Prerequisite
3. Texts
4. Required Materials
5. Grading
5.1. Grading Scale
5.2. Late Work
5.3. Attendance and Participation
6. AiPD Policies
6.1. Lab Policies
6.2. Plagiarism
6.3. Students with Disabilities
7. Course Calendar
7.1. Week 1 ( October 7th, 2009 )
7.2. Week 2 ( October 14th, 2009 )
7.3. Week 3 ( October 21st, 2009 )
7.4. Week 4 ( October 28st, 2009 )
7.5. Week 5 ( November 4th, 2009 )
7.6. Week 6 ( November 11th, 2009 )
7.7. Week 7 ( November 18th, 2009 )
7.8. Week 8 ( November 25th, 2009 )
7.9. Week 9 ( December 2nd, 2009 )
7.10. Week 10 ( December 9th, 2009 )
7.11. Week 11 ( December 16th, 2009 )


1. Course Description

VGP351A

Fall 2009, 3 credits

Wednesday, 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:

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.


2. Prerequisite

This course is both programming and math intensive. Some 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.


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


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


5. Grading

Each student's grade in this course will be primarily based on a total of four single-week programming assignments and two two-week programming assignments. 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 
Short homework programming assignments40 pts.
Large homework programming assignments40 pts.
Subtotal80 pts. (53%)
Tests 
In-class quizzes20 pts.
Final Exam50 pts.
Subtotal70 pts. (47%)
Total150 pts. (100%)

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


5.1. 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%


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


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


6. AiPD Policies

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


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


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


7. Course Calendar

7.1. Week 1 ( October 7th, 2009 )

Lecture notes

Lecture topics:

  • Course road-map

  • Graphics pipeline

  • OpenGL ``Hello, world!''

    • Setting up the graphics pipeline

    • Feeding the hardware data

Homework assignments:


7.2. Week 2 ( October 14th, 2009 )

Lecture notes

Lecture topics:

  • Modeling transformations

  • Viewing transformations

  • Projections

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition, chapter 4. Skip sections 4.3 (Quaternions) and 4.5 (Morphing).

    • Real-Time Rendering, 2rd edition, chapter 3. Skip section 3.3 (Quaternions).

  • Programming assignment #2, part 1. Due 10/28.


7.3. Week 3 ( October 21st, 2009 )

Lecture notes

Quiz #1. DO NOT BE LATE TODAY!

Lecture topics:

  • Hidden surface removal / occlusion

    • backface culling

    • painter's algorithm

    • z-buffer

    • occlusion queries

    • frustum culling

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition, chapter 14 up to section 14.3. In addition, skip sections 14.1.4 (Cache-Oblivious and Cache-Aware Representations) and 14.1.5 (Scene Graphs).

    • Real-Time Rendering, 2rd edition, chapter 9 up to section 9.4. In addition, skip section 9.1.4 (Scene Graphs).

  • Programming assignment #2, part 2. Due 11/4.


7.4. Week 4 ( October 28st, 2009 )

Lecture notes

Lecture topics:

  • The physics of light and energy transport

  • Computer lighting models

    • Lambert

    • Phong

    • Blinn

  • Shading

    • flat

    • Goraud

    • Phong

  • Types of lights

    • infinite / directional

    • point

    • area

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition, chapter 5 up to section 5.6.

    • Real-Time Rendering, 2rd edition, chapter 4 up to section 4.4.

  • Programming assignment #2, part 3. Due 11/11.


7.5. Week 5 ( November 4th, 2009 )

Lecture notes

Quiz #2. DO NOT BE LATE TODAY!

Lecture topics:

  • Bounding volumes

    • Bounding spheres

    • Axis-aligned bounding boxes (AABBs)

    • Oriented bounding boxes (OBBs)

    • Heirarchies of BVs

  • More occlusion

    • heirarchical frustum culling

    • portal culling

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition, chapter 14 section 14.3 up to section 14.7.

    • Real-Time Rendering, 2rd edition, chapter 9 section 9.4 up to section 9.8. Skip sections 9.7.1 (Occlusion Horizons), 9.7.2 (Occluer Shrinking and Frustum Growing), and 9.7.6 (The HOM Algorithm).


7.6. Week 6 ( November 11th, 2009 )

Lecture notes

Lecture topics:

  • Texture mapping, part 1

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition TBD.

    • Real-Time Rendering, 2rd edition TBD.


7.7. Week 7 ( November 18th, 2009 )

Lecture notes

Quiz #3. DO NOT BE LATE TODAY!

Lecture topics:

  • Texture mapping, part 2

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition TBD.

    • Real-Time Rendering, 2rd edition TBD.


7.8. Week 8 ( November 25th, 2009 )

Lecture notes

Lecture topics:

  • Texture mapping, part 3

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition TBD.

    • Real-Time Rendering, 2rd edition TBD.


7.9. Week 9 ( December 2nd, 2009 )

Lecture notes

Quiz #4. DO NOT BE LATE TODAY!

Lecture topics:

  • Framebuffer blending

  • Multipass rendering

  • Stencil buffer

Homework assignments:


7.10. Week 10 ( December 9th, 2009 )

Lecture notes

Lecture topics:

  • Antialiasing

    • Why is antialiasing important?

    • Primitive rasterization AA

    • Full-screen AA

      • Supersampling

      • Multisampling

    • Temporal AA

Homework assignments:

  • Read:

    • Real-Time Rendering, 3rd edition TBD.

    • Real-Time Rendering, 2rd edition TBD.


7.11. Week 11 ( December 16th, 2009 )

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