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.