It looks like last year's Gathering for Gardner exchange book is now online, so I can finally release the paper I wrote for it!

It's about how unit quaternions work, and why any rotation is represented by two quaternions (spoiler: the space of rotations isn't simply connected, so you can't blend paths of rotations without this duplication!):

Also includes 9 quaternion recipes, including why qxq^-1 rotates a vector, Frisvad-style tangent space generation, and more.

The team also released Korgi today, which allows you to modify Q2 console variables (like sun direction!) using a MIDI controller (somewhat like PANORAMICAL's MIDI interface)!

You can find the code for Korgi at

Quake II RTX is out today! I helped build the tone mapper for this:

I'm still amazed by the team that's made this—from the q2vkpt demo, to PBR, volumetrics, procgen skies, and more!

But there's more—all of the code is open-source!

For instance, you can see how Q2RTX's path tracing shaders work at

Or you can see some of the new tone mapping techniques at —or build it and write your own RT shaders!

Solidarity with everyone at Riot Games participating in today’s walkout. <3

I'm in the market for some short-term (1-3 months) contract work. Anyone need a programmer? Strongest with UE4 but also working on my Unity skills.

I’m excited to announce I’ll be joining the NVIDIA Developer Technology team in Santa Clara starting April to help people create the next wave of professional graphics!
It’s going to be amazing to be working on GPU technology back in the Bay Area, and I can’t wait to get started!

Global Game Jam, day 3: We presented! Although we overscoped a bit, it was super fun to get to build this world with the rest of the team!

Global Game Jam, day 2: Snow shaders, more texturing, and rigging!

Physically Based Rendering: From Theory to Implementation is online, with plans for annual updates supported by

The fourth edition of Real-Time Rendering just arrived at the office this week! (Pictured here with coffee, not included)

After a bit of work, we now have a Shadertoy-style renderer which handles internal reflection and refraction for the glass and the water!

I was originally planning on adding caustics (more likely using Guardado and Sánchez-Crespo's method from GPU Gems 1 than by projecting a grid from the light to the ground) and dust (just visualizing how the water particles move), but this is probably enough for now!

Finally finished debugging compute shaders - the fluid sim now runs (almost*) entirely on the GPU! Right now, we're getting just over 30 frames per second on my laptop, running on a 64^3 grid with ~9.53*10^5 particles. (For some reason, it seems to be taking more time transferring particles to the grid than solving the pressure equations, which is surprising.)

Next: Moving away from the debug visualization and implementing voxel-based raymarching!

*Prefix sums not included.

Favorite activities of fluid sims:

- flow (ok)
- get stuck between grid cells (??)
- disappear into the lower-left corner (???)

However, gravity and the ghost fluid method are both implemented now!

It took a while, but I finally managed to implement self-advection in the fluid simulation engine I'm building!

Gamedev Mastodon

Game development! Discussions about game development and related fields, and/or by game developers and related professions.