Walkthrough of rendering a frame in Cesium

Folks,

If you are interested in a deeper understanding of how the Cesium renderer works, we wrote a walkthrough of rendering a frame:

http://cesiumjs.org/2015/05/14/Graphics-Tech-in-Cesium/

Patrick

That’s great thanks Patrick, very informative.

Do you think there is any scope for threading the renderer stages? At the moment my iOS port is spending approximately equal amounts of time in updatePrimitives() and executeCommands(), and this would be a great optimisation.

Regards,

Ryan

Yes, scene rendering can be improved with threading.

  • Although not part of the core Scene.render, when we are able to create WebGL resources in web workers, that will offload more of the terrain/imagery/model loading pipeline.
  • When the web has an API like Vulkan, we’ll be able to create draw commands on different threads and then use the main thread to dispatch them. This will require a lighter threading model than what web workers provide today, but I am hopeful that we will see something like this perhaps driven by Vulkan.
    In your work on iOS, you could experiment with these ideas today. If you do, please let us know the results.

Patrick

That’s great, thanks Patrick. I’m looking at moving some of the texture and vertex array creation into the background. Longer term I’d like to implement a renderer based on the Metal API, but at the moment I’ll stick with OpenGL and focus on library features.

Ryan

Cool. The Cesium Renderer should map well to Metal. The shading language will be most of the work.

Patrick