RuntimeError: Fragment shader failed to compile. Compile log: ERROR: 0:111

Dear All,

because I am new to this Forum, let me first thank you for providing such an amazing library!

Now for the Error:
While creating a CesiumJS based web application with municipal data, I stumble across a runtime error if I change a part of the loaded data (3DTilesets created from CityGML with FME) from LoD2 to LoD3 (including textures).

This is the error message:
RuntimeError: Fragment shader failed to compile. Compile log: ERROR: 0:111: ‘undefined’ : undeclared identifier
ERROR: 0:111: ‘texture2D’ : no matching overloaded function found
ERROR: 0:111: ‘tile_diffuse_final’ : no matching overloaded function found
ERROR: 0:111: ‘SRGBtoLINEAR4’ : no matching overloaded function found
ERROR: 0:111: ‘=’ : dimension mismatch
ERROR: 0:111: ‘=’ : cannot convert from ‘const mediump float’ to ‘highp 4-component vector of float’

Error

After inspecting the code it seems the error is related to the function “createAndLinkProgramm” and the other statements are just related to this function.

Sadly, I can not provide exemplary data because at the moment it is for internals only.

Thanks in advance for your help!

EDIT: version of CesiumJS is 1.71

EDIT2: after further investigation I noticed, that some of the textures are provided as transparency enabled PNGs. Can this maybe cause the error?

@lennart.imberg

Welcome to the community! :confetti_ball:

I noticed that you are creating 3D Tilesets from CityGML data using FME. What is FME? Also, is there a reason that you are not uploading your CityGML data to Cesium ion? Data uploaded to Cesium ion can be streamed at runtime to CesiumJS. Here is some more information on uploading data to Cesium ion:

If your use-case requires on premise 3D Tiling, we offer that as well:

Thank you for sending over the specifics of the error. First, I suggest that you use the most recent version of CesiumJS (version 1.84). Is there any reason why you are not currently doing this?

I suspect that you are correct - the textures provided as transparency enabled PNGs are likely the cause of the problem. However, it is really difficult for me to debug this on my end without data to experiment with.

Could you please tell me a little bit more about your use-case? This would help me understand your issue at a high-level. I would like to know more about why you are alternating between LoD2 and LoD3.

Let me know if you have any other questions or concerns. Looking forward to learning more!

-Sam

Hi Sam, thank you for your reply!

about Cesium ion / Cesium On-Premise usage:
I am working for a municipal government and at the moment we are experimenting with Cesium as a potential future platform for our 3D-data. Because we are just experimenting, we stick to Open Source for now. Uploading the data and streaming it from Ion servers will never be an option because of some regulations.

about LoD2/LoD3 switching:
We try to create different applications for different use cases. I just want to save some performance/network traffic if the main use is not visualizing but getting information etc.

about the other stuff:
FME (Feature Manipulation Engine) is a powerful platform for working with spatial data. It has the (limited) possibility to safe data as 3D tilesets. I will update the library to the latest version, i was just using the libraries downloaded by my predecessor.

here is a examplary picture of the first test:

I will try to further investigate, if the transparency is causing the error…

Cheers, Lennart