Re:Ray tracing Voxels made out of Glass
by bugfix-66 on Sunday October 23, 2022 @09:05PM
(#33311903)
The fix for the noncontiguous addition puzzle is to change
filled = to & mask
to filled = to | ^mask
In other words, to OR in 1-bits so the carry can travel across the irrelevant part of the register.Subtraction is similar:
https://bugfix-66.com/adbc40fa7c8c838d8d34bcd35525313dc91dea...
But for subtraction you want to AND in 0-bits so the borrow can travel.
BTW, on the GPU Morton is handy and convenient but not the absolute fastest. You can do simple tiling and get all the cache benefits in fewer instructions. It’s kind-of like one single Morton interleave step, say, for example, interleave the bottom 3 bits and then the top 7 bits. (But note you can’t blindly interleave any number of top bits anymore, it needs to be the exact number of bits you’re using, or a row-major indexing calculation using a multiply instead of bit shifting.)