Forum Discussion
Norman3D
8 years agoExpert Protege
Android Oreo breaking shaders/textures
Hello everybody, we are getting more and more reports of users having issues with Daedalus. Specifically, certain elements in the game are being rendered pitch black. Here are two screenshots: ...
Norman3D
8 years agoExpert Protege
imperativity said:
@Norman3D
An update for your from our integrations team:
"this is an issue at the driver level and we're not gonna be able to change that driver, so the only thing we can reliably do here is find a workaround and update the app.
They need to play around with UE and figure out what works and what doesn't in terms of texture formats and sampling types...
Can they try something else other than ASTC for that texture, like uncompressed or ETC2?"
Hi @imperativity ! Thanks a lot for the info!
I also came to the conclusion that it had to be driver bug. I have since been able to find some time to debug this issue by trial and error. I'm still looking into it, but it seems that the driver bug has some sort of "rounding error". Not sure if it's a feature or a bug.
At the beginning of Daedalus production, the shader had a parameter value called "Reflection Intensity" that I would adjust manually for each material instance for it to look "right". These values, due to how the shader was built at the time, required high values such as 100 to 300. Later in development the base shader changed, and it required much lower "Reflection Intensity" values. Due to the fact we had only 2 months to develop the game from start to finish, I had no time to go through all materials (they are a lot) to lower the values manually and instead opted for adding one more instruction to the shader that would multiply this "Reflection Intensity" value by "0.05".
So far so good. If you output this result in Android Oreo, everything is fine. If you do anything else in the shader after the 0.05 multiplication, it will round "0.05" to "0.0", making the result look black. The fix consists of pre-multiplying the "Reflection Intensity" value and removing the "0.05" multiplication.
Keep in mind that all shaders in the game have the same parent material, so they all have this "0.05" multiplication, however not all of them showcased the rounding bug. Applying this fix on all of them, fixes those shaders with the problem, but the rounding error shows up on others. I have not been able to figure out exactly why it happens. For now I'm working around the black shader issue by applying the fix only on those shaders showcasing the issue and ignoring the rest. Makes me feel uneasy, but it works.
I'll post another update if I find out more information!
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 10 months ago
- 2 years ago
- 3 years ago