We need to support target platforms with no dedicated GPU and only Integrated graphics (Intel 5xx/6xx/…)
We are hitting some performances bottlenecks when viewing multiple (a few dozen) large polygons/ellipsoids/polylines as well as Entities with billboards and labels. Entities are stored in CustomDataSource and can be moved by an external source (through entity.position).
Currently, the scene FPS can go under 20 when static, and under 10 when entity billboards and some polylines are being moved.
I have searched and read about increasing performances in Cesium on the Forum and on Google groups and tried to apply advices I found but currently find myself out of ideas.
Here are some details on our currently applied configuration:
- Skybox, sun, moon, ambientOcclusion, dynamicAtmosphereLighting, terrain shadows, shadows, allowTextureFilterAnisotropic, FXAA and bloom are disabled
- webgl configuration : webgl: { alpha: false, stencil: true, premultipliedAlpha: false, preserveDrawingBuffer: false, failIfMajorPerformanceCaveat: false, antialias: true, depth: false, powerPreference: “high-performance” }
- Elevation is a basic default Ellipsoid WSG84
- Use ArcType.NONE on primitives when possible
- Chrome seems to get better performaces than Firefox
- We tried adjusting the viewer.resolutionScale dynamically (between 0.5 and 1) based on the FPS value during high load, which helps slightly at the cost of visual quality.
- The viewer requestRenderMode is set to false. I am assuming that rendering even more infrequently is not something needed right now.
On a similar target platform, viewing this sandcastle example fullscreen Cesium Sandcastle with the Cesium Inspector ( viewer.extend(Cesium.viewerCesiumInspectorMixin) ) I get 15-20 FPS.
Any advice on how to get more performances on a target with Integrated graphics would be welcome. I am also looking for CesiumJS benchmarks in order to have a basis for comparison.