Tileset's highest LOD renders incorrectly on iPhone 15 and below

Heya Community :heart_hands:,

I’m currently porting an application from Cesium for Unity to CesiumJS, mainly to avoid the currently problematic memory behavior of Unity WebGL builds.

So far, the results have been rather encouraging: I’m seeing roughly a 3× reduction in browser-reported memory usage (on Desktop), and, more importantly, the infinite memory growth seems to be gone. Yey! :tada:

So far, so good.


However, I’ve run into a rather peculiar issue on iPhone 15 and older devices. The iOS version itself doesn’t seem to matter. On these devices, the highest-quality LOD of certain 3D Tiles does not render correctly.

See: Youtube Video of the Issue

From my testing, it looks like the mesh itself is being loaded correctly, but the texture required to render it is not being applied, causing the affected geometry to appear black (if there is tilesets below the incorrectly rendering tileset, it still gets occluded by the black tiles).

Interestingly, this does not occur on:

  • Windows
  • macOS
  • Android
  • iPhone 16 and newer

Even more interestingly, the issue also does not occur with the surrounding Google Maps 3D Tileset on the same devices.

The affected Tileset uses KTX2 and Draco compression.


At this point, I’m a little stumped and would greatly appreciate any pointers on where I could start debugging this. :eyes:

One additional limitation: I don’t have access to a Mac for development, so I unfortunately can’t inspect/emulate iOS devices.

Any ideas or suggestions would be greatly appreciated!

When further researching my problem I came across this thread from last year:

It turns out KTX2 is in fact the issue. When using ion to upload a model and disabling KTX2 Compression the tiles load as they should.

It’s sad that this is how it needs to be, but I guess there is no other workaround as of today when Apple rejects to roll out fixes for their devices older than 3 years… (but what do I know, perhaps its a unfixable hardware flaw).

Anyways. I will mark this as resolved.