about | portfolio of hobby projects | devlog

Pathtracer; updated 2024.05.21, pathtracer_windows_v0.3.2.zip, Project Page

While taking a Computer Graphics course in my 4th year at Queen's University, I put the concepts I was learning into practice by iterating on my hobby Path Tracer. The final result is still a hobby Path Tracer, but it is now much closer to production quality.

The current version is a physically-based Path Tracer capable of rendering various geometrical shapes, including triangles. The application includes a couple hard-coded scenes that the user may select at a time for rendering.

Earlier versions of the Path Tracer boasted multiple backends (DXR 1.0 and Vulkan), selectable at compile time. I developed these versions whilst interning at AMD. With the recent developments, such backends are no longer supported.


Pokemon Demo; updated 2024.05.22, pokemon_demo_windows_v0.1.0.zip, pokemondemo.ncabral.ca, Project Page

I built Pokemon Demo back in 2017 whilst I was following along at home to the Handmade Hero series. I spent an entire summer passionately working on this project.

Pokemon Demo is a video game written from scratch using C/C++, with no libraries used except for the necessary platform APIs such as the Win32 API. Each pixel is stored in system memory and written to by the CPU.

Since then, I have ported the game to run on the web via the raylib library (which uses Emscripten to convert LLVM bytecode to WebAssembly).


Plasma Compiler; download upcoming, Project Page

In high school, I became curious about how compilers generate machine code from high-level programming languages. To educate myself, I read parts of Crafting Interpreters. The final result of this exploration is Plasma Compiler, a Python program capable of compiling a subset of the C programming language. It works by writing to an x86 assembly file. A separate assembler program (e.g., NASM) must be used to generate an executable for a machine with the x86 architecture.