How does SLABSPRI render voxels? ( 4DOF:(x,y,z,yaw_angle) - horizontal and vertical lines?
SLABSPRI renders with vertical lines. I don't have time to get into the details - please save me time and study the code.
1) I tried uncommenting the C-version of drawslab(...) function, but the editor didn't work after that. Why?
It's probably out of date.
What is a "slab"?
"Slab" is my own made-up definition. I visualize it as a vertical column of contiguous surface voxels.
How does SLAB6 render voxels? (6D: (x,y,z,yaw,pitch,roll) - diagonal lines?
No, SLAB6 is not an extension of the SLABSPRI algorithm. SLAB6 has many rendering modes, but all of them render 1 surface voxel at a time. The fastest mode uses bounding boxes - which is not nearly as fast as SLABSPRI (which renders whole slabs at a time), but still quite reasonable if optimized.
How does SLABSPRI and SLAB6 stores voxel data and manages the memory?
SLABSPRI uses an uncompressed array (voxel) internally for editing, and a compressed array (KVX format) for rendering. Any modification to the geometry requires a re-compression of the object. Color modifications do not require a re-compile, just a way to find its pointer in the compressed object. Because SLABSPRI uses 8 bits for all voxels, I had to limit its maximum resolution to 128x128x200 so it would work on most machines at the time.
SLAB6 uses an uncompressed bit array (1 bit per every voxel) for geometry (solid vs. air), and a compressed array to store surface voxel colors (16 bits per surface voxel: 8 for color, 8 for z; additional headers per x/y column). The editing code is a bit more complex since it has to deal with the compressed data in some way or another. The benefit of this mess is higher working resolution. SLAB6 supports 256x256x255.