Linear algebra in a new language

    For reasons unknown, I stumbled onto the [Zig] programming language, a new, still in development, low-level systems programming language; like C, but without all the bad things. So I guess quite different from C, but syntax is similarish. It uses LLVM as compiler backend, so it pretty much runs on everything less than 20 years old, and crosscompiles like that’s what you always do.


    A few days ago I was reminded that it’s almost October, which is not only Inktober, but also ADHD Awareness Month, which I spent last year getting a thorough neuropsychatric evaluation. Someone also told me that there is an ADHD Awareness Ribbon, AND IT’S MY FAVOURITE COLOR!!11 Ehm, sorry1 about that. not sorry ↩

    Messy shadows

    Apparently, I messed up some more vector algebra. Ray / surface hits currently record the event in surface space, which works just fine for shading a unit sphere still positioned at origin. When we transform things around, and try to cast the secondary shadow rays, it becomes painfully obvious that surface space and world space no longer coincide.

    All the things

    One limitation so far was that there could only be one surface in a scene. To get past that, we add the Group meta-surface, that contains a number of surfaces, and intersects with rays on their behalf. To make this actually useful, surfaces also need transforms to translate them out of their shared origin.