Jason Deacutis - Portfolio

Icoplanet

Icoplanet - Icosphere Based Planetary Rendering

Experiment of subdividing an icosahedron (“Icosphere” when subdivided) on the CPU for adaptive level of detail, allowing an Earth or Moon sized sphere to have detail down to the meter level.

I mostly made this because I was toying with the retro wireframe aesthetic, its intentionally similar to terrain rendering before GPUs. For proper planetary rendering, a quadtree based solution is still probably ideal. Its currently CPU heavy and doesn’t take advantage of the GPU’s ability to displace hundreds of thousands of vertices. That being said, its still faster than a fixed detail high poly mesh, and naive GPU tesselation. I could only get ~6 levels of subdivision with GPU tesselation, which isn’t nearly enough to get to meter-level detail, this can easily get to 18 levels of subdivision. The recursive nature makes it addictingly simple, but its difficult to keep memory access patterns linear. I believe there to be many CPU optimizations that could still be performed.

Adaptive subdivision and culling based on screenspace triangle size.
During each iteration, the leaves of the tree are evaluated to determine if they should be subdivided.
Frustum & backface culling are also performed.
Perlin noise based height displacement, smooth LOD transition.
Used as a traditional triangle mesh