Don Williamson
banner
donw.bsky.social
Don Williamson
@donw.bsky.social
Head of Rendering @ Pacific Light & Hologram

~30 games/engines/platforms including Fable, Splinter Cell, Total War, Dauntless, No Mans Sky, DeepMind Lab.

Lionhead/Microsft, Ubisoft, Google/DeepMind, SEGA, etc.

https://donw.io
https://github.com/Celtoys/
It's coming up on 10 years since I added Global Illumination to UE4 for a client and I still feel immensely sad when colourful games don't attempt the same. They lose out on so much warmth and grounding, and also making lighting artist' life much easier.

(this particular one was voxel cone tracing)
November 19, 2025 at 9:34 PM
Took me AGES to dig this up, I knew I preserved it but I have so many backups. This my first reviewed Shareware game from early 1997 (aged 16). I'd love to frame it but it does look a bit gaudy 😂
November 10, 2025 at 10:48 PM
November 8, 2025 at 11:28 PM
October 19, 2025 at 8:50 PM
The generated SPIR-V should be an OpSelect on this one, which is a V_CNDMASK_B32 on GCN.
October 19, 2025 at 8:22 PM
There are days when I look at colourful, cartoony models up close and get annoyed at the polygonal silhouettes. Mainly because a small team in Santa Monica solved this 25 years ago on a Playstation 2 and I love that technology so much (tfrags!) . Using Lisp.
October 7, 2025 at 9:23 PM
Success!

Standard CRT finally bolted in and my custom CRT is no longer necessary.

I can now delete 1000s of LOC that have caused years of pain.

There's a new startup race-condition in there but I'll find that easily enough.
September 22, 2025 at 10:43 AM
Another target on my list is clReflect. Carrying Clang/LLVM as a dependency has been lunatic-fringe levels of dedication to the cause - a 100GB build folder! The worst part was maintaining a release copy and my own local enhancements.

I have to decide whether to retire it or build a custom parser.
September 22, 2025 at 9:42 AM
A long, long time ago, in a world far, far away; my engine used to run in the browser with a tiny download and no dependencies. For some reason, I justified its continued existence after that point due to its tiny size and fixed behaviour across platforms (e.g. musl). Madness.
September 21, 2025 at 4:14 PM
I'm switching over from my homegrown CRT to the MSVC one so that I can shed some maintenance weight. Long overdue.

Getting some funky errors now because of some shortcuts I took, but it's nearly working! Can't wait to delete all that code.
September 21, 2025 at 12:52 PM
UK climate skeptics be like
September 11, 2025 at 8:21 AM
My confusion was kicked into high gear by these levels in Fable and some tree/vegetation issues. LD kit-bashing all these tiny cave instances wasted their time, made iteration complicated and killed engine performance and lighting quality. I had big ideas for custom tools.
July 28, 2025 at 2:20 PM
Seriously. YOUR ALL FIRED.

This is why academic geeks get stick for obfuscation. Using the SAME VARIABLE for DIFFERENT things, only changing their meaning based on the FONT WEIGHT.

I'd love to throw this in the bin but it's a good paper.
July 17, 2025 at 11:25 AM
Long time ago I built a Chunked-LOD QEF Surface Nets engine on the GPU that could handle arbitrary neighbour LOD differences and used Dual Number SDFs for cheap/accurate QEF edge normals.

It could scale to planetary sizes like my modified Transvoxels.

Maybe one day I'll share the nicer shots :)
July 2, 2025 at 11:34 AM
In 2004 we pitched for Ms. Pacman on PSP.

We got the PS1 game and I reverse-engineered mesh/texture/level formats, no source access.

In 3 days we recreated the first level, all AI and game logic in our engine.

We lost the contract to somebody else because Namco said what we did was "impossible."
May 7, 2025 at 10:36 AM
And I even got a chance to add realtime global illumination; an obsession that would shape my career with many attempts later.

This was the research project on Spherical Harmonics with rotation that I used to implement it.

The flipcode post is still archived :) www.flipcode.com/archives/06-...
April 24, 2025 at 8:52 PM
Every mesh, from the characters to the vehicles to the doors to buildings; all were modelled at "movie resolution" and ray-traced texture/normal detail onto lower resolution meshes.

We built our all our own tools for this which were faster and higher quality than AMD, Crytek, Id, etc. So much fun.
April 24, 2025 at 8:50 PM
Level modelling and layout was done in Lightwave, with our own real-time engine view that worked despite every hurdle the Lightwave C API tried to kill it with.

The only rendering feature it didn't reproduce was the shadowing.
April 24, 2025 at 8:48 PM
Some low-res screenshots
April 24, 2025 at 8:45 PM
Even more! With the funky dynamic fire lighting affecting splats
April 15, 2025 at 6:02 AM
Earlier prototype images
April 15, 2025 at 6:01 AM
Gonna start pulling old posts from that other account for posterity:

Prototype splatting tech for stable painterly rendering, running @ 30fps on an Xbox 360 in 2010.

For Fable Heroes (internally named Fable 4-Play); a game me and some Fable buddies started and promoted through Lionhead.
April 15, 2025 at 6:00 AM
In these 10 year old shots I had 6000km radius voxel planets tracing 2km long "cones" for AO.

It was fast on a 2012 GTX 660 by walking the faces of the camera-centred LOD octree on the GPU.

This is a small sample of the kind of innovation that building the BVH & trace code in drivers is burying.
April 8, 2025 at 3:39 AM
you can get some trivial SSS approximations by projecting those results onto a low frequency basis as well (this is 9 channel SH IIRC)
December 11, 2024 at 10:44 PM
Many years ago I came across a computer generated image in a book that blew my mind and set a lot in motion. I thought: "Wouldn't it be amazing if we could make computer games look that good? Wouldn't even better if I could help!"

Say Hello to The Road to Point Reyes!
December 7, 2024 at 1:35 PM