Andrew Helmer
@andrewhelmer.bsky.social
110 followers 89 following 56 posts
Rendering at Respawn Entertainment. Previously Luxology, The Foundry, Google. Enthusiast landscape photographer (andrewhelmer.com/photography). All views my own. He/him.
Posts Media Videos Starter Packs
andrewhelmer.bsky.social
For anyone who's tried to use spherical harmonics for lighting and found the notation- and terminology- heavy definitions confusing, highly recommend this classic: grahamhazel.com/blog/2017/12...

I think Graham Hazel's blog was down for a long time, years maybe, but works now!
Alternative definition of Spherical Harmonics for Lighting – Graham Hazel
grahamhazel.com
Reposted by Andrew Helmer
baptiste-genest.bsky.social
Computing the exact bijection of the optimal transport (OT) problem between very large point sets is completely untractable…

In our SIGGRAPH Asia 2025 paper: “BSP-OT: Sparse transport plans between discrete measures in log-linear time” we get one with typically 1% of error in a few seconds on CPU!
Reposted by Andrew Helmer
mjp123.bsky.social
I've got a new blog post for all of you fine folks! It runs through the additions to D3D12 since it was released, and finishes up with some of the things that have changed for me personally in my code.

(And yes it's really been 10 years 👴).

therealmjp.github.io/posts/ten-ye...
Ten Years of D3D12
For those of us that have been using it from the start, it can be hard to believe that Direct3D 12 has been around for nearly ten years now. Windows 10 was released on July 29th 2015, and D3D12 has be...
therealmjp.github.io
andrewhelmer.bsky.social
That wouldn't surprise me, or at least Pixel chips haven't improved nearly as much as QC (and definitely not Apple). The Pixels have 50% more RAM than comparable iPhones though.
andrewhelmer.bsky.social
It's not a regression though, the 10XL is still faster than the 9XL according to Geekbench. Just that Pixels were never near Apple perf, which isn't new.
andrewhelmer.bsky.social
Highly recommend Peter Shirley's presentation of "Spherical Harmonic Exponentials for Efficient Glossy Reflections". As always, he makes notation-heavy math way more accessible, and it's an amazing technique: youtu.be/jN7FX5COASM?...
Spherical Harmonic Exponentials for Efficient Glossy Reflections
YouTube video by High-Performance Graphics
youtu.be
Reposted by Andrew Helmer
kostasanagnostou.bsky.social
Great Siggraph 2025 presentation of Gran Turismo's tonemapping pipeline, which also includes a fantastic introduction to light perception and tonemapping, its origins and how it evolved over the years with display technology, recommended read: blog.selfshadow.com/publications...
blog.selfshadow.com
andrewhelmer.bsky.social
Your cone solid angle sampling post reminded me of this!
andrewhelmer.bsky.social
Always a great reference for generating an orthonormal basis from a unit vector: jcgt.org/published/00...
Reposted by Andrew Helmer
yiningkarlli.bsky.social
At SIGGRAPH 2025, Intel, Disney, & Chaos are doing a course on the nitty gritty details of implementing path guiding methods in 3 production renderers: Cycles, Hyperion, and Corona. I helped write the course notes: 80 pages of great stuff! Coming soon.

s2025.conference-schedule.org/presentation...
andrewhelmer.bsky.social
Or maybe do precomputation on a CPU and give the values to the GPU for the divisions? Maybe good for finding cells in a uniform grid that is not a power-of-two size.
andrewhelmer.bsky.social
Found this cool blog post explaining one way to optimize integer divisions by a constant divisor: ridiculousfish.com/blog/posts/l...

Could be useful for a lot of things. Eg hash-map with a prime number of entries, do the precomputation on initialization.
Labor of Division (Episode I)
ridiculousfish.com
andrewhelmer.bsky.social
I don't think this is bad at all. In addition to being well documented, it's well contained. Hacks like these are often necessary, what really becomes problematic is when they're spread all over the place through the codebase and make other code brittle.
andrewhelmer.bsky.social
Oh this looks great! I've been looking for an easy-to-use C++ library parser.
Reposted by Andrew Helmer
momentsingraphics.bsky.social
All HPG 2025 papers are now available on the EG digital library.
CGF papers: diglib.eg.org/handle/10.23...
Conference papers: diglib.eg.org/handle/10.23...
It has been a huge honor to act as HPG papers chair and guest editor and I look forward to an exciting program in Copenhagen.
44-Issue 8
High-Performance Graphics 2025
diglib.eg.org
andrewhelmer.bsky.social
Yeah, me too. But that still doesn't support their statement that someone is interrupted "every 2 minutes". That's the most extreme assumption - that every message is an interruption. The opposite extreme is that only one single message each day is an interruption. Both extremes are wrong.
andrewhelmer.bsky.social
By their metric, one 30 minute conversation with 50 messages is the same amount of interruption as a unique message every ~10 minutes throughout the 8 hour workday. In one of these cases you get 7.5 hours of uninterrupted focused work, and in the other you get interrupted every 10 minutes.
andrewhelmer.bsky.social
Of course many async threads is terrible. But if I'm in an active conversation with a person (whether it's messaging, or in real life), yes it can be a distraction, but it's wrong to refer to every single statement that person makes as a unique "interruption".
andrewhelmer.bsky.social
Hmm looking at their absolute numbers, it seems like they are not distinguishing.

None of this takes away from your high level point at all, distractions have gotten way worse. But the "average 2 minutes" looks like a very misleading, arguably incorrect stat.
andrewhelmer.bsky.social
The mean time between receiving emails for me is probably a few minutes, and probably shorter for the mean time between Slack messages (DMs or tags). But the vast majority of those aren't interruptions.

It's totally possible MS is actually classifying which ones are interruptions in a sensible way.
andrewhelmer.bsky.social
I'm curious about a lot of these metrics. I get an email for every CL submitted into our codebase, but it goes directly into an archived label. Does this count as an "interruption by an email"? If I've already started a conversation with someone, does each new message count as an interruption?