See also the list of Prerequisite topics.
Rendering: 2D pictures from 3D models
Rendering a surface
Rendering meshes
- model object as a mesh of triangles in 3D
- project 3D triangles into 2D
- shading and texturing
Framebuffers
- Abstract display device
- Array of ((r,g,b)) for color
- Generalized to e.g. depth buffer, texture map
3D models
- collections of triangles in 3D
Projection
- mapping 3D triangles into 2D
Rasterization
- converting 2D triangles into pixels
OpenGL
GLSL
- c like programming language
- vector and matrix operations
- implicit parallelism
WebGL pipeline
Vertex Shaders
- drawing triangles
Fragment Shaders
- colouring pixels
Basics of Interactivity
Animation via redraws
Event handlers
Asynch IO
Linear algebra for graphics
inner and cross product
- see also surface normals
Coordinate systems and bases
Homogeneous coordinates
- see also perspective viewing
Transformations via matrix multiplication
Geometry for graphics
Parametric equations
- lines
- planes
- spheres, cylinders
Intersection detection
- Intersections of planes
- Barycentric coordinates
- intersection of triangles with planes :clipping:
Transformations
- translation
- rotat
Surface Normals
- see also shading, cross product
Geometric Pipeline
Projection
- parallel projection
- perspective projection
- View Frustum
- Camera transformation
Clipping
- clipping triangles
- where in the pipeline to clip
Culling
- culling triangles
- culling bounding volumes
Pixel/Fragment Pipeline
Textures
- Linear interpolation
- Texture arrays (2D)
- Perspective correction
- Noise (optional)
Shading
- Global / Ambient
- Lambertian / Diffuse
- Blinn-Phong / Specular
- Custom: spotlight, etc…
Shadows
- Shadow maps
- Shadow volumes (stencil buffer)
3D Modelling
Intersection detection
- Intersecting lines with planes :clipping:
- Intersecting lines with spheres :bounding:
Hierarchical Models
- optional
Bounding Volumes
- optional