Don Williamson

@donw.bsky.social

Head of Rendering @ Pacific Light & Hologram ~30 games/engines/platforms: Fable, Splinter Cell, Total War, Dauntless, No Mans Sky, DeepMind Lab, etc. Lionhead/Microsft, Ubisoft, Google/DeepMind, SEGA, etc. https://donw.io https://github.com/Celtoys/

Is it that time of the year again? I think it is... The default lighting model in UE makes me really sad. I can't enjoy anything anymore, it's everywhere. You have the culmination of 30 years of engine development at your fingertips. Please, please use it!

I've rebuilt my website with a custom Hugo theme and updated to the latest version of Hugo. Also moved comments to utteranc.es I'll be adding more blog posts soon and starting a non-technical series as it will be a while before my work allows me to talk about what we're doing. donw.io

Bild

Look what I found! My original compiler in the 90s back in school, bought for me by a friend's parents. Dad threw it away along with all my other stuff when I left home and it's taken me 20 years to track a copy down.

Bild

Lord Save Me from the Old Dudes in my LI feed suddenly trying to become "AI Influencers," now that LLMs can temporarily prop up their washed out relevance refusing to step aside and let the younger generations thrive and grow. “LLMs have granted me a second career as a thought leader”

In ~2007 when coding the ambient lighting of Splinter Cell, I had the idea of storing dynamic SH probes in Voronoi cells, where a) dynamic objects could walk/lerp the face graph, and b) static meshes "palettised" probes per vertex and lerped to give Realtime GI. It never shipped but look how pretty!

I was noodling over API design philosophy during breakfast and made a link I should have made long ago about white-board/test interviews. Recently somebody claimed "we have the best engineering team in Europe" and it grated on me specifically because this is how they hired (they weren't very good).

Bild

lol: "Compile time is one of the bottlenecks HFT engineers notice every day." I mean, have you SEEN the code these guys write? It's like they looked at Boost and thought it didn't have enough code in its header files and templates in its templates.

I'm getting really tired of reading Claude-generated readmes. The voice and drama is so obvious and it immediately turns me off whatever well-thought-through library I'm evaluating.

Can you imagine how good Irish Rugby would be if the AIL was as competitive as the NPC? David Nucifora proposed it once but failed. Each year I get a little down because all the seasons end and then forget NPC is only few weeks away. Glorious Rugby, almost enough to make you want to move over!

Rode Voltron at Europa Park at the weekend. Nothing in the UK could prepare me for such an amazing experience, totally out of this world. My 10 year old subsequently labelled Blue Fire as "relaxing"! Back home and already rueing the lack of options here.

I added Rust-style error propagation to TypeScript by placing an AST rewriter in front of the compile step. Normally a bonkers idea but using Bazel to apply a build step for this was trivial and a huge win! (Try early-returns any error to the caller, propagating up the call stack)

Bild

8 years ago I ported Remotery's UI from JavaScript to TypeScript and added a pretty awesome docking and control layout system. It's massively simpler than the standard dance you have to do, and uses auto snapping/anchoring. Quickly copied over just the window management and it feels great!

The Danger Coder: just enough knowledge to write lock free code, not enough insight to know the difference between lock free and wait free, not enough wisdom to know that the mutex was better.

Star had its own imgui built with NanoVG. One of the funnest bits of the engine I wrote. TypeScript has the DOM canvas so porting the UI window basics from C++ was trivial! Including that lovely "throw that window out of your way" feature 😄 (sim moves faster because it's a fixed-dt multi-stepper)

Ported to TypeScript: Thing/Part updates, harmonic scheduler, sphere-constrained fly camera and a ray-traced visualisation of the earth-size planet. Feels exactly like the C++ version despite being 0.0001% of it. But it lives! (lines are askew because it's an octahedral subdivision of the sphere)

Math library all in! Matrices, quaternions, vectors; all HLSL-like. C++ code used pycgen to avoid templates and worked well. Thankfully TypeScript doesn't have template-compile-time-bloat or need fwd-decl discipline, so could template everything and alias simple types. No operator overloads tho :(

Ported the Thing/Part system from C++ to Typescript and made massive gains for V8-style hot loop optimisations and GC traffic reduction/zombie removal using a Handle system. Wrote my first ever WebGPU code to get started in porting the rendering. Feast thine eyes on yon glory!

Bild

You know that Thing that happens when you live with somebody for a long time? You start taking on each others' speech patterns? I'd say it's pretty easy to tell the high-volume LLM users for just that reason: "the bit that bites", "this is load-bearing", etc. You can't un-notice once you hear it!

I’m happy to announce the release of a new open source 3D physics engine called Box3D. I’ve been working on this project for a few years now, but it represents over 20 years of experience writing physics engines for games. Read more here: box2d.org/posts/2026/0...

Announcing Box3D

I’m happy to announce the release of Box3D, an open source 3D physics engine. It is now available on GitHub. Box3D repository You can think of Box3D as a fork of Box2D, extended with many features nee...

box2d.org