Course Overview
This course introduces real-time hardware-accelerated graphics programming suitable for game development, visual effects, and interactive projects. Emphasis will be placed on shader programming and developing custom effects using game engines and multimedia software. We will read from recent journal articles and online publications, and also survey the use of visual effects in films, interactive media, VR experiences, and video games. In addition to two comprehensive exams and the completion of shorter assignments throughout the semester, students will be responsible for a project that involves the creation, demonstration, and documentation of a real-time graphics technique.
We will be using Slack for class discussions and coordination of group projects. Please make sure you have access to the CMPM 163 channel for general discussion, as well as the CMPM 163 Lab channel for reaching the TA to ask questions related to homework.
Week 1
- Overview of course
- Introduction to shader programming
- Lighting models
- Code examples: Three.js basic shaders
Week 2
- GLSL syntax and data types
- Three.js BufferGeometry and RawShaderMaterial
- Textures, render to textures, pingpong textures
- Image processing
- Creating objects in Blender
- Slides: Tuesday, Thursday, Lab
- Code examples: Three.js texture and image processing shaders
- Homework 1 is due Sunday, 1/28 at 12 noon
Week 3
- Environment mapping / cube maps
- Height maps and vertex displacement
- Noise functions
- Slides: Tuesday + Thursday
- Code examples: Three.js object loading and cube map shaders
Week 4
- Point sprites
- Particle systems
- Code examples: Three.js height map, noise, point sprite, and particle system GLSL shaders
- Lab: Code and slides
Week 5
- Voronoi cells
- 2D Signed distance functions & SDF Text
- Midterm review
- Slides: Tuesday + Thursday
- Code examples: SDF shaders
- Lab: Code and slides
- Homework 2 is due Sunday, 2/18 at 12 noon
Week 6
- Midterm Exam during Tuesday's class
- Raymarching 3D objects
- Reflection & refraction
- Slides: Thursday
- Code examples: fresnel effects, noise, raymarching + 3D SDF shaders
Week 7
- Reflection & refraction
- Fractal Brownian motion (fbm) noise
- Shadows
- Slides: Tuesday + Thursday
- Code examples: fbm, shadow mapping
- Homework 3 is due Sunday, 3/4 at 12 noon
Week 8
- Chuck Lingle, Won-jong Lee, and Manu Thomas from Intel's Advanced Rendering Technologies visit CMPM 163
- Global illumination, path tracing
- Shader programming in Unity
- Slides: Thursday
Week 9
- Pioneerng visual music artist Larry Cuba visits CMPM 163
- More shader programming in Unity
- Requirements for the Final Project are posted
Week 10
- Group presentations & feedback
- Final exam on Tuesday, 3/21 at 4pm
- Final Project due Sunday, 3/25 at 12 noon
Final Projects
Team 1: Space Scene
by Shuli He, Zixuan Zhao, Jingcheng Shi, and Eric Ota
Team 2: Post-processing and Glow Effects
by Cole Faust, Talon Baker, and Andy Long
Team 3: Interiors, Clouds, Teleportation
by Nicholas Forester, Samuel Barish, and Eduardo Gaona
Team 4: Zeifer Shaders
by Shayne Hayes, Autumn Washington-English, and Sebastian Shelley
Team 5: Melting and Jelly Shaders
by Kevin Wu, Kevin T. Wu, Shuo-En Li, and Joey Sandmeyer
Team 6: Real-Time Rendering of Food
by Wilbur Li, Bryce Newbury, Jolina Lam, and Spencer Witkin
Team 7: Pixelation, Voronoi, and Crepuscular Rays
by Nicholas Ho, Andrew Gwinner, and Jacob Le
Team 8: Hologram Shader
by Nicholas Warren, Harpreet Mahli, James Garbagnati, and Nicholae Christoffersen
Team 9: Outdoor Scene
by Brent Gingell, Eric Ventor, and Ivan Espiritu
Team 10: Cinematic Animation Effects
by Jennifer Fullerton, Lisa Durand, and Joshua Navarro
Team 11: Desert Oasis
by Alfredo Cuevas, Robert Gaines, and Trenten Kaufeldt
Team 12: Venice
by Jonathan Chuang, Eisaku Imura, and Matt Loyola
Team 13: Bookend
by Jared Ono, Julian Lain, Justin Tran, Jonathan Alcantara
Team 14: Rainstorm (code, website)
by Jacquelene Pham, Jay Parikh, and Jesus Hernandez
Team 15: Terrain, Sunlight, Fire, and Smoke
by Eric Lanini, Rachel Trail, and Tayla Rund
Team 16: A Really Cold Place
by Xiaoxuan Zhang, Evan Thomson, Emma Yates, Mark Rahal
Grading
Grading will be based on participation and successfully mastery of course content, evaluated through homework assignments, a mid-term exam, a final project, and a comprehensive final exam. There will be three homework assignments, to be done individually, and one more extensive group project, to be done collaboratively in a team of 3 or 4.
Homework - 25%
Project – 30%
Exam - 20%
Final - 25%
Midterm Exam: Tuesday, 2/13, 3:20-4:45pm
Final Exam: Wednesday, 3/21, 4pm-7pm
Disability Resource Center (DRC)
UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me privately during my office hours or by appointment, so that we can discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact DRC by phone at 831-459-2089 or by email at drc@ucsc.edu.