Compressed Texture Support (webp, KTX) in Unity

I’ve processed the glTF models of my tileset with gltf-optimizer to apply Draco mesh compression and webp texture compression.

When I load this tileset on a Cesium JS client, everything loads as expected. However, when I load it in the Cesium Unity Samples project, no textures are applied to the models. I did not use version 0.3.0 of the Samples project due to a NullRef exception when loading this tileset from disk.

My understanding is that Cesium Native should handle loading compressed textures. What options do I have to investigate why Cesium Native is not loading these textures?

Yes you’re right, we should be handling both KTX2 and WebP compressed textures, so I’m not sure why that wouldn’t be working. Can you point us to a sample tileset that we can use to investigate the problem?

Here’s the tileset download:

I’m getting the same result using another webp compression tool, gltf-transform.

I’ll update this once I test with KTX2, though this tool doesn’t seem to be able to compress the textures on my models with that yet.

Same issue with KTX2 using etc1s compression, I didn’t apply Draco compression this time, here’s the tileset:

Cesium JS is able to load the models as expected but Cesium Unity Samples loads gray models without textures:

Thanks @dagrooms. Would you mind sending me a private message with a access token I can use to access this tileset and your permission to access it for debugging purposes?

Here’s a GitHub repo so we don’t have to mess with access privileges: GitHub - dagrooms52/3DTilesCompressed

Were you able to run the sample data I shared?

Yes, thank you for that! I just opened two PRs with fixes for the texture problems you saw:

This will be available in the next release, currently planned for early April. Or you can grab a build out of our CI system if you want to try it sooner.


I created a pull request. I think my PR is also related with this thread.

When the PR is reflected, if gltf using compressed textures (e.x KTX 2) then GPU memory (VRAM) usage is reduced.