Intro to 3D Graphics - Chris Ryan - NDC Oslo 2024

Learn core 3D graphics concepts like coordinate spaces, transforms, depth buffering & rasterization. Perfect for developers wanting to understand how 3D engines work.

Key takeaways
  • 3D graphics fundamentally work with triangles (polygons) rather than curves or complex shapes - triangles are used because 3 points always define a plane

  • Key coordinate spaces in the graphics pipeline:

    • Model space (object’s local coordinates)
    • World space (global coordinates)
    • View/camera space
    • Perspective/screen space
  • Matrix transformations are used to:

    • Scale objects (make bigger/smaller)
    • Rotate objects around axes
    • Translate (move) objects in space
    • Convert between different coordinate spaces
  • Depth buffering (Z-buffer) tracks how far each pixel is from the camera to determine which objects are visible/hidden

  • Rasterization is the process of converting 3D triangles into 2D pixels on screen through interpolation

  • Points vs Vectors:

    • Points represent specific locations in space
    • Vectors represent direction and magnitude but no specific position
    • Important to keep types separate for correct math operations
  • Performance considerations:

    • Matrix multiplication order matters for efficiency
    • Combining multiple transformations into a single matrix is faster
    • Memory transfer between CPU/GPU can be a bottleneck
    • Floating point math is sufficient for most 3D graphics
  • Textures are 2D images mapped onto 3D surfaces to add visual detail

  • Basic 3D engine components:

    • Mesh data structure (collection of triangles)
    • Matrix math operations
    • Rasterizer
    • Depth buffer
    • Frame buffer
  • Perspective projection makes distant objects appear smaller through perspective divide operation