PalantirPalantirExplainer
Frontend Engineering at Palantir: Polar Scaled Tiles in Zodiac
Summary
Zodiac, Palantir’s custom 3D globe library built on Three.js, encountered severe performance degradation near the Arctic because latitude/longitude tiles converge into tiny slivers and create excessive geometry. Standard equal-angular tiling was replaced internally with polar-scaled tiles whose widths expand toward the poles so their surface areas remain closer to equatorial tiles. The design uses spherical surface-area calculations, power-of-two merge spans, and dynamic quadtree expansion; client-side texture compositing handles standard geodetic or Web Mercator sources, while heightmaps are combined and resampled for wider tiles. The change reduced polar geometry, draw calls, and textures by over 90% and made frame time more consistent, though texture loading remains the next bottleneck and native polar tiles would remove stitching overhead.
Context
Zodiac’s original equal-angular tiling performed acceptably at the equator and mid-latitudes but created excessive geometries and triangles near the poles, where longitude lines converge. Arctic rendering could tank frame rates on high-end machines and make the globe unusable on lighter devices.
Approach / What changed
Zodiac introduced polar-scaled tiles that merge standard tiles according to spherical surface area, using power-of-two spans. The implementation supports latitude-dependent quadtree child counts, client-side stitching of geodetic and Web Mercator textures, heightmap resampling, and fixed-height blending beyond Web Mercator’s coverage.
Takeaways
Polar-scaled tiles reduce polar geometry, draw calls, and textures by over 90%, making frame time more consistent across the globe.
Tile spans are selected as powers of two from the ratio between equatorial maximum tile area and the area of a tile at a given latitude.
Client-side stitching avoids requiring tile-server changes, but a zoom-level 5 polar tile may fetch 16 source tiles before it can display.
Source and freshness
- Source
- blog.palantir.com
- Published
- Added to Yomu
- Last updated
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.