Sign in

Don Williamson

@donw.bsky.social
1.2K followers 200 following 314 posts

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. donw.io github.com/Celtoys

PostsRepliesMedia
Don Williamson @donw.bsky.social · 30/09/2026
"Gentlemen, you can't have a personality in here, this is learning material!"
010
Don Williamson @donw.bsky.social · 30/09/2026
That's amazing. I think it was £200 here, which was an insane amount of money for me at the time. I was paid £17 weekly on a paper route and spent the next 20 weeks paying it back.
110
Don Williamson @donw.bsky.social · 30/09/2026
And to be clear: my position on all this is way more nuanced than LLM=bad, I just vent about what explodes to the top of my "what annoys the old man this morning" pile. But nuance doesn't win friends or alliances, so nobody's interested in that, either. I should go back to shit-posting on twitter!
120
Don Williamson @donw.bsky.social · 30/09/2026
On the other hand here's me twiddling my thumbs and refusing to write blog posts because nobody reads them anymore. They just get consumed by the sponge and shat out in somebody's LLM terminal, uncredited, all personality stripped.
230
Don Williamson @donw.bsky.social · 30/09/2026
Is it wrong that I'm considering unfollowing/muting people who can't recognise when a re-post or re-tweet or whatever is written by Claude?
110
Reposted by Don Williamson
Matt Keeter @mattkeeter.com · 28/09/2026
hi friends I'm very excited to announce Halfspace, my experimental cross-platform IDE for solid modeling with distance fields! This has been in progress since midway through last year, and it's finally "done enough" to make it more public.
mattkeeter.com
Halfspace
An IDE for solid modelling with distance fields
520748
Reposted by Don Williamson
Tom Forsyth @tomforsyth.bsky.social · 28/09/2026
DASHR - Dynamically Animated Skinned Heightfield Rendering Short video for now - I might do a longer one later? youtu.be/-Su9YrcazRk But there's ALL the details in the paper, and you can always Use The Source, Luke for the really deep info. github.com/tomforsyth10...
youtu.be
DASHR - Dynamically Animated Skinned Heightfield Rendering - six minutes version
YouTube video by Tom Forsyth
1423276
Don Williamson @donw.bsky.social · 29/09/2026
Haha, Story Time! Aged 17 I went to Lionhead for a job interview and showed them I wrote my own build system and visual IDE with dependency evaluation because Watcom's compiler was awesome, but Borland's IDE was better. They look confused and asked me if I knew what makefiles were. "Uhh, no?"
170
Don Williamson @donw.bsky.social · 29/09/2026
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.
2140
Don Williamson @donw.bsky.social · 26/09/2026
300 animated/skinned characters on PS2 using tricks like this. Those were some good times.
0130
Don Williamson @donw.bsky.social · 25/09/2026
Would that be to the beat of the cha-cha or something else? 😂
000
Don Williamson @donw.bsky.social · 25/09/2026
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”
251
Don Williamson @donw.bsky.social · 24/09/2026
I got this backwards. Wow. We used Pluto, with coroutine serialisation in our save games. Which made patches/updates the most painful thing you can imagine. Enter watch dogs: media.gdcvault.com/gdc10/slides... It was my suggestion to retire threads to a suspend/save state for subsequent games.
media.gdcvault.com
120
Don Williamson @donw.bsky.social · 24/09/2026
Yes.
020
Don Williamson @donw.bsky.social · 24/09/2026
Lua works too, but the problem is that you generally don't want to serialise coroutine state for long-lived games: it ties saves to the code that created them and makes later patches or new features much harder. On the Fables I believe we forced coroutines into a safe suspended state around saves.
140
Don Williamson @donw.bsky.social · 19/09/2026
hah, or fold their int->float conversions into a matrix multiply!
020
Don Williamson @donw.bsky.social · 19/09/2026
"my texture switches are kicking in 3 triangles too early" is SO Playstation 2. And exactly why that beast was so enjoyable to extract performance from.
020
Don Williamson @donw.bsky.social · 16/09/2026
There's loads of positive here that the graphs can't show because they're relative to population sizes and energy requirements. UK back on the rise for Solar after several years of Tory Destitution. However, wind is much better: #2 in Europe with massive offshore wind capacity.
120
Don Williamson @donw.bsky.social · 10/09/2026
Probe update was over many frames based on: developer.nvidia.com/gpugems/gpug... On Xbox 360 a memexport VS pass blends each vertex's 4 nearest probes into FP16 SH stream (27 coeffs), mesh VS vfetches it by index. Double-buffered, many-frame updated like the probes.
developer.nvidia.com
Chapter 10. Real-Time Computation of Dynamic Irradiance Environment Maps
030
Don Williamson @donw.bsky.social · 09/09/2026
Some promotional images went out that showed the system working on dynamic objects, but nothing of the dynamic SH updates. The cute thing about the Voronoi approach was that you could fit all possible neighour probe transitions in a single cache line, which was perfect for the PPU at the time.
0161
Don Williamson @donw.bsky.social · 09/09/2026
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!
410515
Don Williamson @donw.bsky.social · 08/09/2026
But then Fable 2 looked better than Fable 3, despite having a slower, lower-fidelity renderer. I'm a sucker for colour.
000
Don Williamson @donw.bsky.social · 08/09/2026
We did have a demo back in... 2007? I think. where the AO channels were used to create volumetric light sources instead. You could pick up fluorescent tube lights and beat people over the head with them! IMNSHO it looked better back then than what was released, but the final look ended up bland.
210
Don Williamson @donw.bsky.social · 08/09/2026
yup, I remember that, it was very nice
000
Don Williamson @donw.bsky.social · 08/09/2026
That was Stephen Hill's Ambient Occlusion Fields. Could be both faster and better looking than Screenspace AO. It lost out because the machinery required to bake occlusion fields was not something most people could take on. As a result we had to live with AO Halos for a couple decades.
130
Don Williamson @donw.bsky.social · 08/09/2026
Haha, matches an old screenshot of Splinter Cell I took when I was iterating on the lighting model! But this one is more "Life in Montreal"
120
Don Williamson @donw.bsky.social · 08/09/2026
15 years ago I built a DCPU-16 assembler/debugger/emulator/editor in JS. I asked an LLM for a tiny Zelda-ish adventure. It wrote the code and encoded it in a URL format I designed for sharing. I clicked it and the 15-year-old emulator ran it. dwilliamson.github.io/dcpu-zelda.h... Strange times?
050
Don Williamson @donw.bsky.social · 03/09/2026
RenderDoc is a gift we do not deserve.
0120
Don Williamson @donw.bsky.social · 25/08/2026
I use Bazel for all my projects now and this specific pattern works really well to build on any CI without provisioning: github.com/dwilliamson/... Blog post upcoming when I get over the ennui of it being scraped by AI.
github.com
GitHub - dwilliamson/bazel-starter: Easily build small C++ projects with Bazel
Easily build small C++ projects with Bazel. Contribute to dwilliamson/bazel-starter development by creating an account on GitHub.
010
Don Williamson @donw.bsky.social · 25/08/2026
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).
020
Don Williamson @donw.bsky.social · 22/08/2026
What genuinely liking that model felt like...
static.klipy.com
Milhouse Van Houten Playing Frisbee Alone
ALT: Milhouse Van Houten Playing Frisbee Alone
120
Don Williamson @donw.bsky.social · 18/08/2026
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.
2170
Don Williamson @donw.bsky.social · 13/08/2026
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.
0100
Don Williamson @donw.bsky.social · 11/08/2026
The dependency on clang/llvm is what ended my interest in maintaining clReflect. Try QBE.
020
Don Williamson @donw.bsky.social · 07/08/2026
I can count the number of tech directors who I worked for that considered this important with two fingers. Which, ironically, was the same two fingers...
020
Don Williamson @donw.bsky.social · 07/08/2026
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!
010
Don Williamson @donw.bsky.social · 31/07/2026
What a feast for the eyes www.kay-bruns.de/mod4win/mod4...
020
Don Williamson @donw.bsky.social · 30/07/2026
But it's all like that, isn't it? If I have to read yet another NeRF to Gaussian splat paper or blog post that conveniently forgets Levoy, Whitted, Heckbert, Westover, Rusinkiewicz, Pfister or Zwicker, well... there's not much I can do about it, is there? 😂
140
Don Williamson @donw.bsky.social · 24/07/2026
Poutine for dinner! You can take the immigrant out of Montreal but Montreal never leaves the immigrant.
020
Don Williamson @donw.bsky.social · 21/07/2026
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.
110
Don Williamson @donw.bsky.social · 13/07/2026
I've always loved how people will remember "See it, say it, sorted" for eternity. Yet nobody can remember the number to call. Like, you had ONE FREAKING JOB, guys!
110
Don Williamson @donw.bsky.social · 13/07/2026
I used to enjoy writing Go but I just can't look at it any more. It's really distressing seeing nothing but if/return blocks everywhere, obfuscating control flow in a way that could have been solved. So the server is being written in C# because Go is just not enjoyable anymore.
010
Don Williamson @donw.bsky.social · 13/07/2026
TOML 1.1 is not a draft. The spec was switched to release mode December last year: toml.io/en/v1.1.0 I use Tomlyn for C# which supports it: github.com/xoofx/Tomlyn
github.com
GitHub - xoofx/Tomlyn: Tomlyn is a TOML parser, validator and authoring library for .NET Framework and .NET Core
Tomlyn is a TOML parser, validator and authoring library for .NET Framework and .NET Core - xoofx/Tomlyn
010
Don Williamson @donw.bsky.social · 13/07/2026
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)
110
Don Williamson @donw.bsky.social · 12/07/2026
The source to this WM/Control system is still in a very old branch of Remotery here: github.com/Celtoys/Remo... I also made a video overview. Oh my god it's 9 years not 8. www.youtube.com/watch?v=rX13...
github.com
Remotery/typescript at typescript · Celtoys/Remotery
Single C file, Realtime CPU/GPU Profiler with Remote Web Viewer - Celtoys/Remotery
130
Don Williamson @donw.bsky.social · 12/07/2026
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!
160
Don Williamson @donw.bsky.social · 09/07/2026
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.
1100
Don Williamson @donw.bsky.social · 08/07/2026
Congrats, Alan, hope you have loads of fun.
110
Don Williamson @donw.bsky.social · 08/07/2026
The rest of the UI will take a while longer but I can apparently get a whole bunch of browser accessibility reuse by using a "hidden input control" used to drive my own rendered text edit box. For another day...
010
Don Williamson @donw.bsky.social · 08/07/2026
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)
290