Rendering pipeline of cesium

Hi,

I am new to cesium and I am trying to understand how it renders the high resolution imagery on the globe. I understand that it renders images as tiles but I wonder how it places those tiles on the globe. Is it that tessellated globe has a very low res imagery which then covered by the incoming high res imagery and terrain dataset?

thanks in advance.

- Jay

Hi Jay,

Cesium uses a quadtree to render the globe. The root node covers the entire globe at a very low resolution, and each leaf node covers a small part of the globe at a very high resolution. As the viewer moves, we request different nodes based on the view parameters, and render with the best nodes we have in the meantime. Terrain (geometry) and imagery (texture) are decoupled into separate trees, commonly from different servers. We determine what imagery overlaps a terrain tile, and do the blending in a fragment shader.

This is, of course, all oversimplified. Kevin can answer more specific questions. You can also checkout our COM.Geo course, book, and upcoming SIGGRAPH course (slides will be posted after the conference in July).

Regards,

Patrick

Thanks. This helps but to be more specific: I believe that cesium uses cube tessellation for the low res globe rendering. What I wanted to know is how the terrain tile gets rendered on top of the low resolution globe rendering.

Thanks,

Hi Jay,

I don’t think we use cube-map tessellation. I believe tiles are aligned with constant lines of latitude and longitude.

Terrain tiles are not rendered on top of the low res globe. Instead, the entire globe is made up of terrain tiles even if the terrain is flat, like it currently is on the water. We actually treat a plain ellipsoidal globe as a special case of terrain. The tiles are, of course, not all at the same same resolution; the ones closer to the viewer are more detailed.

Can you tell us more about your project? Perhaps we can better answer your question.

Regards,

Patrick

Thanks Patrick. Currently I am evaluating cesium and in the process trying to understand how it works. If you think this mailing list is not the best venue, then I will stop asking questions. By the way I have the book -:slight_smile: its a great book.

Based on your reply, I am assuming that cesium is using chunked LOD perhaps. I should probably look into the cesium code. My other question is that geometry tile could overlap with multiple imagery tiles but I don't quite understand how blending helps with that. Some insight into that could be useful.

Thanks a bunch.

Hi Jay,

This mailing list is definitely the best venue for asking questions. Actually, we prefer it over everything else since the archives benefit everyone.

You are right that the terrain is based on Chunked LOD. When several imagery tiles overlap a terrain tile, an old-school approach is to render the terrain tile several times, once per imagery tile. Instead, Cesium renders the tile once and blends the imagery tiles in the fragment shader (bottom to top layers).

Regards,

Patrick