I've been validating the results of my Surfel Radiance Cascades, comparing it to ground-truth and using the white furnace test. I think I'm really close to GT now, attached are 2 images, one is GT, the other is SRC :)
During the past week I dove back into Radiance Cascades, this time Holographic Radiance Cascades. It was really fun to again dive into this and make my own implementation of it, running entirely on my CPU. This demo contains no explicit light sources, only emissive pixels! :)
We've used the voxel game-engine we build as a team of students to make a little diorama puzzle game :)
This has been an very fun experience, building from the ground up, working together with designers and artists!
Game: https://t.co/w0F3QfJ43o
Engine: https://t.co/ACGJuV0Eh8
A big optimization I worked on after my last post was making our voxelizer *lazy*.
So, it only updates parts of the scene that changed. This made a huge difference for our performance and allowed us to push for larger level sizes!
Below is a high-level drawing of how it works:
The engine supports both PC and PS5 through a platform-agnostic render graph I wrote.
It was a big gamble, I had written it as a prototype in 2 weeks, but it really paid off in the end. Saving us a ton of time and keeping our renderer clean :)
Code snippet showing the interface:
The past 8 weeks I've been working in a team of fellow students on a voxel game engine. I've been primarily working on the graphics, creating a cross-platform render graph for us, and working together with
@ScarakLynn on our cone-traced lighting, and various graphics features! :)
@ChopperLin89@thefranke That’s ray tracing single shot diffuse global illumination, I’d argue that’s not an unexpected time. You can temporally amortize by shooting 1/4 or 1/8 of the rays per frame. There’s probably also still room for optimization in the ray traversal algorithm I used.
I decided to open source my implementation of Surfel Radiance Cascades Diffuse Global Illumination, since I'm not longer actively working on it. Hopefully the code can serve as a guide to others who can push this idea further :)
https://t.co/kugNw7x5Cf
@bendzzArt It’s quite difficult to explain RC in a Twitter message hahahaha
There’s quite a few resources on the topic out there if you’re curious to learn more about it.
Including my own article https://t.co/EtkSMehci5 which focuses on the fundamentals in 2 dimensions :)
@bendzzArt Radiance Cascades in 3D usually is done by evaluating radiance only on visible surfaces. Because going full 3D grid is very memory intensive.
In this case I’m using Surfels as a way of placing those surface probes, and making them temporally stable.
@TheLordSauron__ In my case one Surfel could cover multiple blades of grass / leaves. The Surfels kind of act like spheres, they’re designed to gather low frequency light information. So they won’t capture the shadows of individual grass blades for example.
I wrote a blog post on my implementation of the Surfel maintenance pipeline from my Surfel Radiance Cascades project. Most of what I learned came from "SIGGRAPH 2021: Global Illumination Based on Surfels" a great presentation from EA SEED :)
https://t.co/4W73dxKwdy
@Ademola_4life Performance wise, since I have yet to implement Voxel GI myself, I'm not confident enough to comment on that. However, I might be implementing VCT at some point in the near future :)
@Ademola_4life If you're referring to Voxel Cone Tracing it can be combined with Surfels. The Surfels are essentially a way to discretize the surfaces in the scene, from which you can then cast rays, or cones. So, the two are not mutually exclusive.