The cost of performance is always quality, so expect
you can add an FPS counter on top of cesium to measure improvements :
viewer.scene.debugShowFramesPerSecond =true;
I'm also struggling with improving the framerate, since our machines does not have high end GPUs. From my experience these are some parameters
you can tweak to improve framerate, however it will reduce the quality of the rendering.
Disabling fxaa boosted my fps from 20 to 30 on a 1920x1080 monitor with my nvidia nvs gpu
viewer.scene.fxaa = false; //major framerate improvement
When constructing your viewer, you can pass webgl context parameters that might slightly improve framerates, I didn't noticed major improvement however
viewer =new Cesium.Viewer('container',{
...
contextOptions: {
webgl : {
alpha : false,
depth : true,
stencil : false,
antialias : false, // This one is the only I've modified to false from true, the rest are at default values
premultipliedAlpha : true,
preserveDrawingBuffer : false,
failIfMajorPerformanceCaveat : true
},
allowTextureFilterAnisotropic : false // this should improve a little bit
}
reference :
Scene
If you want only 3D mode, you can pass 'scene3DOnly' to the viewer's constructor to save memory.
You can play with '
resolutionScale' property on the Viewer, but it will make things look pixelated on lower values.
If you want, you can get rid of the sun, stars and atmosphere - I believe it might improve slightly the framerate.
In windows I get higher FPS than on Ubuntu. This is probably due to drivers and implementation of webgl in each platform (windows's chrome uses ANGLE).
If you find some ways to improve it even more, I'll be glad to know. These are just some global settings, without going into how you manage entities/primitives - which
might impact on perfromance.