Files
software_rasterizer/README.md
Krzosa Karol 76a8053443 Remove data
2022-02-25 21:19:31 +01:00

3.0 KiB

Things to do:

  • Drawing triangles
  • Drawing cubes and lines for testing
  • Y up coordinate system, left handed
  • Drawing a cube with perspective
  • Culling triangles facing away from camera
  • Texture mapping
  • Basic linear transformations - rotation, translation, scaling
  • Bilinear filtering of textures / subpixel precison
  • Nearest filtering
  • Fix the gaps between triangles (it also improved look of triangle edges)
  • Perspective matrix vs simple perspective
  • Perspective correct interpolation
  • Depth buffer
  • Gamma correct blending - converting to almost linear space
  • Alpha blending??
  • Premultiplied alpha???
  • Merge with base
  • Lightning
    • GLOBAL Ilumination
  • LookAt Camera
  • FPS Camera
  • Reading OBJ models
  • Reading OBJ .mtl files
  • Reading complex obj models (sponza)
  • Reading PMX files
  • Rendering multiple objects, queue renderer
  • Clipping
    • Triagnle rectangle bound clipping
    • A way of culling Z out triangles
      • Simple test z clipping
      • Maybe should clip a triangle on znear zfar plane?
      • Maybe should clip out triangles that are fully z out before draw_triangle
  • Subpixel precision of triangle edges
  • Simple profiling tooling
  • Statistics based on profiler data, distribution information
  • Find cool profilers - ExtraSleepy, Vtune
  • Optimizations
    • Inline edge function
    • Edge function to integer
    • Use integer bit operations to figure out if plus. (edge1|edge2|edge3)>=0
  • SIMD
  • Multithreading
  • Text rendering
  • Basic UI
  • Gamma correct and alpha blending

Resources that helped me build the rasterizer (Might be helpful to you too):

To read