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

- Slides: Tuesday, Thursday

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