MΛX

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/

358 followers54 following62 posts

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 #pixelart #rendering

I'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:

Experimenting with cone tracing in our 2D pixel art game :) Here I am using cone tracing to trace the soft shadows. (no GI)

I am honored to see an article I wrote mentioned in this talk, really cool stuff! :)

Krzysztof Narkowicz@knarkowicz.bsky.social

An interesting idea to use surfels not only as a surface cache (PBGI), but also as a geo approx to trace against. The main use case is mobile, where triangle ray tracing isn’t widely supported in HW, and raymarching SDFs isn’t a great fit for bandwidth-limited devices. gdcvault.com/play/1035619...

During 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! :)

Did 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.

Been 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 :)

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 :)

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:

For 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! :)

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

MΛX reposted

In 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

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 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)

After 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 :)

I 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 :)

This 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 :)

For 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.

Something 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.

I've been using Slang these past few days for a new project I've started working on. Currently working on the rasterization pipeline, I have a cube so far :) Slang has been really nice so far; using the User Guide on their website as well as the vk_mini_samples repo. github.com/nvpro-sample...

I'm excited about the Khronos Group's Slang initiative! And I'm interested to see if I will run into any issues with Slang during the duration of this project :p

Re-posting some results I previously shared on Twitter :) These results are from a demo project I made for Radiance Cascades in 3D. It took quite some debugging & iterating to get here, but these results are very exciting. If all goes well I will be working on a production ready version very soon :D

MΛX reposted

Going into the final week of the first project of Year 2, I thought I should share what I've been working on. I've been making a PBR renderer for the first time, with the target platform being the PS5. Obviously, I am still lacking IBL so that's what I will be working on this week :)

You are up to date.