INTRODUCTION TO SPHERICAL HARMONICS FOR GRAPHICS PROGRAMMERS
finally done.
gpfault.net/posts/sph.html
Posts by Vladimir Komarov
It's quite complex overall and approach for procedural volumes a bit hacky but at least it's controllable from material user shaders for them, so you can tweak it until you like it
collision from analytic volume and calc lighting here. Also I can use analytic volumes with priorities stack, in this case they cut space from additive volumes. For procedural I just use some random collision point to compare with other volumes including other procedural volumes
Thank you! Clouds+mist and volume in sphere are procedural volumes and I use ray marching for them. Also there is analytic volume on this scene. For overlapping I render heterogeneous and part of analytic volumes as additive, i.e use nearest collision in delta tracking and ...
Playing with procedural volumes in my renderer. It's difficult to combine tracking/analytical/procedural volumes but since there is full control over procedural volumes from per-material shader, something can be done. Shaders from @XorDev
fragcoord.xyz
www.youtube.com/watch?v=xfzz...
Adobe just released an Apache-2.0 licensed reference implementation of the OpenPBR Surface standard, extracted from their in-house Eclair renderer.
Neat trick: the reference implementation cross-compiles for C++, GLSL, Cuda, Metal, and Slang!
github.com/adobe/openpb...
Thank you!
In this demo, in addition to shadows from the procedural volume, I also add lighting to the analytical volume when calculating the light from the spot light. @XorDev shader fragcoord.xyz/s/fxz51u1k is from his new FragCoord tool
I'm continuing to experiment with fully procedural volumetrics. Added interaction with analytical volumes. Because of the difficulty in combining these two different volumes, I had to use dithering to create transparency. www.youtube.com/watch?v=h0b1...
Thanks!
Awesome shaders from @XorDev www.shadertoy.com/view/WXV3zt and www.shadertoy.com/view/3XtXzX
Сreated the first prototype of a fully procedural volumetric that can run any custom shader (not just specifying density and phase function) in my path tracer. Problem of intersecting volumes is more difficult to solve here, I'll think about it some more.
www.youtube.com/watch?v=IqGi...
For some time now, I've been using the approach from research.nvidia.com/publication/... with mip chain + restir presampling. Previously I used the classic CDF with presampling, but mip chain is more convenient and doesn't have any drawbacks for me.
Shaders used shadertoy.com/view/3fKSzc
and shadertoy.com/view/WcKXDV
Added support for custom environment light shaders/materials in my path tracer and now I can use @XorDev
shadertoy magic as a light source. CDF mip chain for light sampling is rebuilt every frame.
www.youtube.com/watch?v=p_1T...
The recap of my third year of development on Ombre is finally available:
https://www.froyok.fr/blog/2025-11-ombre-dev-blog-3/
Marcin Zalewski informed me that his blog post on real-time hair rendering using ray tracing is now available:
mmzala.github.io/blog/hair-ge...
This is nice work, in which he compares NVidia's hardware accelerated hair to several alternatives, including Reshetov's Phantom Ray Hair Intersector.
I'm finally writing up how Nanite Tessellation works. The first few blogs posts are up. More will be coming.
graphicrants.blogspot.com/2026/02/nani...
I just released my video about the engine (and game) I've been working on.
The engine is based on dynamic SDFs, and the video describes how it works and what it makes possible.
Link in the reply!
This is my first YouTube video and it took forever - please repost!
Ever seen one of these, and wondered *why* they work? 🧵
This is a so-called Bitonic sorting network, and the illustrations show the two common ways to implement them. From an implementation point of view the two methods are effectively the same, so which one you pick just comes down to preference.
Our #SIGGRAPHAsia 2025 paper "Sample Space Partitioning and Spatiotemporal Resampling for Specular Manifold Sampling" improves #realtime #caustics rendering.
Project Page: graphics.cs.utah.edu/research/pro...
@daqilin.bsky.social @tizian.bsky.social
Another SIGGRAPH Asia gem:
research.nvidia.com/labs/rtr/pub...
"Sample Space Partitioning and Spatiotemporal Resampling for Specular Manifold Sampling" by Hong et al., which combines sample space partitioning with ReSTIR to efficiently handle caustics.
The z-buffer and depth testing (aka z-testing) have been the dominant way of hidden surface elimination for over 50 years, introduced but not implemented in W. Straßer's PhD thesis in 1974, and actually implemented in Ed Catmull's PhD thesis in the same year. 1/4
I push to GPU array of instances info including double3 pos. Every frame I fill bvh instances with float3 (camera relative) from global double3 pos buffer in compute shader and rebuild tlas relative to camera. I do it for all tlas bvhs. Also I do some work on CPU for other structures e.g. light tree
Thank you! I thought about "frame selected" many times while recording the video😀
I finally added double support for positions in my engine and I can now draw objects at enormous distances from each other. This only cost ~15% scene graph update perf on CPU and it's almost free for GPU since everything is drawn relative to camera using float
www.youtube.com/live/eYZ6wS9...
Even if I'm not working directly on rendering clouds at the moment, I still somehow take screenshots of them as I work😀
I had previously used triangle meshes to render giant planetary atmospheres but after many unsuccessful attempts to fix all the artifacts, especially when intersecting atmosphere geometry, I decided to add support for spheres to my renderer. It works much better
Thank you! I don't have an end goal yet but there is a bunch of functionality I want to implement