Skip to content

Latest commit

 

History

History
100 lines (95 loc) · 1.99 KB

TOPICS.md

File metadata and controls

100 lines (95 loc) · 1.99 KB

Concepts Practiced So Far

  • Cross-platform project configuration using CMake (Windows, macOS, Linux/Ubuntu)
  • Lua scripting
    • Game settings
  • Rasterizing lines using Bresenham's line algorithm
  • Linear interpolation (lerping)
  • OBJ file loading
    • Basic vertices and faces
  • 3D mesh data structures
    • Vertex/Face
  • Rendering a mesh in wireframe mode
  • Rasterizing triangles using old-school "line sweep"
  • Math library
    • Vectors
      • Component-wise addition, subtraction, multiplication, division
      • Dot product
      • Magnitude
      • Normalizing
  • Flat shading
  • Gouraud shading
  • Gamma correction
  • Hidden faces removal via Z-Buffer
  • Texture mapping
  • Barycentric coordinates
    • Triangle rasterizing
    • Z-buffer interpolation
  • Templated math library for applicable elements
    • Vectors
    • Matrics
  • Matrices
    • Addition, subtraction, multiplication
    • Determinant
    • Identity
    • Inverse
      • Orthogonal matrix inverse
  • Projections
    • Perspective
  • Camera
    • Perspective projection
  • Transformations
    • Translation
    • Rotation

To Learn

This serves as a high-level TODO list, in no particular order.

  • Primitive 3D objects
    • Cube
    • Sphere
    • Plane
  • Axis-aligned bounding box (AABB)
  • Camera
    • View frustum culling
  • Triangle clipping
  • Projections
    • Orthographic
    • Axonometric
      • Isometric
      • Dimetric
      • Trimetric
  • Matrices
    • Inverse
  • Quaternions
  • Transformations
    • Translation
    • Scaling
    • Rotation
    • Reflection
    • Shearing
  • Scene graph of objects
  • Barycentric coordinates
  • Shaders
    • Vertex shaders
    • Fragment/Pixel shaders
  • Rays
  • Anti-aliasing
  • Perspective correct interpolation
  • Phong shading
  • Normal mapping
    • Object space
    • Tangent space
  • Shadows
    • Hard
    • Soft
  • Ambient Occlusion
  • Skybox
  • GUI
    • Slider
    • Dropdown menu
  • Animation
  • Lua scripting
    • Scene definition

Crown jewel, if I get far enough:

  • Water rendering
    • Flat
    • Waves
  • Physically-Based Rendering (PBR)