Cesium in 2013 - Performance and Precision


A core part of our mission is for Cesium to perform well and render with precision.

So far, we’ve done a pretty good job with performance. We pay a lot of attention to the type of JavaScript we write, we push work onto the GPU and into web workers, and we use lots of rendering optimizations, including batching and culling.

Moving forward this year, there’s a few big things that will help with performance:

  • Changes to the Data-Driven Renderer will make Cesium faster without changing user apps.
  • With our increased focus on vector data, batching polygons, like we already do for polylines, billboards, and labels.
  • Profiling and tuning shaders for mobile GPUs.

Precision is one of the main things that separates a virtual globes engine from a general 3D engine. It is possible to build a simple globe with a general 3D engine or even a bare rendering API, but rendering artifacts due to precision start to creep in for all but the most limited views. In 2012, we did most of the precision work, like multi-frustum in the Data-Driven Renderer. Moving forward, we need to continue to be mindful of potential precision problems and patch up areas, mainly just sensors, that aren’t fixed yet.