MΛX @m4xc.bsky.social · 01/10/2026If 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 :) www.youtube.com/@pyritegames 010
MΛX @m4xc.bsky.social · 01/10/2026I'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 #pixelart #rendering 1164
MΛX @m4xc.bsky.social · 12/09/2026I've been working on improving the cone tracing, I improved 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: 190
MΛX @m4xc.bsky.social · 09/09/2026Experimenting with cone tracing in our 2D pixel art game :) Here I am using cone tracing to trace the soft shadows. (no GI) 0192
MΛX @m4xc.bsky.social · 12/04/2026I am honored to see an article I wrote mentioned in this talk, really cool stuff! :) 050
MΛX @m4xc.bsky.social · 11/04/2026I am not 100% sure, but I think it is aliasing. It can be hidden with a tiny blur kernel, that seems to be the most common way to get around it. However, I am interested to find out if we can actually fix the root of the problem instead. 010
MΛX @m4xc.bsky.social · 10/04/2026During the past week I decided to dive back into Radiance Cascades again, this time Holographic Radiance Cascades (HRC). 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! :) 1231
MΛX @m4xc.bsky.social · 21/01/2026You 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. 010
MΛX @m4xc.bsky.social · 16/01/2026Did some experimentation with 4x4x4 voxel block compression today. I'm using a 64 tree with block compression applied at the leaf nodes. 3 interpolation bits per voxel. You can definitely see some compression artifacts. Both trees in this comparison store 8 bit RGB colors. 150
MΛX @m4xc.bsky.social · 30/12/2025I 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. 010
MΛX @m4xc.bsky.social · 30/12/2025I 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. 040
MΛX @m4xc.bsky.social · 30/12/2025Oh I see, no I don't do that at the moment. I also personally haven't seen anyone else do it. 120
MΛX @m4xc.bsky.social · 30/12/2025Yes! I always enter the nearest bounding box first and push the other one onto the stack (if it was also a hit) 120
MΛX @m4xc.bsky.social · 30/12/2025Been working on voxel ray-tracing again lately, this time using a BVH2 TLAS and SVT64 (64tree) BLAS(s). The heat gradient in the video shows the step count from 0 to 128. This scene contains 256 voxel dragons, each model is 256^3 voxels :) 2223
MΛX @m4xc.bsky.social · 26/12/2025At the time I wasn’t aware of FLIP for image comparisons, so I didn’t do a FLIP comparison back then :p 020
MΛX @m4xc.bsky.social · 03/07/2025Thank you! :) Yes, we are fortunate to have access to PS5 development through our Uni. 010
MΛX @m4xc.bsky.social · 02/07/2025A 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: 030
MΛX @m4xc.bsky.social · 02/07/2025The 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 :) 250
MΛX @m4xc.bsky.social · 02/07/2025We've used the #voxel game-engine we build as a team of students to make a little diorama puzzle game :) This has been an incredibly fun experience, building this from the ground up, working together with designers and artists! Engine: youtu.be/uvLZn1X_R0Q Game: buas.itch.io/zenterayoutu.beKudzu Engine - ShowcaseYouTube video by Sven 1216
MΛX @m4xc.bsky.social · 04/06/2025I'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? 110
Reposted by MΛXBrian Karis @briankaris.bsky.social · 03/06/2025Excited to finally show off Nanite Foliage www.youtube.com/watch?v=FJtF...youtube.comThe Witcher 4 - UE 5.6 Tech Demo | State of Unreal 2025YouTube video by IGN 1420845
MΛX @m4xc.bsky.social · 03/06/2025Awesome 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? 130
MΛX @m4xc.bsky.social · 09/05/2025Hey, 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. 010
MΛX @m4xc.bsky.social · 16/04/2025Here'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 090
MΛX @m4xc.bsky.social · 16/04/2025For 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 @scarak.bsky.social on our cone-traced lighting, and various graphics features! :) 1201
MΛX @m4xc.bsky.social · 12/03/2025I 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 :) github.com/mxcop/src-dgigithub.comGitHub - mxcop/src-dgi: Surfel Radiance Cascades Diffuse Global IlluminationSurfel Radiance Cascades Diffuse Global Illumination - mxcop/src-dgi 011519
MΛX @m4xc.bsky.social · 03/03/2025It’s interesting to see the CWBVH performing worse here. If I remember correctly it usually outperforms the others right? 100
Reposted by MΛXJendrik Illner @jendrikillner.bsky.social · 27/01/2025Graphics Programming weekly - Issue 376 - January 26th, 2025 www.jendrikillner.com/post/graphic... 07923
MΛX @m4xc.bsky.social · 25/01/2025I 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 :) m4xc.dev/blog/surfel-...m4xc.devMΛX - Surfel Maintenance for Global IlluminationA comprehensive explanation of my implementation of Surfel probe maintenance. 211631
Reposted by MΛXJacco Bikker 🎦 @jbikker.bsky.social · 25/01/2025In case you're looking for the perfect university for 2025/2026: Consider the game program of Breda University. :) Teaching team straight out of gamedev, C++, strong focus on graphics, and dedicated tracks for programming, art and design. Tuition fee this year is 2530 for EU citizens. games.buas.nl 3388
Reposted by MΛXChristoph Peters @momentsingraphics.bsky.social · 19/01/2025My new blog post explains spectral radiometric quantities, photometry and basics of spectral rendering. This is part 2/2 in a series on radiometry. Learn what it means when a light bulb has 800 lumen and how your renderer can account for that. momentsingraphics.de/Radiometry2P... 14510
MΛX @m4xc.bsky.social · 16/01/2025With 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/6sUYQjMjdiscord.ggJoin 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. 010
MΛX @m4xc.bsky.social · 16/01/2025That’s correct :) GT stands for Ground Truth, it’s the brute force correct result which I want to achieve. 020
MΛX @m4xc.bsky.social · 15/01/2025Now I'm working on integrating a multi-level hash grid for the Surfels based on NVIDIA's SHARC and @h3r2tic.bsky.social's fork of kajiya. Here's a sneak peak of the heatmap debug view :) 090
MΛX @m4xc.bsky.social · 15/01/2025I'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 :) 3301
MΛX @m4xc.bsky.social · 08/01/2025I've been improving the Surfel Radiance Cascades since my last post, ironing out bugs one by one. It's starting to get difficult to see the difference between my ground truth renderer and the SRC one :) (in this rather low frequency scene, more high frequency tests coming soon) 1130
MΛX @m4xc.bsky.social · 03/01/2025After many weeks of effort I finally have radiance on screen now! I’ve still got issues mostly related to my Surfel Acceleration Structure, however I’d say the results are already looking quite promising. It has kind of a hand painted look to it now :) 0394
MΛX @m4xc.bsky.social · 02/01/2025I think that this is indeed the best next step, the acceleration structure I have right now is starting to become the bottleneck. Thanks for the tip! It’s time for an upgrade :) 020
MΛX @m4xc.bsky.social · 27/12/2024I Finally got around to adding ImGui to my project, it was about time after logging info for a while :p I'm now working on splitting the Surfels into Cascades, after which I can start implementing the radiance gathering, merging, and finally applying the diffuse irradiance to the screen :) 1140
MΛX @m4xc.bsky.social · 23/12/2024Thanks! We have a discord community where you can ask questions in case you get stuck :) Warning: once you go RC there’s no going back :p (jk) discord.gg/DezF3NF3discord.ggJoin the Radiance Cascades Discord Server!Check out the Radiance Cascades community on Discord – hang out with 574 other members and enjoy free voice and text chat. 110
MΛX @m4xc.bsky.social · 19/12/2024Awesome! :) Is the attached image 1 frame of accumulation? (single-shot) If not I’m curious, how many frames does it take to converge to that level, on average? 110
MΛX @m4xc.bsky.social · 14/12/2024Something I'm considering for the acceleration structure is an extra layer of indirection (Surfel Clusters), which would allow me to store an offset & count in each cell. Instead of storing the index of each Surfel in the cell itself. 170
MΛX @m4xc.bsky.social · 14/12/2024For the acceleration structure I'm using a simple uniform grid at the moment, which can store a fixed number of Surfels per cell. This is quite annoying, because closer to the camera Surfels are physically smaller, so cells need a higher capacity and cells are using a lot of memory. 140
MΛX @m4xc.bsky.social · 14/12/2024This week I've been implementing Surfels for the first time, the most challenging part so far has been the spawning algorithm. Stopping Surfels from spawning on top of each other. The spatial look-up acceleration structure is also a part which I still need to iterate on :) 1280
MΛX @m4xc.bsky.social · 04/12/2024I'm using a method we call SPWI (Screen Probes World Intervals) which means probes are distributed across the screen. But, they are actually placed in the world, and their intervals (rays) are traced in world space. So, in this demo lighting is also gathered outside of the screen-space. 120
MΛX @m4xc.bsky.social · 04/12/2024GPC is the first graphics conference I ever attended, and I had a great time, props to the organizers! As a BUas student I presented my work on Radiance Cascades during the student showcase, which was very fun & exciting, I did my best to briefly explain the essence of RC :) youtu.be/MONs5wMy6Rw?...youtu.beStudent ShowcaseYouTube video by Graphics Programming Conference 1295