If you're at Siggraph, and you're into Catmull-Clark, make sure to stop by on Tuesday. advances.realtimerendering.c…
New post: Adaptive Catmull-Clark Subdivision with Compute Tessellation. Using feature adaptive subdivision with clamped parallelogram compute tessellation, we can evaluate the mesh at the surface limit (with semisharp creases!). filmicworlds.com/blog/adapti…
New Post: Adaptive Compute Tessellation. Taking the tess pattern from the previous post and turning it into a WebGPU demo.
filmicworlds.com/blog/adapti…
Live demo is here (with MIT licensed source): filmicworlds.com/downloads/2…
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…
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.
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…
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 ...
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.
Really cool approach for low cost stochastic local lights. My one question though: How are the point light shadows rendered into octahedral space? @JarkkoPFC @SebAaltonen linkedin.com/pulse/local-lig…
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…
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…
Inspired by conversations with @NOTimothyLottes, and this post in particular: xitter.cf/NOTimothyLottes/status…
Replying to @NOTimothyLottes @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]
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
So SSA codebase is roughly 60m lines of COBOL. How long would it take to rebuild it? I'm not sure, but as a point of reference, UE5 is roughly 11m lines of code.
wired.com/story/doge-rebuild…
Source for 11m line estimate for UE5:
thomasmansencal.substack.com…
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!
John Hable retweeted
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
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…
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).
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.











