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.
About
What I do
Professionally I'm a programmer, but my interests both in programming and outside vary quite a bit.
Graphics Programming, allows me to unite art, science, and programming, and is, naturally enough, my favourite.
I have written a book on shader development in Unity: Physically Based shader Development for Unity 2017.
I like learning new programming languages, and different programming paradigms (e.g. Rust, FP).
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
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 (Houdini, Blender Geometry Nodes, and Unreal's Geometry Scripting)
Writing
LambdaCat
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.
Purescript compiles to Javascript too, it can interoperate with any Javascript library, has no runtime, and has most of those Haskell abstractions, plus a few more.
Talks
Game Development
Talks about Physically Based Rendering, AR development, and interactive debugging.
Functional Programming
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.
Projects
Are We Game Yet?
Want to develop games in Rust? I made Arewegameyet? to gather all Rust crates useful for gamedev in one place.
It's now maintaned by the Rust Gamedev community.
Research
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.
Better Debugging & Live Programming
Following the example of "Inventing on Principle" and the little-known GOAL language and system by Naughty Dog, I seek to find ways to reduce the iteration times in gamedev drastically.