CS 450 / 550 -- Introduction to Computer Graphics

Fall Quarter 2022


Syllabus and Resources Page

"Computer Graphics is the world's #1 enabling technology. Computer Graphics is for everyone" -- Mike Bailey

"Imagination will often carry us to worlds that never were. But without it, we go nowhere." -- Carl Sagan

Handouts Classes Projects

This page was last updated: June 25, 2022

Under Construction:
This content is not final until you see this message go away!

Welcome to CS 450/550! I am so glad to have you here. I really enjoy getting to work wth this class. This will be an excellent chance for us to share in each other's creativity. You will surprised by what you will be able to do!

Class and Covid: I respect your right to protect yourself and your loved ones from Covid. For anyone in one of the on-campus sections who is concerned about coming to campus, you are free to, instead, watch the videos that I recorded for the online sections. I don't want anyone to have to choose between their safety and coming to class.

Oregon State University Covid-19 Information

The latest update from OSU is:
Face coverings are now required, regardless of vaccination status, in all indoor settings at OSU. This includes but is not limited to public and private workplaces, businesses, indoor areas open to the public, building lobbies, common or shared spaces, classrooms, elevators, bathrooms, transportation services, dining centers, recreation centers and other indoor spaces where people may gather for any purpose. Masks are not required when individuals are in their personal offices and have their door closed. Face coverings are also required outdoors as per State of Oregon rule 333-019-1025 if physical distancing of at least 6 feet can’t be maintained.

Effective Sept. 15, Oregon State University requires employees and students who work, learn or engage with others in-person as part of their job duties to be fully vaccinated from COVID-19. OSU employees and students who are required to comply and who meet an exemption not to be vaccinated, will be required to test for COVID-19 weekly until further notice. To learn more and to complete the compliance process, go to https://covid.oregonstate.edu/vaccination-program-requirement

Graphics Thinking Comes First

