T-Junctions
Any time your meshing process results in the corner of a triangle resting on the edge of another triangle, you get a T-Junction.
While this gap between the corner and the edge is infinitely small mathematically, it absolutely isn't in practice, due to floating-point computation and rounding.
This always happens, even if you've managed eliminate all floating-point errors.
There are four ways to work around this issue:
- Expand the faces ever so slightly outwards.
- Fill the pixel-wide gaps in a post-process shader.
- Don't create geometry where vertices can lie on edges.
- Directly raytrace your voxel volume.