This time we'll chase down how the Global Illumination contribution is calculated. It takes some work, because the code which does the key calculations is behind layers of quality choices, which are encoded as defines.
How I got here
When I was 2.5 years old I was fascinated by the black and green screen of our Commodore PC-10. I learned to type in commands at the DOS prompt before I learned to read.
I offered a fair bit of resistance to becoming a programmer (I wanted to be an artist) but in the end, programming is the easiest thing I can do at a professional level.
I haven't given up on becoming a good artist though. Game Development, especially Graphics Programming, allows me to unite art and programming, and is, naturally enough, my favourite.
Procedural Modelling (and generative art in general) is another great way to unite programming and art, and something I'm actively tackling at the moment, by learning Houdini.
What I do
Professionally I'm a programmer, but my interests both in programming and outside vary quite a bit.
The life of a fulltime employed programmer to one company isn't conducive to the rate of improvement and learning that I enjoy.
So, I contract, I write and speak about my findings, and whatever subject interests me at the moment.
I have written a book on shader development: Physically Based shader Development for Unity 2017.
I end up doing a fair bit of independent research (totally self-funded), in Game AI, better ways to debug (such as time-travelling debuggers), live coding and different programming paradigms to use (FP, Rust), which, I hope, will at some point lead to something useful.
I also gingerly but stubbornly proceed in training myself to be both a concept artist and a 3d artist. Coding is definitely easier for me :P
What I know
If you know Elm and want to add to your toolset a language, which actually has those higher abstractions that you've heard about, Purescript is the obvious choice.
Are We Game Yet?
Rust for Rendering & Gamedev
C++ is the lingua franca of the game industry, but my experience with Functional Programming taught me that Type Systems can be much more useful than you'd expect.
Rust is a proper attempt at using PL research to achieve a practical goal, namely a memory safe, low level and high performance language.
I think Rust will prove itself very useful in making gamedev much less painful.
In order to help people use Rust for gamedev, I built and maintain Arewegameyet.rs, an overview of the state of the ecosystem, and an index of useful libraries.
An open source project for reimplementing comparable functionality to the amazing Interactive Fiction game Versu.
We're using Haskell, Planners, Automated Theorem Proving, and trying out different Modal Logics.
We are on:
An Interactive Fiction game about a lonely boy who is hit by some forceful hope in the aftermath of a catastrophe of local proportions.
A realistic 3d cooking simulation for iOS and GearVR. I made the physically based shaders, amongst other things.
I also speak at conferences. Since I started in order to help popularise Functional Programming, most of my talks are about that.
Here I'm only going to list talks that were recorded.
With my trusty rugged Lumix I take mainly photos of great architecture and landscapes.
The ideal complement of a Graphics Programmer is 3d modelling and animation.
I'm currently learning Houdini and procedural modelling.