The goal of this class, at least the first part of it, is to develop your "graphics thinking", that is, how to go from an idea in your head to actually getting the pixels on the screen. To get you to that state as smoothly as possible, we will start by using a part of OpenGL that has been deprecated, but is easier to learn and apply. (In OpenGL, "deprecated" doesn't mean "gone away", it means "not recommended for efficiency reasons".) Later on, you will learn the recommended (i.e., efficient) ways of using OpenGL.

Stuff You Might Be Interested In:

Class Notes Handouts and Recorded Videos

LV = Lecture Video
DV = Demonstration Video
Week #Noteset
0 Introduction to CS 450/550 1pp 2pp 4pp 6pp LV
0 A Brief History of Computer Graphics 1pp 2pp 4pp 6pp LV
0 Project Notes 1pp 2pp 4pp 6pp LV
0 The Computer Graphics Process 1pp 2pp 4pp 6pp LV
0 The Science of Pixar 1pp 2pp 4pp 6pp
1 Getting Started with OpenGL Programming 1pp 2pp 4pp 6pp LV-A LV-B LV-C
1 Khronos Group's OpenGL 4.6 Reference Card PDF
1 The C/C++ Sample Program sample.cpp DV
1 Color in Computer Graphics 1pp 2pp 4pp 6pp LV-A LV-B
1 GL Utility Toolkit (GLUT) 1pp 2pp 4pp 6pp LV
1 Display Lists 1pp 2pp 4pp 6pp LV
1 OBJ Files 1pp 2pp 4pp 6pp LV
2 Texture Mapping 1pp 2pp 4pp 6pp LV-A LV-B DV
2 Framebuffer 1pp 2pp 4pp 6pp LV DV
3 OpenGL Transparency 1pp 2pp 4pp 6pp LV
3 Lighting 1pp 2pp 4pp 6pp LV-A LV-B LV-C DV
4 Shaders 1pp 2pp 4pp 6pp LV-A LV-B LV-C DV
4 Test #1 review. HTML
5 GLM 1pp 2pp 4pp 6pp LV
5 A short GLM Primer Here      
5 Vertex Buffer Objects 1pp 2pp 4pp 6pp LV
6 Casting Shadows with OpenGL 1pp 2pp 4pp 6pp LV DV
6 Geometric Modeling 1pp 2pp 4pp 6pp LV-A LV-B DV
7 Forward Kinematics 1pp 2pp 4pp 6pp LV
7 Rendering 1pp 2pp 4pp 6pp LV-A LV-B
8 Animation 1pp 2pp 4pp 6pp LV-A LV-B DV
8 3D Printing 1pp 2pp 4pp 6pp LV
9 Setting the Eye Position on an Orbiting Body 1pp 2pp 4pp 6pp
9 Stereographics 1pp 2pp 4pp 6pp LV-A LV-B DV
10 Virtual and Augmented Reality 1pp 2pp 4pp 6pp LV
10 Vulkan 1pp 2pp 4pp 6pp LV
10 More Information PDF       LV
10 Test #2 Review HTML        

Guest Speaker Links

Andrew Glassner, Weta Digital: "Exploring the World with Computer Graphics"
Andrew's short Chicken Crossing

Vinh Le, Pixar (and formerly ILM): "Intro to Visual FX"

Class Schedule

For on-campus students, face-to-face class time is: Monday and Wednesday, 12:00 - 1:30. Unless otherwise specified, all classes will be held in Wilkinson Hall -- Gilfillan Auditorium. Wilkinson Hall is on the NW corner of Orchard Avenue and 26th Street. Gilfillan Auditorium is at the rear of the building. If you enter through the front door, just keep going and going.

Cancelled dates: Oct 6, Nov 24

Note: this schedule is my best guess on where we'll be -- it is only approximate.

Week #Start DateTopics
0 Sept 22 Introductions
Discussion of class objectives and how we will go about it
A brief history of computer graphics
Project Notes
The Computer Graphics Process
The Computer Graphics Vertex-to-Pixel Pipeline
Networking Night registration starts October 1.
1 Sept 27 Project #1
Getting started with OpenGL
Sample program
Color in CG
GL Utility Toolkit
Display Lists
OBJ files
2 Oct 4 Texture mapping
Project #2
Framebuffers: the rasterizer, Double-buffering, Z-buffer, Z-fighting
Prof. Bailey will be out of the Office on October 6, 7, 8
3 Oct 11 Project #3
Transparency (blending)
Lighting: Ambient, Diffuse, Specular, per-vertex versus per-fragment
Networking Night is October 13.
4 Oct 18 Project #4
Shaders: the GLSL shader programming language, vertex shaders, fragment shaders, uniform variables, out/in variables, the role of the rasterizer
Test #1 review.
5 Oct 25 Project #5
GLM: its role in non-deprecated OpenGL, its role in vertex shaders
Vertex buffer objects (VBOs): their role in non-deprecated OpenGL, how to create them, VBO efficiency versus glBegin-glEnd
Test #1 will be taken on Canvas in a 60-minute interval of your own choosing during October 27-31. It will open at 12:00 noon on Wednesday, October 27 and will close at 23:59 on Sunday, October 31.
6 Nov 1 Rob Russ, Pixar, speaking on: "Behind the Scenes with the Making of Toy Story 4". This will be a live session on November 1 at 12:00 noon. Here is the Zoom-room. Confirmed.

Casting shadows: rendering the depth into a texture, two-pass algorithms
Geometric modeling: meshes, curves, surfaces, constructive solid geometry (CSG), L-systems

7 Nov 8 Andrew Glassner, Weta Digital, who spoke (via video) on: "Exploring the World with Computer Graphics" will appear Nov 10, 12:00 noon, for a live Q&A session. Here is the Zoom-room. Confirmed.

Project #6
Forward kinematics: general hierarchical transformations
Rendering: rasterization, ray-tracing, path-tracing, radiosity

8 Nov 15 Vinh Le, Pixar (and formerly ILM), who spoke (via video) on: "Intro to Visual FX" will appear Nov 17, 12:00 noon, for a live Q&A session. Here is the Zoom-room. Confirmed.

Animation: keyframe, forward kinematics (FK), inverse kinematics (IK), physics, chains, cloth, functional animation, motion capture (mocap)
3D printing

9 Nov 22 Stereographics: non-symmetric viewing volume, two-eye viewing methods
No class on Wednesday, November 24! Enjoy an extra day of Thanksgiving.
10 Nov 29 Virtual and augmented reality: viewing headsets, distortion shaders, foveated rendering, spherical stereo rendering, OpenXR
Vulkan: differences from OpenGL
More Information document
T2 Dec 8-11 Test #2 will be taken on Canvas in a 60-minute interval of your own choosing during December 8-11. It will open at 12:00 noon on Wednesday, December 8 and will close at 23:59 on Saturday, December 11.

Live Lectures

Every Wednesday, starting at 2:00, I will be conducting Live Lectures. We will go over some current materials, some upcoming materials, and maybe some extra materials (such as CG videos). It will be a time for you to also ask live questions or chat questions. Attendance at the live session is optional. These sessions will be recorded in case you missed them. Here is my Zoom-room.
If you need a passcode, use ZeldaDog

Week #ChatVideo
1PDF Video
3PDF Video
4  Video
5  Video
6  Video
7  Video
8  Video
9  Video
10  Video


The class is being taught by Professor Mike Bailey.

Office: Kelley 2117 (2nd floor, south side)
E-mail: mjb@cs.oregonstate.edu
Phone: 541-737-2542
Zoom-room: Zoom

Prof. Bailey's Office Hours

  See below  
  or, anytime my office door is open  
  or, by appointment -- send email  

In-tent Office Hours: Prof. Bailey will hold these in his "office", in the big tent in front of the Kelley Engineering Center. (Dress warmly.)
Live Lectures on Zoom
All other colors indicate Zoom Office Hours

  Jack Barnes (JB) Braxton Cuneo (BC) Julie Kuang (JK) Hongyu Nie (HN) Avery Stauber (AS) Mikhail Tokarev (MT) Prof. Bailey (PB)
Email barnesj cuneob kuangqi nieh staubeav tokarevm mjb
Zoom-room Zoom Zoom Zoom Zoom Zoom Zoom Zoom
Mondays 4:00-6:00 4:00-5:00 8:00-11:00 8:00-11:00 2:00-4:00 2:00-3:00, 3:00-4:00
Tuesdays 5:00-6:00 4:00-5:00 10:00-11:00 , 2:00-4:00 11:00-2:00 12:00-5:00 4:00-5:00
Wednesdays 4:00-6:00 4:00-5:00 8:00-11:00 8:00-11:00 2:00-4:00
Thursdays 11:00-1:00 4:00-5:00 4:00-6:00 8:00-9:00 9:00-12:00 12:00-5:00 1:00-2:00, 2:00-3:00
Fridays 1:00-4:00 4:00-5:00 12:00-2:00 2:00-4:00 11:00-1:00, 4:00-6:00

  8:00 9:00 10:00 11:00 12:00 1:00 2:00 3:00 4:00 5:00
(The links point to the Zoom-Rooms.)

Demonstration Videos


LV = Lecture Video
DV = Demonstration Video

Project # Points Title Due Date LV
1 50 Draw Something Cool in 3D! Oct 4 LV
2 100 Animate a Helicopter Oct 12 LV DV
3 100 Texture Mapping Oct 20 LV
4 100 Lighting Nov 1 (=October 32) LV
Final Project Proposal 10 Final Project Proposal Nov 10 -- No Bonus Days LV
5 100 Shaders Nov 12 LV
6 100 Geometric Modeling Nov 23 LV
FP 90 Final Project Tuesday, Dec 7, 23:59:59 -- No Bonus Days LV
550-only paper 100 Paper analysis Tuesday, Dec 7, 23:59:59 -- No Bonus Days LV

Downloadable Files

Opening up one of the SampleWindows.zip, SampleLinux.tar, or SampleMac.tar files will produce a folder full of all the other files you need. You do not need to go hunt the internet for any other files. Use the ones that have been given to you.

Windows Visual Studio 2019 Sample Program SampleWindows.zip Un-zip and double-click on the .sln file, then select Build→Clean Solution, then select Build→Build Sample, then select Debug→Start Without Debugging
Linux Sample Program SampleLinux.tar Un-tar (tar xvf SampleLinux.tar), then cd SampleLinux, then make sample, then ./sample
Mac Sample Program * SampleMac.tar * Un-tar (tar xvf SampleMac.tar), then cd SampleMac, then make sample, then ./sample* *
Windows Visual Studio 2019 Shadows Program Shadows2019.zip Un-zip and double-click on the .sln file, then select Build→Clean Solution, then select Build→Build Sample, then select Debug→Start Without Debugging
Windows Visual Studio 2019 Vertex Buffer Object sample Program VBO.zip Un-zip and double-click on the .sln file, then select Build→Clean Solution, then select Build→Build Sample, then select Debug→Start Without Debugging
A color-picker program ColorPicker.exe  
A sphere-drawing function: osusphere.cpp  
A cone-drawing function (which can also be used to draw a cylinder): osucone.cpp Needs to re-use the same: int NumLngs, NumLats; struct point; struct point * Pts; PtsPointer( int lat, int lng ); DrawPoint( struct point *p ); from osusphere.cpp
A torus-drawing function: osutorus.cpp  
A complete lighting program LightingDemo.zip Un-zip and double-click on the .sln file, then select Build→Clean Solution, then select Build→Build Sample, then select Debug→Start Without Debugging
C++ class to use GLSL shaders glslprogram.h, glslprogram.cpp
C++ class to use GLSL shaders -- cut down to just what Project #5 needs -- might work better for Macs than the full version glslprogramP5.h, glslprogramP5.cpp
Code to load an OBJ file loadobjfile.cpp  
glm Folder glm.zip Un-zip into your VS project folder
Keytime Animation C++ class keytime.h, keytime.cpp Notes on using this C++ class

* Previous Mac users in this class have recommended that, rather than use the trackpad, you go get a Bluetooth 3-button mouse. If you need to use the Mac trackpad, I've been told that a two finger click/tap works as a right click and option+click works as a middle click.

If you want to load a .obj file as part of one of your projects, incorporate the file loadobjfile.cpp into your own code. I usually use this by placing the .obj object into a display list:

// a global variable:
GLuint DL;

. . .

// do this in InitGraphics( ):
DL = glGenLists( 1 );
glNewList( DL, GL_COMPILE );
LoadObjFile( "spaceship.obj" );
glEndList( );

. . .

// do this in Display( ):
glCallList( DL );


Scores will be posted through Canvas. CS 450/550 will be graded on a fill-the-bucket basis. There will be 7 projects, 10 quizzes (weeks 0-8, 10), and two tests. You get to keep all the points you earn.
The quizzes will be done via Canvas. They will open each Friday at 2:00 PM and close Sunday night at 23:59:00. Canvas is very unforgiving about due times -- don't push it.

But, weeks #0 and #9 are different:

Your final grade will be based on your overall class point total. Based on an available point total of 1050, grade cutoffs will be no higher than:

Points Grade
1000 A- 
980 B+
940 B- 
920 C+
880 C-
860 D+
820 D- 

You will notice that these cut-offs are not 90-80-70-... This is because I am going to do a "soft-grade" on your programming projects, i.e., if it works, you get full credit. A "hard-grade" would look at your programming style, etc., which would allow more of a traditional grading scale.

Bonus Days and Late Assignments

"I love deadlines. I like the whooshing sound they make when they fly by."
-- Douglas Adams

Each of you has been granted five Bonus Days, which are no-questions-asked one-day extensions which may be applied to any project, subject to the following rules:

  1. Up to 2 Bonus Days may be applied to any one project
  2. Bonus Days cannot be applied to tests
  3. Bonus Days cannot be applied such that they extend a project past the start of Test #2 during Finals Week

To use one or more Bonus Days on a given project:

Background Resources

Over the last couple of years, various faculty have been putting together mini-tutorials on topics that we (apparently) expect you to magically know, without us ever actually showing you. Here they are. We hope they help.

Good References

Academic Dishonesty

You are expected to do your own work. Helping each other, with explanations or clarifications, is OK. Sharing code, however, is considered cheating. Anyone caught cheating will fail this class, and the matter will be turned over to the Dean's Office.

You are expected to read and understand Oregon State University's Statement of Expectations for Student Conduct, found here: https://beav.es/codeofconduct . If there is any parts of this document that you don't understand, ask me!

Students With Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Religious Holidays

Oregon State University strives to respect all religious practices. If you have religious holidays that are in conflict with any of the requirements of this class, please see me immediately so that we can make alternative arrangements.

Life Events

As {John Lennon? Allen Saunders?} has said: "Life is what happens to you while you're busy making other plans". I care about you as a person. When life happens to you, send me an email and come see me. I might be able to help, I might not. But I surely can listen. You are not alone.

Reach Out for Success

University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it's important to reach out. Consider discussing the situation with me or an academic advisor. Learn about resources that assist with wellness and academic success at http://oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255)

Basic Needs

Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live, is urged to contact the Human Services Resource Center (HSRC) for support: hsrc@oregonstate.edu, 541-737-3747. The HSRC has a food pantry, a textbook lending program, and other resources to help. Furthermore, if you are comfortable doing so, please come talk with me. I will do everything I can do to help you.

Other Useful Online Graphics Information

Other Notes You Might Find Useful!

University Classes
Computer Graphics Shaders
Scientific Visualization
Parallel Programming
CS Skills for Simulation and Game Programming

Grades 2-12 Outreach

Comments? Suggestions? Questions? Contact:
Prof. Mike Bailey
Oregon State University Computer Science
2117 Kelley Engineering Center
Corvallis, OR 97331-5501