![]() | ![]() | ![]() | ![]() |
Projects | Handouts | Piazza | PB Zoom |
This page was last updated: January 16, 2021
"Don't wake me for the end of the world unless it has very good special effects." |
-- Roger Zelazny (science fiction writer) |
Vertices | Triangles | File |
---|---|---|
707 | 1,410 | catL.obj |
8,824 | 17,644 | catM.obj |
35,290 | 70,576 | catH.obj |
They each have normals and texture coordnates.
The goals of this course are to leave you "career-ready" (i.e., both work-ready and research-ready) for tasks that require the implementation of graphics algorithms in the form of shaders.
CS 457/557 topics include:
If you are wondering what types of shaders your own graphics card supports, check this table. You can tell what shaders the card supports by looking at the Shader Model (or Shader Level) or what DirectX / OpenGL version it supports:
Shader Model | OpenGL | DirectX | Supports |
---|---|---|---|
3.0 | 2.x | 9 | Vertex, Fragment |
4.0 | 3.x | 10 | Geometry |
5.0 | 4.x | 11 | Tessellation, Compute |
We will cover all of these different types of shaders.
While you don't exactly need previous 3D graphics programming experience to take this course,
we are going to jump into shader topics as if you have it.
CS 450/550, 453/553, or 554 are good preparation.
CS 491 is adequate preparation if you looked at and understood the graphics programs
that were supplied to you.
If you don't have any of these under your belt,
I suggest that you look over the CS 450/550 class notes,
which can be found
here.
Prerequisites
Professor
The class is being taught by
Professor Mike Bailey.
Office: | Kelley 2117 (2nd floor, south side) |
Phone: | 541-737-2542 |
Email: | mjb@cs.oregonstate.edu |
Mondays | 8:00 - 9:00, 12:00 - 2:00 |
Wednesdays | 8:00 - 9:00, 12:00 - 2:00 |
Thursdays | 10:00 - 12:00 |
or, by appointment -- send email |
The TAs for this course are: Braxton Cuneo and Josiah Blaisdell. Both have a huge amount of computer graphics experience. We are lucky to have them!
Josiah Blaisdell | Braxton Cuneo | Prof. Bailey | |
blaisdjo@oregonstate.edu | cuneob@oregonstate.edu | mjb@cs.oregonstate.edu | |
Zoom-room | Zoom | Zoom | Zoom |
Mondays | 7:50 - 9:50 (AM) | 8:00-9:00 (AM), 12:00-2:00 | |
Tuesdays | 7:50 - 9:50 (AM) | 11:00 - 2:00 | |
Wednesdays | 7:50 - 9:50 (AM) | 8:00-9:00 (AM), 12:00-2:00 | |
Thursdays | 7:50 - 9:50 (AM) | 11:00-2:00 | 10:00-12:00 |
Fridays | 7:50 - 9:50 (AM) | ||
Saturdays | 8:00 - 10:00 (AM) |
8:00 | 9:00 | 10:00 | 11:00 | 12:00 | 1:00 | 2:00 | 3:00 | 4:00 | 5:00 | |
Mondays | PB, JB | JB | LL | LL | PB | PB | ||||
Tuesdays | JB | JB | BC | BC | BC | |||||
Wednesdays | PB, JB | JB | LL | LL | PB | PB | ||||
Thursdays | JB | JB | PB | PB, BC | BC | BC | ||||
Fridays | JB | JB | ||||||||
Saturdays | JB | JB |
This book was written based on the Oregon State University shaders class notes.
Optional Textbook
![]() |
Bailey and Cunningham,
Graphics Shaders: Theory and Practice,
Second Edition,
CRC Press,
2012.
ISBN: 978-1-56881-434-6.
You are not required to get it. However, it has more detailed information than the course notes do. If you want it, it is available through Amazon, or through CRC Press. There is one in the CGEL "library". It is chained to the bookshelf. Other course material will consist of printable notes, web pages, and notes taken in class. |
Introduction to CS 457/557 | 1pp | 2pp | 4pp | 6pp | LV | |||
Navigating our Class Resources Page | HTML | LV | ||||||
Project Notes for CS 457/557 | 1pp | 2pp | 4pp | 6pp | LV | |||
History of Shaders | 1pp | 2pp | 4pp | 6pp | LV | |||
Homogeneous Coordinates | 1pp | 2pp | 4pp | 6pp | LV | |||
Shaders Notes from CS 450/550 | 1pp | 2pp | 4pp | 6pp | LV | |||
Model vs. Eye/World Coordinates | DV | |||||||
GLSL API | 1pp | 2pp | 4pp | 6pp | LV | |||
Glman | DV | |||||||
Mixing | 1pp | 2pp | 4pp | 6pp | LV | |||
Stripes, Rings, and Dots | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | DV | |
Lighting | 1pp | 2pp | 4pp | 6pp | LV | |||
Texturing in GLSL | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Noise | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | LV-3 | DV |
Dome Projection | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Hyperbolic Geometry | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Morphing | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Timer | 1pp | 2pp | 4pp | 6pp | LV | |||
Bump Mapping | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | DV | |
Bump Mapping with Surface Local Coordinates | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Normal-Mapping | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Cube Mapping | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Image Manipulation | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Red-Cyan Stereographics | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Render-to-Texture | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Test #1 | Review | LV | ||||||
GLM | 1pp | 2pp | 4pp | 6pp | LV | |||
Shadows | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Spectral Effects | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Lens Effects | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
The Science of Pixar | 1pp | 2pp | 4pp | 6pp | LV | |||
Geometry Shaders | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | DV | |
Scientific Visualization using Shaders | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | LV-3 | DV |
The SuperQuad | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Tessellation Shaders | 1pp | 2pp | 4pp | 6pp | LV-1 | LV-2 | DV | |
Compute Shaders | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Algorithmic Art | 1pp | 2pp | 4pp | 6pp | LV | |||
Disco-ball Lighting | 1pp | 2pp | 4pp | 6pp | LV | DV | ||
Vulkan and its GLSL Shaders | 1pp | 2pp | 4pp | 6pp | LV | |||
More Information | LV | |||||||
Creating a Video Demo of a Graphics Project | 1pp | 2pp | 4pp | 6pp |
Every Monday and Wednesday, starting at 10:00, I will be hosting Live Lectures. We will go over some current materials, some upcoming materials, and maybe some extra materials (such as shader demos). It will be a time for you to also ask live questions. Attendance at the live session is optional, but the material we cover there is eligible to be on quizzes and tests. These sessions will be recorded (see below) in case you missed them.
Here is my Zoom-room.
If you need a passcode, use ZeldaDog
Week # | Day | Chat | Video | Extra Notes |
---|---|---|---|---|
1 | Monday | LV | ||
1 | Wednesday | LV | ||
2 | Monday | LV | ||
2 | Wednesday | LV |
LV = Lecture Video
Projects
DV = Demo Video
Project # | Points | Title | Due Date | Lecture Video | Demo Video | |
---|---|---|---|---|---|---|
1 | 60 | Step- and Blended-edged Elliptical Dots | January 15 | LV | DV | |
2 | 100 | Noisy Elliptical Dots | January 20 | LV | DV | |
3 | 100 | Displacement Mapping, Bump Mapping, and Lighting | January 27 | LV | DV | |
4 | 100 | Cube Mapping Reflective and Refractive Bump-mapped Surfaces | February 9 | LV | DV | |
5 | 100 | Image Manipulation | February 16 | LV | DV | |
FP Proposal | 5 | Final Project Proposal | February 17, 23:59:59, no BDs | LV | ||
6 | 60 | The Cat Menagerie | February 23 | LV | ||
7 | 100 | Geometry Shaders | March 4 | |||
557 Paper | 100 | Paper Project (for those in CS 557) | March 16, 23:59:59, no BDs | LV | ||
FP | 95 | Final Project | March 16, 23:59:59, no BDs | LV |
Projects are due at 23:59:59 on the listed due date,
with the following exception:
Each of you has been granted
5
Bonus Days, which are no-questions-asked
one-day extensions which may be applied to any project, subject to the following rules:
If you turn in a project 3 or more days late, the score is a zero.
If you turn in a project late and don't have enough Bonus Days left to spend on it,
the score is a zero.
You don't need to ask me or even tell me that you are using Bonus Days.
Just turn your project in late.
I have a script that will check your turn-in date and deduct the Bonus Days.
Project Turn-In Procedures
Bonus Days and Late Assignments
Points | Grade |
1080 | A |
1060 | A- |
1040 | B+ |
1020 | B |
1000 | B- |
980 | C+ |
960 | C |
940 | C- |
920 | D+ |
900 | D |
880 | D- |
Notice that this grade scale is not 90%-80%-70%-60%. That is because I just do a soft grade on the projects.
Windows Visual Studio 2019 Sample Program | Sample2019.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 |
Windows Visual Studio 2019 Sample Shaders Program | ShaderIntro2019.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 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 | |
Our own version of the sphere-drawing function | osusphere.cpp | |
C++ class to use GLSL shaders | glslprogram.h, glslprogram.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 |
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 );
These executables are all loaded on the CGEL machines, but you can also get them here in case you want to run them on other Windows machines.
You might also need these dlls:
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.
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.
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.
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)
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.
University Housing & Dining Services has been piloting a meal program called Food for Thought.
Using the extra food generated by campus dining locations, they create pre-packaged,
balanced meal options available at no cost to Oregon State students who meet eligibility
criteria determined by the Human Services Resource Center.
For others, these packages are available for purchase at a reduced price.
Class Rules
Link to the Code of Student Conduct
Students With Disabilities
Religious Holidays
Life Events
Reach Out for Success
Basic Needs
Other Notes You Might Enjoy!
University Classes | |
Intro to Computer Graphics | |
Scientific Visualization | |
Parallel Programming | |
CS Skills for Simulation and Game Programming | |
Vulkan | |
Paraview |
Grades 2-12 Outreach | |
Scratch | |
SketchUp | |
Blender | |
TinkerCad | |
Processing |
Other Useful Online Graphics and Shader Information
This is not absolutely essential to print out, but they can be really handy to have around.