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 :)
I've been busy working on the lighting for our factory survival game! I added a lot of pre/post processing: outlines, highlights, sparkles, etc. I've also been working on an implementation of Holographic Radiance Cascades for indirect lighting :)
#gamedev#indiedev#indiegame
If you'd like to follow our progress in an audio visual format, feel free to check out our youtube channel. This is where we post devlogs every now and then :)
https://t.co/PwCZQrCsSx
@LeLocTai I'm still planning to use (H)RC for Indirect Lighting, but for Direct Lighting I think it's nice to have something more "controllable". For example it's difficult to make spot lights using pure RC.
I've been improving the cone traced shadow quality using anisotropic occlusion. The idea is to store occlusion values for each of the four cardinal directions (-x, +x, -y, +y) in the 2D case. We interpolate those based on the cone direction. Here's a before and after image:
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.