Andrew Helmer
andrewhelmer.bsky.social
Andrew Helmer
@andrewhelmer.bsky.social
Rendering Engineer. Taking some time off. Previously Respawn (EA), Google, Luxology (The Foundry). Enthusiast landscape photographer (andrewhelmer.com/photography). All views my own. He/him.
Something I've wanted to write up for a while, this is how I wish I'd learned spherical harmonics: andrew-helmer.github.io/demystifying...
Demystifying Spherical Harmonics: An Optimization Approach
Ever since I first heard of spherical harmonics as an approximation in computer graphics, I have felt that the way they are explained is too complicated. Sometimes the explanations assume a bunch of m...
andrew-helmer.github.io
October 19, 2026 at 2:38 PM
Reposted by Andrew Helmer
Today the second edition of Mastering Graphics Programming with Vulkan is out in the wild!
We did our best to take the critiques from the first edition and improve.
I really hope will help people understanding more and more rendering and have fun with it!
www.amazon.com/Mastering-Gr...
Amazon.com: Mastering Graphics Programming With Vulkan: Develop a modern rendering engine featuring GPU-driven rendering, advanced lighting, and ray tracing: 9781806116379: Gabriel Sassone, Marco Cast...
Amazon.com: Mastering Graphics Programming With Vulkan: Develop a modern rendering engine featuring GPU-driven rendering, advanced lighting, and ray tracing: 9781806116379: Gabriel Sassone, Marco Cast...
www.amazon.com
October 16, 2026 at 11:36 AM
I loved the movie and wanted to see it in IMAX 70mm, but I saw the movie in Dolby (1.85:1) and unfortunately needed to close my eyes during most of that sequence. Never experienced discomfort like that with so many flashes of light in a movie, but maybe Dolby is brighter than IMAX?
September 23, 2026 at 4:43 AM
Reposted by Andrew Helmer
New blog post! Go read about making ReSTIR better, killing ReSTIR, improving denoising, and more! jms55.github.io/posts/2026-0...
September 18, 2026 at 9:23 PM
IIRC the full API he proposed in the blog post requires some shading language changes too (but no hardware changes - modern GPUs support it all). There would be not even descriptor or sampler heaps anymore, just memory addresses that can be cast as a descriptor or sampler.
September 6, 2026 at 11:21 PM
Not sure if you've seen Seb's talk, but part of his point is that modern GPUs already fully support his proposal under the hood, the limitation is with the APIs (DirectX, Vulkan) needing to support older GPUs.
September 6, 2026 at 9:08 PM
Yeah I hope it moves this way. Maybe they want to simplify the graphics API too. But I imagine this would more be on Microsoft's side to push as an API? For AMD I think mayybe you could theoretically today make a new Linux graphics API, since the GPU commands, shader ISA/bytecode are all open.
September 6, 2026 at 9:06 PM
Totally agree, this really makes graphics programming a lot more fun and straightforward. I've been putting off some personal projects until he released this.
September 6, 2026 at 8:01 PM
I'd love to see the comparisons with these in your tool! Seems like a really awesome way to visualize and understand all the tradeoffs.
September 4, 2026 at 6:49 PM
The Khronos looks like it has bad "luma inversion". If one value has higher luminance than another before tone mapping in HDR, it should have higher luminance after tone mapping too. But it's possible to make a hue preserving tone mapper without that issue by rolling off to white (eg Frostbite).
September 4, 2026 at 6:46 PM
FYI the FB Display Mapper also has this linearSegmentEnd = 0.25 constant, which is where the shoulder starts. You can increase it to get brighter highlights.
September 4, 2026 at 6:28 PM
Have you looked at the Frostbite Display Mapper (code at the end slides: gdcvault.com/play/1024466...)? I think it's similar to your Hue Preserving W. The other one people like a lot now is GT7 (slides: blog.selfshadow.com/publications..., code: blog.selfshadow.com/publications...)
blog.selfshadow.com
September 4, 2026 at 6:26 PM
Taken in Kyrgyzstan on a trip with two friends, 2023. I don't plan to post much of my photography on Bluesky, but this is the first photo I've edited in a few years. I'm on a personal sabbatical right now, so I have a bit more free time to go through the backlog.
September 3, 2026 at 9:12 PM
Yes, it's perfect for that case and I've done the same many times! Temporary debug code where a noticeable-but-small perf hit doesn't matter.
September 1, 2026 at 4:51 PM
I'm not sure, could be different use cases! Like if you want to know an exact counter value when a crash happens, delayed aggregation might not work (though it's possible to design for this too). Mostly I was pointing out that one should be mindful putting even this in hottest loops.
August 30, 2026 at 12:54 AM
Depends how hot though. IIRC, x86 doesn't have a relaxed mode atomic increment and even simple atomic ops can be quite costly (of course nothing like printf), even with no contention. I've done a lot of optimization replacing atomics with "thread local" or stack values that get aggregated later.
August 29, 2026 at 9:56 PM
Yes and the question itself (for religion) is something we acclimate to as children. But also... religion *is* still one of the things people hold the most extreme and outspoken views about, but maybe our social bubbles already exclude the greatest extremes.
August 22, 2026 at 8:05 AM
It seems like AI has very wide uncertain distributions of impact, and that's so likely to trigger extreme response from any fears or dreams people have. Like the range of plausible outcomes spreads from destroying humanity to solving all our problems and everything in between.
August 22, 2026 at 7:38 AM
I'm definitely curious to see the patterns you'd use! There's a lot of tradeoffs in keeping the original code readable, keeping it high performant, etc. and (in C++) I haven't seen anything I love all around.
August 16, 2026 at 9:31 AM
I think it's also an issue of pure numbers and how social media makes the crowd invisible. We forget we're making comments in front of hundreds or thousands of people, and then feel hurt if just a couple have a strong negative reaction, ignoring that most didn't say anything or even care.
August 3, 2026 at 6:07 PM
I think it happens to everything in programming - design patterns, development processes, languages. Someone says "here are some observations about things that work well in some situations" and eventually some people become dogmatic and prescriptive that it's the only way.
July 26, 2026 at 9:01 PM
Reposted by Andrew Helmer
Over the past few years, it’s become clear to me that there were three graphics papers in the past few years that truly revolutionized their subfields: 3D Gaussian Splatting by Kerbl et al 2023, Monte Carlo Geometry Processing by Sawhney/Crane 2020, and ReSTIR by Bitterli et al 2020.
July 25, 2026 at 7:58 PM