Optimize Google 3D Photorealistic tile set for Quest3 / Mobile

I have my unreal engine 5.4.4 project set up for VR Quest3 using Cesium and Google 3d photorealistic tile set. Functionally all working well but GPU bound. I’ve played with SSE and other cesium parameters but still need to go further to maintain FPS 90 and bring GPU util down. Currently using none in the tile set materials which I assume defaults to the default base cesium material lit. For mobile performance I probably need shading model unlit and noticed you have a cesium mobile optimized material in the cesium material folder along side the base and other materials. I tried using that in the base material of the tile set but the landscape just goes very dark . I’m using the cesium sun sky with mobile enabled which brings in a skydome actor too. Any advice on how I optimize material for mobile / quest3 either through building a new material or altering yours would be much appreciated. Thanks

Hi @yazzap, welcome to the community!

The default material is indeed fairly heavy, because the set of possibilities is quite large for glTF, and Unreal does not give us a way to modify and compile shaders at runtime based on the content of a glTF. So creating a cut-down material for your application could be worthwhile.

I’m not sure what you’re referring to with a “cesium mobile optimized material” though. I’m not aware of such a thing included with the plugin.

If you want to create your own material, the best place to start is with this tutorial:

That will help you under how Cesium for Unreal’s material system works. Essentially, I would suggest approaching it roughly like this:

  1. Make a copy of MI_CesiumThreeOverlaysAndClipping, which is the default material used for non-water, non-translucent 3D Tiles.
  2. Edit the material instance and remove all the layers you don’t need. For example, if you’re not using cartographic polygons to clip the tileset, remove the Clipping layer. Remove the three Overlay layers if you’re not using them. Etc.
  3. If the above doesn’t give enough of a performance improvement, the next step is to edit the ML_CesiumGltf base layer. Make a copy of that material layer and select the copy in your new material instance. Now start editing the material layer to remove parts you don’t need. For example

Thanks for this and yes I had already started to strip the layers out and that’s given me a stable 90 FPS. Also changed the material to emissive instead of defaul lit. Thanks :+1: