A collection of references written by course instructors.
Luther Tychonievich began creating these in 2006 when a teaching assistant for a computer graphics course at BYU based on observations of content that was missing or poorly explained in that course’s textbook, and updated and added to that many times since then. Because of that history, they vary widely in writing style and level of detail.
The pages are listed below in no particular order. Those that are not listed from the content page may be incomplete or out of date.
- Aliasing: Two interpretations of rasters and the problems with both..
- Types of Graphics APIs: Common API designs; with names for these designs, some common and some invented for the purpose of this text..
- Bézier curves: A brief introduction to how to evaluate them using de Casteljau’s algorithm..
- Bones: How to create points-at matrices and quaternions..
- Using video memory: Achieving faster drawing through buffers of bytes..
- Bounding Volume Hierarchies: .
- The CFL Conditions: Why large time-steps can make simulations blow up..
- Clipping: Removing off-screen geometry, avoiding divide-by-zero, and using depth buffer bits well via frustum clipping..
- Color: As seen by eyes, projected on screens, and stored in sRGB and YCbCr..
- Conjugate Gradient for Differential Equations: An overview of the approach and pseudocode for the solver..
- Handling CORS errors: A practical guide to running WebGL locally..
- DDA (and Bresenham): Implementing the rasterization of lines and triangles..
- Deferred Shading: Using more memory to reduce time needed for fancy lighting effects..
- Our Dialect of WebGL2: Some choices CS 418 makes for you, and why they are not always the right ones..
- Burley’s Principled BRDF: (unfinished) An empirically-backed artist-focussed material model with widespread adoption..
- Dithering: Fooling the eye into thinking we have more colors displayed than we do..
- Hydraulic Erosion: Two methods for making weathered terrain..
- Example WebGL2 traces explained: Sequences of gl calls created by real programs, with commentary..
- Terrain via the faulting method: Fault computation for simple fractals..
- Finite Differences: An efficient technique for evaluating polynomials on a grid..
- The Student, the Fish, and Agassiz: An essay from 1879 with several points, including the value and process of careful observation..
- Things your GPU doesn’t let you program: WebGL 2’s fixed functionality, including the DDA algorithm and common blending functions..
- Fractals: A class of mathematically-defined geometries that look more
natural
than most others..
- Commonly-used
gl.
functions: With an informal description of what each one does..
- Fluids on a Grid: The core ideas behind Eulerian fluid simulation..
- Half-edge data structure: With notes on implementation and how to implement triangle subdivision using it..
- Rasterizing Polynomial Curves: How circles, parabolas, and so on can be drawn almost as easily as lines..
- Integrating incident light: Including physically-based rendering, secondary ray generation as numerical integration, and importance sampling..
Interactive
Graphics
: Contrasting rasterization and raytracing, with a nod to other approaches..
- Three solvers: Numerical approaches to solving constraints, including linear equations..
- Parts of JavaScript We’ll Use: Assuming you know Java or C++ and are comfortable learning a language from examples on your own..
- Keyframes, Bones, and Skinning: An overview of how we animate articulated characters..
- Euler, RK, and PBD: Common approaches to simulating kinetic motion of particles..
- Linear interpolation: A common tool throughout graphics..
- Lighting models: Common BRDFs from trivial heuristics to intricate physically-based model..
- Procedural creating geometry: Grids, subdivision, and deduplication..
- Math Review: Vectors and matrices..
- Homogeneous Vectors and Transformations: Including definitions, terminology, and common operations..
- Minimal WebGL: What WebGL 2 accepts, what it requires, and how to get started..
- Streaming, Level of Detail, and Occlusion: The quest for complexity-independent render times with constant visual quality..
- Parsing OBJ Files: How to parse one of the most common simple 3D model formats..
- Perpetually Obsolete: An observation about every introductory graphics course everywhere..
- Other parts of the rasterization process: Viewports, blending, culling, and multisampling..
- The Real-time Graphics Pipeline: An outline of how data flows from 3D model to rendered frame..
- Particle Effects: Simple heuristic-based visual effects..
- WebGL’s Graphics Pipeline: A collapsible top-down view of how 3D graphics with WebGL2 works..
- Projection: Simulating depth and perspective using w and z..
- Quaternions: Their definition and use in defining rotations in graphics..
- Raytracing: Basic theory and algorithms of ray intersections and discussion of generating secondary rays..
- Raytracers vs Rasterizers: An analysis of speed and fitness to a purpose..
- Shadow maps: Implementation guides for the most common approach to adding shadows to interactive graphics..
- Visual Simulation: An overview good-enough simulation techniques, including Eulerian and Lagrangian methods..
- Smoothed Particle Hydrodynamics: Simplified to have as little math as I can get it..
- Using Textures: Classes of texture use common in rasterized 3D graphics..
- Textures in WebGL: The mechanics of getting them set up and rendering..
- Two Paths to Pretty: Heuristics put computability first, simulations put emulating science first..
- Simplified PBR: An efficiently-computable approximation of physically-based rendering from Unreal Engine 4 and Disney..
- WebGL Geometry: Several ways to tell WebGL what shapes we want to display..