Things I’ve built to understand how they work, from GPU and CPU renderers to firmware and boot code. All source code is on GitHub.

Graphics and rendering

vlkn — Vulkan rendering engine

2024

A C++20 Vulkan renderer with a quaternion 6-DOF camera, an 8-texture sampler array with anisotropic filtering, Blinn-Phong lighting with 16 animated point lights, a fixed 512 Hz simulation loop and an ImGui debug overlay, built on swap-chain recreation (MAILBOX with FIFO fallback), two frames in flight synchronized with fences and semaphores, staging-buffer uploads, depth buffering, descriptor sets and push constants.

  • C++20
  • Vulkan
  • GLSL / SPIR-V
  • CMake

coneng — software 3D rasterizer

2024

A CPU rasterizer with no graphics API: its own matrix math, near-plane and screen-edge triangle clipping, back-face culling, perspective-correct texture mapping and a depth buffer, rendering OBJ models.

  • C++
  • 3D math
  • Rasterization

Embedded and microcontrollers

ESPCon — real-time 3D on a microcontroller

2024

A real-time 3D renderer for an ESP32-S3 with no GPU: hand-written vector and matrix math, back-face culling, flat lighting and depth sorting, with triangles pushed over SPI to TFT displays and OBJ meshes loaded from an on-flash LittleFS filesystem.

  • C++
  • ESP32-S3
  • SPI
  • PlatformIO

Systems and tools

GOS — x86 boot chain

2024

A two-stage x86 boot chain: a 512-byte NASM boot sector walks a FAT12 filesystem to load a 16-bit C second stage with its own small libc and FAT12 driver, using BIOS disk services with retries. Debugged in QEMU and Bochs.

  • x86 assembly
  • C
  • QEMU
  • Bochs

terminal_animation — video to ASCII

2024–2025

Plays video, GIFs and images as 24-bit color ASCII art in the terminal. A producer–consumer pipeline runs decoding, rendering and the UI on separate threads; builds on Linux and Windows.

  • C++20
  • Multithreading
  • OpenCV
  • FFmpeg
  • FTXUI

Live demo

A small simulation compiled to WebAssembly that runs directly in the browser.

Open-source contributions