grtrace - General Relativity rayTracer

Rendering of a rotating black hole's accretion disk with visible redshift

[github project] [images]

This was a computer graphics/physics simulation project I worked on with Grzegorz Uriasz in high school. It's a raytracer that takes into account general relativity effects when calculating light ray paths. In short, it let us generate simulated pictures of black holes and other massive spherical objects described by various GR metrics, we implemented support for stationary, rotating and charged black holes. The raytracer can also simulate gravitational redshift for monochromatic light rays.

The entire raytracer is multithreaded, as generating an image using this image is an embarassingly parallel problem and the task can easily be split between any number of CPUs up to the number of pixels to generate. We have used the D programming language, which led to a quite performant simulation while being easy to quickly prototype with. Apart from the raytracer there is a visual debugger/inspector tool that evolved from a way to understand bugs in the code to an educational tool allowing us to learn more about GR by looking at interactions of light with objects from various perspectives.

Automated fault injection in Verilog hardware designs

Bachelor Honours project at the University of Edinburgh

[github project] [report pdf]

During my final undergraduate year I have worked on a tool to simulate faults in hardware designed in Verilog. Instead of hooking into existing Verilog simulators and/or FPGA toolchains I decided to create a more general solution by transforming the Verilog source code of designs. I then tested the tool on a couple of simple designs and on a larger pipelined RISC-V CPU design to verify that the tool works and observe the effects of bit flips in memory cells on devices in simulation and on a FPGA board. For more details I invite you to read the PDF of my final report linked above.

BallX World voxel sandbox game

Screenshot from the voxel engine showcasing a few different block types

[github project]

A voxel game mostly inspired by Minecraft, Factorio and Space Engineers that I've been working on to practice my development skills. The game is written in the Rust programming language and uses the open Vulkan graphics API for rendering. It doesn't use any existing game engine, instead I'm writing all the systems code from scratch - mostly as a learning exercise, but also because voxel worlds require a lot of custom code in major engines anyway.