Andrew Helmer's Avatar

Andrew Helmer

@andrewhelmer.bsky.social

Rendering at Respawn Entertainment. Previously Luxology, The Foundry, Google. Enthusiast landscape photographer (andrewhelmer.com/photography). All views my own. He/him.

114 Followers  |  89 Following  |  56 Posts  |  Joined: 15.11.2024  |  2.1543

Latest posts by andrewhelmer.bsky.social on Bluesky

My first 3D software!

06.10.2025 23:37 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Alternative definition of Spherical Harmonics for Lighting – Graham Hazel

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!

04.10.2025 19:46 β€” πŸ‘ 22    πŸ” 8    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

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!

01.10.2025 13:55 β€” πŸ‘ 34    πŸ” 12    πŸ’¬ 1    πŸ“Œ 2
Preview
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...

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...

08.09.2025 00:49 β€” πŸ‘ 152    πŸ” 52    πŸ’¬ 7    πŸ“Œ 2

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.

22.08.2025 13:43 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

22.08.2025 13:03 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Paper here: diglib.eg.org/bitstream/ha...

19.08.2025 20:23 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Spherical Harmonic Exponentials for Efficient Glossy Reflections
YouTube video by High-Performance Graphics Spherical Harmonic Exponentials for Efficient Glossy Reflections

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?...

19.08.2025 20:22 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 1    πŸ“Œ 1

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...

14.08.2025 20:35 β€” πŸ‘ 108    πŸ” 33    πŸ’¬ 1    πŸ“Œ 3
Hallucinations on the future of real-time rendering. Angelo Pesce's homepage & blog on computers, graphics and other things.

"Hallucinations on the future of real-time rendering", High Performance Graphics 2025 keynote: c0de517e.com/023_hpg.htm

13.07.2025 14:39 β€” πŸ‘ 19    πŸ” 7    πŸ’¬ 0    πŸ“Œ 0

Your cone solid angle sampling post reminded me of this!

09.07.2025 20:42 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Always a great reference for generating an orthonormal basis from a unit vector: jcgt.org/published/00...

09.07.2025 17:34 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

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...

07.07.2025 04:19 β€” πŸ‘ 86    πŸ” 16    πŸ’¬ 0    πŸ“Œ 0
Preview
Announcing a port of Angband running entirely in-browser. Angband is a venerable roguelike dungeon-crawler set in the Tolkien universe.

There are a bunch of follow-ups, and the libdivide library to do this at runtime:

ridiculousfish.com/blog/posts.h...

libdivide.com

03.07.2025 17:22 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

03.07.2025 17:19 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Labor of Division (Episode I)

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.

03.07.2025 17:18 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

01.07.2025 21:08 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Oh this looks great! I've been looking for an easy-to-use C++ library parser.

26.06.2025 05:05 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
44-Issue 8 High-Performance Graphics 2025

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.

21.06.2025 08:12 β€” πŸ‘ 52    πŸ” 24    πŸ’¬ 1    πŸ“Œ 0

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.

20.06.2025 16:50 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

20.06.2025 16:27 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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".

20.06.2025 16:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

20.06.2025 02:39 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

20.06.2025 02:35 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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?

20.06.2025 02:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image

Gigi Version 1.0.0 released!
This includes WebGPU code generation, and the dx12 preview feature cooperative vectors.

A gallery of a few Gigi techniques that you can run in your browser:
electronicarts.github.io/gigi/

Gigi:
github.com/electronicar...

18.06.2025 18:07 β€” πŸ‘ 43    πŸ” 10    πŸ’¬ 1    πŸ“Œ 0

Oh wait, sorry, the distance between two points would be the *maximum* CDF differences amongst projections. Not minimum.

12.06.2025 01:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Yup, that's why I mentioned it! I think you could apply this to make a distance measure for best candidate sampling.

12.06.2025 01:29 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Very similar to your number #2, but not the same. Possibly beneficial cause you can precalculate a large number of projected CDFs. Then you *could* make it reasonably fast to do the lookups O(klogn) for the n+1th point, where k is the number of projections you check.

12.06.2025 01:00 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

The sliced optimal transport approach to this would be to calculate a CDF of your image along many projections. The "distance" between two points is the minimum CDF difference among all projections. Could also try something like the sum of projected CDF distances squared.

12.06.2025 00:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

@andrewhelmer is following 20 prominent accounts