Projects

Here is an overview of some of the bigger software projects I’ve worked on in my free time.

Polycube

A small, simple, voxel editor written from scratch in C. Posting intermittent updates about the project at https://bsky.app/profile/nelarius.bsky.social.

Features:

  • voxel editing with single voxel, box, and face extrusion brushes.
  • a UI written using the Clay box layout library resulting in microsecond layout and rendering times.
  • a path tracer written using Metal raytracing API.
  • an implementation of the Unreal Engine atmospheric rendering model.

vxc

sky

rayfinder

Find it on github.

path-traced-sponza

An interactive WebGPU pathtracer, implemented for desktop platforms using the Dawn renderer.

The goal was to learn how to implement path tracing for triangle meshes. The project contains

  • next event estimation for sampling the sun disk
  • a physically based sky model
  • using animated blue noise as sampling distributions
  • simple lambertian diffuse material

imnodes

Find it on github.

imnodes

A small, dependency-free node editor extension for dear imgui. It features a small immediate-mode API similar to dear imgui itself.

Wren++

Find it on github.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
wrenpp::VM vm;
vm.beginModule( "math" )
.beginClass( "Math" )
  .bindFunction< decltype(&cos), &cos >( true, "cos(_)" )
  .bindFunction< decltype(&sin), &sin >( true, "sin(_)" )
  .bindFunction< decltype(&tan), &tan >( true, "tan(_)" )
  .bindFunction< decltype(&exp), &exp >( true, "exp(_)" )
.endClass()
.endModule();

vm.executeString( "import \"math\" for Math\nSystem.print( Math.cos(0.12345) )" );

A C++ binding generator for the Wren programming language. It utilizes modern C++14 metaprogramming features and is fairly compact as a result. You can use Wren++ to wrap any C++ function or class in Wren code. Wren++ also provides access to Wren code from C++.

A small tutorial on its usage can be found here.

Contents