Back to Projects

A lightweight 3D graphics engine from scratch with rasterization and ray tracing support, capable of rendering .obj models with basic lighting.

Links


Summary

I LOVE math. I thought making a renderer would require at least a little bit more math than making a portfolio website... yeah. Yeah it was more math. I love math.

Learned a lot about applying theoretical knowledge (especially in linear algebra) to a real-world thing, and it was actually way more eye-opening than I thought it would be. I ended up having to write good code (oh no...) and think things out before writing them (oh NO).

Features

  • Drawing .obj files.
  • Drawing triangles
  • Self-implemented, very sketchy line-drawing algorithm
  • Depth mapping to avoid overdraw
  • Lighting? What's that?

Technologies

My favorite language, C. Also used my favorite IDE, CLion. That's a joke. Every 30 minutes CLion stops saving the modified buffer to disk and so re-running the code doesn't change anything and I have to force-quit CLion (because normal quitting doesn't work) and restart it. I hate everything that isn't TypeScript or my girlfriend.