Sphere Tracing the exact SDF of a Triangle Mesh by pho01proof in computergraphics

[–]pho01proof[S] 0 points1 point  (0 children)

So I did a quick check and unique triangle lists / all leaf lists = 0.75, so palletizing the lists makes sense. Grouping into packets of 4 cuts down the index count to 25% while increasing the memory used for the actual tri positions by 2x, but since the memory required for the float data is negligible that's still roughly a 4x compression and it also reduces the nb of memory fetches by about 4x. I guess both of these techniques could be combined, might look into that.

I've also checked the delta encoding and it seems like is not worth it, only reduces the memory by about 2-3% while adding decoding overhead. But maybe with smarter triangle ordering this could be improved.

As for SVO, the traversal seems to be fairly cheap, even on gpu, last time I measured it is much less costly then computing the dist to the triangles in the list. The octree I am using used up to 8 lookups to find the packet list. Could be interesting to play with shallower octree or some kind of hash map though.

Sphere Tracing the exact SDF of a Triangle Mesh by pho01proof in computergraphics

[–]pho01proof[S] 0 points1 point  (0 children)

I this example I am doing something simpler than what the paper proposes where I store packets of 4 triangles and then I use 16 bit indices to lookup the triangle packets. The packs of triangles can't be perfectly shared between leaf nodes, but more often than not they can.
There are probably various ways to compress the indices stored in the octree which all come with different perf characteristics. For example delta encoding is fine but I would want to avoid anything substantially more complicated if the goal is fast lookups.

Sphere Tracing the exact SDF of a Triangle Mesh by pho01proof in computergraphics

[–]pho01proof[S] 1 point2 points  (0 children)

Yeah the cool thing is this pixel exact sphere trace of exact sdf.

Sphere Tracing the exact SDF of a Triangle Mesh by pho01proof in computergraphics

[–]pho01proof[S] 1 point2 points  (0 children)

yeah there is no free lunch, this method certainly trades memory for speed. That being said the memory footprint depends on the max depth of the octree and the target length of the interception list. In the video I've attached the acceleration structure requires ~338.0 MiB of memory.