CPSC 314 Computer Graphics
September 2019

URLs http://www.students.cs.ubc.ca/~cs-314     calendar description
Instructor Michiel van de Panne     office hrs: ICCS x865, Tue 3-4pm, drop-in, or by appointment
Lectures Mon Wed Fri 3-4pm DMP 310        Sep 4 - Nov 29, 2019
Labs ICCS 005, 1 hour (Tue 1,2 pm; Wed 1,2 pm; Thu 1:30,2:30,3:30pm); labs begin in week 2 (Sept 9)
 TAs   Jonathan Griffin, Megha Shastry, Tianxin Tao
Grading Assignments (42%), Midterms (22%), Participation (8%), Final Exam (28%)   
 Policies   class policies on grades, attendance, plagiarism, missed work, inclusion, wellness
   
Schedule lectures    assignments and tests    
Resources Piazza signup     Piazza Q&A     threejs     threejs tutorial     books    WebGL demos    GLSL     past notes   
Past Sections Jan 2019     Sep 2018     Jan 2018     Sep 2017     Jan 2017     Sep 2016     Jan 2016     Sep 2015     Jan 2015     Sep 2014    
Sep 2013     Jan 2013     Sep 2012    
Summary  
The course provides an introduction to computer graphics, with a focus on the fundamentals of modeling, rendering, and basic animation. We will learn the modern programmable graphics pipeline, with vertex and fragment shaders. Implementions will mainly use three.js, WebGL, and javascript.
Learning Goals  


After this class, students can (xref to topics):
  • explain the algorithmic steps and mathematics used in rendering and animating 3D models (1,2,3,4,5)
  • interpret and explain affine transformations using diagrams, linear algebra, and code within a graphics API (1)
  • write code that implements the graphics pipeline, with an emphasis on vertex shaders and fragment shaders (1,4,5)
  • read, write, and modify code for graphics applications using a common graphics API (1,4,5)
  • explain the behaviour of common local and global illumination models, and the assumptions they make
    about physics and perception (5,6)
  • describe and appreciate the creativite potential of modern computer graphics and current capabilities
    and trends in computer graphics (7,8)

Topics  
  1. transformations, coordinate systems, and vertex shaders:
    • 4x4 affine transformations: translation, rotation, scale, composition, scene hierarchies homogenous coordinates
    • camera specifications and transformations, perspective and orthographics projection, transforming normals
    • coordinate systems: local, world, viewing, normalized device, clipping, device
    • basic animation
  2. rasterization & interpolation:
    • implicit, explicit, parametric representations for geometry
    • barycentric coordinates; interpolation during scan conversion
  3. culling, clipping, and visibility:
    • back-face culling, view frustum culling, occlusion culling, raycasting, view frustum clipping, z-buffer visibility
  4. texture mapping
    • texture coordinates, bump maps, procedural textures, enviroment maps, volumetric textures, tiling, multi-scale filtering
  5. lighting and fragment shaders
    • local illumination models, BRDFs, phong model
    • global illumination, ray-tracing, path tracing, radiosity, ambient occlusion, shadow mapping, photon mapping
  6. color spaces
    • color perception; color spaces; gamut mapping, high-dynamic range cameras and displays, tone mapping
  7. creative experimentation with computer graphics
  8. current capabilities and trends in computer graphics:
    • advances in global illumination, machine learning methods, AR/VR, fake images and video, VFX, games
    • simulations, editing images and geometry, 3D printing, generative design; guest lectures