The main part that isn’t handling non uniform scaling is the box intersection. I am assuming that the box extents are 0 to 1, but you could use the actual box extents. It just gets a bit tricker since then you have to pick which axis to normalize along, so you may need a few extra lines of code to normalize the steps across the largest axis or something like that. ie largestside = max(extents.x, max(extents.y, extents.z));
also you would need to invert the other behavior I mentioned about taking a partial final step. Instead, you’d take a partial first step before the main tracing loop but it should work. Might even be a bit faster. I wanted to try it too but ended up focusing on other things. Curious if it ends up being more efficient.
I can take a closer look at non uniform scale at some point soon but for now I am trying stuff like baking IBL ambience and experimenting with 4d formats.