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

- Fractal Brownian motion (fbm) noise

- Slides: Thursday

- Code examples: fresnel effects, noise, raymarching + 3D SDF shaders



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