Was busy with other work recently, so progressed slowed down quite a bit.
However, there is progress. Introduced light probe volumes that I worked on previously. It turned out to be relatively painless process, porting code from WebGL and JS over to WebGPU so far.
The process was made easier by the fact that a lot of my performance-critical code is written using very simple pure functions, which are incredibly easy to port over to shaders.
I re-visited my path tracer along the way, fixing certain inaccuracies and improving the shading model. Here is Sponza with light probes:
Here it is without:
And here are just the probe contributions:
You can see a lot of color bleeding on columns and hanging banners, overall the image is a lot warmer.
One very important, and I think cool, thing here is that all of the probe rendering is done incrementally in real-time. So if you chance the lighting - probes will update over time. There is no “baking” as such, you load a scene and it progressively gets updated each frame with a few more rays per probe.
There are a bunch of technical issues to fix still though, as there is light bleeding all over the place. I haven’t ported deringing code for probes yet either. Once those problems are addressed - I believe this will be an awesome turn-key solution for pretty much every use case.
Here are a few more comparissons:
For testing purposes I’m using an 8x8x8 grid of probes for each scene, but again, it’s a tetrahedral mesh, so in real-world scenarios probes will likely be sparsely placed, with more probes near surfaces and fewer in empty space.











