Rendering Programmer at Meta. Formerly EA, Naughty Dog, Epic, and Unity.

Joined February 2014
67 Photos and videos
New Post: Triangle Tessellation with Clamped Parallelograms. The key idea is to use float tess factors like Dx11 tessellation but replace the pattern to be straighter and more stable. Also includes an MIT licensed web viewer for reference. filmicworlds.com/blog/comput…
1
32
123
12,488
John Hable retweeted
Replying to @AgileJebrim
Also modern C has constructs such as templates and ranges, which are not simple 1:1 operations. The language has constructs that are inherently slow to compile. Many of them could be designed slightly differently and/or by making them language features instead of library features to make them significantly faster to compile. C 20 std library headers for example are significantly slower to compile vs C 17. Language isn't slower to compile, but the standard library is. It's such a massive template clusterfuck. So it's not just a compiler problem, it's also a standard library problem.
3
3
118
7,808
Has anyone had success building aom for emscripten with simd support (either SSE or NEON)? I've been trying to make it work without success, and the guides specify DAOM_TARGET_CPU=generic as the golden path. aomedia.googlesource.com/aom…

1
927
John Hable retweeted
meshoptimizer v0.25 is out! Featuring new simplification function that optimizes positions and attributes for appearance, experimental permissive mode to simplify faceted regions with selective seam preservation, regularization option for improved tessellation quality and ...
2
42
230
11,997
This is an important, but subtle detail. Allowing anyone (artists, game designer, tester) to press a button and show live perf numbers is invaluable. "Why did that pass go from 1.4ms to 1.9ms at this angle?" So many things slip unnoticed with offline-only perf captures.
This is great. Two related thoughts! - Having detailed performance available at any time in any build at a single hotkey, structured to fit your application and displayed inline, is super valuable - even if you also use external profilers. microprofile at Roblox was like that. - It shouldn't matter in theory, but in practice I feel like there's correlation between units you use to think about performance and the resulting performance. We often talk about milliseconds per frame but a millisecond is an eternity! 30 microseconds is something you pay attention to, 0.03 milliseconds may slip by unnoticed.
4
35
2,646
New post! Building on the previous one, now we're using temporal information to improve the quality of MSAA super resolution. filmicworlds.com/blog/tempor…
11
65
248
15,998
New post: Upsampling via Multisampling. The goal is to use an MSAA target in an interesting way for doing a 4x area upsample. filmicworlds.com/blog/upsamp…
8
53
258
20,046
Inspired by conversations with @NOTimothyLottes, and this post in particular: x.com/NOTimothyLottes/status…

Replying to @MichalDrobot
What I'm referring to scales rendered 8xMSAA pixel to 2x2 output pixels, so given 2 samples/outPixel scaled [GREEN], it uses the neighbor samples [RED] to increase the gradient quality on edges (for spatial AA) to 4xAA effective [so cannot unrotate in PSL]
7
1,899
John Hable retweeted
Local lights are now live in HypeHype! 🎉 I developed a new stochastic lighting algorithm — from concept to prototype to production — in just 6 months. Super proud of this one! [Details in thread 🧵] Here's a walkthrough of a game I relit with local lights
12
59
410
33,402
John Hable retweeted
meshoptimizer 0.23 is out! Featuring vertex codec v1 (increased compression ratio, faster decompression), even faster decompression on Apple Silicon, improvements to meshlet builder with fewer disconnected clusters and more options for clustered raytracing and hierarchical clusterization, new algorithms for hierarchical clusterization, simplification quality improvements and more. Thanks to Valve for sponsoring most of the work on the core library in this release!
2
27
139
9,911
John Hable retweeted
20 Dec 2024
RenderDoc v1.36 is now available! This version brings support for debugging DXIL shaders, as well as adding raytracing capture support to Vulkan and D3D12. Full release notes: github.com/baldurk/renderdoc… Binary builds: renderdoc.org/builds
1
33
103
6,821
In case you want to know what I'll be doing for the next 10 or so hours...
Graphics Programming Conference 2024 presentation recordings have now been released: youtube.com/playlist?list=PL…
1
23
2,361
What does game dev optimization look like? When I was in college, one of my professors told the class: Do not optimize code because the compiler is smarter than you. He was wrong. As an example, here is the timeline of a frame from Uncharted 2 (my old gdc talk).
25
135
1,323
106,284
The next step was to software pipeline the code. The {} was a comment, where e6:1 means even instruction, 6 cycle latency, and runs from iteration 1 in the loop. This way we could run the loop with no stalls. On SPUs, this generally gave us a 2x improvement after vectorization.
1
5
79
8,765
It was a rare time where such hyper optimization netted notable wins. But game devs constantly optimize vectorize code wherever bottlenecks may be. If you think game devs don't optimize code that beats the compiler, then I don't really know what to tell you.
4
5
138
8,054