The standard concept is the exact same as in the past, and now after determining X and Y collaborates from UV we utilize an easy for loop from active Z layer downwards to find out which tile to render. If there’s no tile, we’ll move deeper into the scene.
I believe a more effective option would be to keep a fixed-size bit selection per world column (one bit per voxel), and utilize some bit-twiddling to more straight discover the very first voxel present listed below the electronic camera layer. With the aid of the BSF, BSR, or LZCNT guideline (there needs to be a user friendly intrinsic in Rust for a minimum of among these), this can be finished with simply a couple of directions per 64 layers (presuming a 64-bit ISA).
More on memory design
For optimum region of referral and concurrency, the optimum memory design of the primary world information is most likely a flattened binary area separating tree (no extra indirections, simply an elegant indexing algorithm; there is a for this method, however I can’t remember what it is). Or, some hybrid in between that and your existing method.