MΛX
banner
m4xc.bsky.social
MΛX
@m4xc.bsky.social
Software engineer fascinated by hardware, electronics, & the niche. Studying graphics programming at BUAS 🤟 Intrigued by voxels, pixel art, & graphics.

https://m4xc.dev/
You find the minimum and maximum values for each color channel in a 4x4x4 block. And then for each voxel store 3 bits that tell you how to interpolate those two endpoints. This is lossy compression, so you’ll need to keep the original content around in case you want to make edits.
January 21, 2026 at 10:54 AM
I could do something similar on the GPU, per Lane find its ray octant, then use Wave intrinsics to check if all Lanes are in the same octant. If they are, have all go down the same templated code path. Otherwise, just have them all take the normal code path I already have to avoid divergence.
December 30, 2025 at 9:38 PM
I did solve the depth values! They are correct now :) However you can still see things through other objects sometimes in the video. It still seems to happen where the axes are 0 in world-space, I haven't been able to find out why.
December 30, 2025 at 7:19 PM
Oh I see, no I don't do that at the moment. I also personally haven't seen anyone else do it.
December 30, 2025 at 7:17 PM
Yes! I always enter the nearest bounding box first and push the other one onto the stack (if it was also a hit)
December 30, 2025 at 6:48 PM
At the time I wasn’t aware of FLIP for image comparisons, so I didn’t do a FLIP comparison back then :p
December 26, 2025 at 2:36 PM
Thank you! :)
Yes, we are fortunate to have access to PS5 development through our Uni.
July 3, 2025 at 6:45 PM
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:
July 2, 2025 at 7:02 PM
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.
Below is a code snippet showcasing the interface :)
July 2, 2025 at 7:02 PM
I'm assuming that by cluster you're referring to a voxel brick in this context :) (correct me if I'm wrong)
If each brick has its own transform. Couldn't that result in gaps between the bricks? Do you do anything to combat that, or is it not an issue?
June 4, 2025 at 1:44 PM
Awesome work, the demo looks amazing! :)
I'm curious what is the voxel size difference between LODs?
Does one brick in LOD1 cover 4x4x4 bricks in LOD0?
Or does it cover 2x2x2 bricks in LOD0?
June 3, 2025 at 8:09 PM
Hey, sorry for my late response, I’m happy you enjoyed reading my blog post :)
I don’t currently have an RSS feed, I always share the posts on socials instead.
But I might look into RSS sometime.
May 9, 2025 at 2:16 PM
Here's a video showcasing the demo we created using the engine, to showcase our engine is capable of being used to make actual games! :D
April 16, 2025 at 2:57 PM
It’s interesting to see the CWBVH performing worse here. If I remember correctly it usually outperforms the others right?
March 3, 2025 at 11:20 AM
With RC we store intervals for every probe (intervals are rays with a min and max time)
They are represented as HDR RGB radiance and a visibility term which is either 0 or 1.
Here’s the discord link :)
discord.gg/6sUYQjMj
Join the Radiance Cascades Discord Server!
Check out the Radiance Cascades community on Discord – hang out with 652 other members and enjoy free voice and text chat.
discord.gg
January 16, 2025 at 11:48 PM