Compatibility renderer iOS - 3D model not rendered

Godot Version

4.2.1

Question

I switched to a compatibility renderer and suddenly some 3D models started to be invisible. I’ve created the minimal project to reproduce the problem.

Just create the project. Download KayKit - Character Pack : Adventurers from AssetLib. Create a 3D scene, add some model (I used Barbarian), add 3D camera and default light + environment. Then export for iOS. I added only team and bundle id.

And some meshes are missing. In editor, everything looks ok.

This is log from device:

2024-01-03 21:17:19.875555+0100 bug_report[481:7128] Metal API Validation Enabled
2024-01-03 21:17:21.069298+0100 bug_report[481:7128] Warning: Unable to create restoration in progress marker file
2024-01-03 21:17:21.257072+0100 bug_report[481:7128] USER ERROR: AudioOutputUnitStart failed, code: -50
2024-01-03 21:17:21.257221+0100 bug_report[481:7128]    at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:251)
USER ERROR: AudioOutputUnitStart failed, code: -50
   at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:251)
2024-01-03 21:17:21.333418+0100 bug_report[481:7128] Godot Engine v4.2.1.stable.official.b09f793f5 - https://godotengine.org
Godot Engine v4.2.1.stable.official.b09f793f5 - https://godotengine.org
2024-01-03 21:17:21.545142+0100 bug_report[481:7128] Setting up an OpenGL ES 3.0 context.
2024-01-03 21:17:21.563968+0100 bug_report[481:7128] USER WARNING: Project setting "rendering/limits/global_shader_variables/buffer_size" exceeds maximum uniform buffer size of: 16384
2024-01-03 21:17:21.564055+0100 bug_report[481:7128]    at: MaterialStorage (drivers/gles3/storage/material_storage.cpp:1114)
USER WARNING: Project setting "rendering/limits/global_shader_variables/buffer_size" exceeds maximum uniform buffer size of: 16384
   at: MaterialStorage (drivers/gles3/storage/material_storage.cpp:1114)
2024-01-03 21:17:21.577417+0100 bug_report[481:7128] fopen failed for data file: errno = 2 (No such file or directory)
2024-01-03 21:17:21.577506+0100 bug_report[481:7128] Errors found! Invalidating cache...
2024-01-03 21:17:21.592490+0100 bug_report[481:7128] fopen failed for data file: errno = 2 (No such file or directory)
2024-01-03 21:17:21.592574+0100 bug_report[481:7128] Errors found! Invalidating cache...
2024-01-03 21:17:21.713905+0100 bug_report[481:7128] OpenGL API OpenGL ES 3.0 Metal - 99 - Compatibility - Using Device: Apple Inc. - Apple A10 GPU
OpenGL API OpenGL ES 3.0 Metal - 99 - Compatibility - Using Device: Apple Inc. - Apple A10 GPU
2024-01-03 21:17:22.046412+0100 bug_report[481:7128] 
 
2024-01-03 21:17:22.811896+0100 bug_report[481:7128] USER WARNING: Icon not supported by this display server.
2024-01-03 21:17:22.811995+0100 bug_report[481:7128]    at: set_icon (servers/display_server.cpp:577)
USER WARNING: Icon not supported by this display server.
   at: set_icon (servers/display_server.cpp:577)
2024-01-03 21:17:22.819979+0100 bug_report[481:7128] fopen failed for data file: errno = 2 (No such file or directory)
2024-01-03 21:17:22.820071+0100 bug_report[481:7128] Errors found! Invalidating cache...
2024-01-03 21:17:23.659035+0100 bug_report[481:7128] DrawView: 506 error

There are quite a lot of errors. I don’t know which one is relevant to the problem. But I don’t think there is some file missing, because with Vulkan renderer it works and other parts of the model are rendered.

I’ve tested it on two devices:
Model: iPhone 13 Pro Max - iOS 17.1.2 (21B101)
Model: iPad (6th generation) (Model A1954) - iOS 16.6.1 (20G81)
Result is the same

Am I doing something wrong or is it a bug in Godot?

The problem is in this:

USER WARNING: Project setting "rendering/limits/global_shader_variables/buffer_size" exceeds maximum uniform buffer size of: 16384

Models with too big polycount are not rendered. But the limit is really small and I didn’t find the way how to increase it. There is a setting for it but it does nothing, at least what I tried.

The error message on iOS indicates that the buffer size limit is 16384 due to hardware limitations. However, the default project setting’s value is 32768. Changing this value above 16384 will have no effect on the iOS device, because this is a hardware limitation, not a software one.

That said, this error message may be a red herring since the description refers to canvas items, which are 2D elements, not 3D geometry.

Thanks for the explanation.
I did some more investigation and found that Godot 3.5 have no problem with this. Also I reported the problem on github: global_shader_variables/buffer_size set too high in new Compatibility project · Issue #85374 · godotengine/godot · GitHub
(But I’m a little worried that I may have gotten it wrong and it’s actually a different problem, unrelated to the warning :man_shrugging: )

For now, I solved my problem by decimating 3D models but I’m not satisfied with this solution.

I`ve reported new bug in github: 3D models not rendered on iOS with compatibility renderer · Issue #86830 · godotengine/godot · GitHub

1 Like

Could be possible to use opengl3_angle (maybe it will be a workaround) for ios? There is no such option in the editor but ANGLE should be able to run on iOS…?