iOS 15 + WebGL 2 issue

Hi,

I have a very weird problem, and I'm not really sure where to start searching for a solution. The problem is with the latest iOS update (15) and WebGL 2, as the title suggests.

The iOS 15 update automatically enabled WebGL 2 for its users, which should be a good thing. However, whenever I try to load any of the scenes with the racing tracks on them, the game kind of freezes. At this point the game gives me an empty screen (black) and nothing really happens. No log output, nothing. After a few minutes though, I get death messages in the browser console. Normally this would happen in a few seconds instead of minutes without controlling the car. Also note that, scenes with barely anything in them, such as only UI stuff, do seem to work.

The weird part is that when disabling WebGL 2 from the Safari settings, or forcing a WebGL 1 build-only via Unity, the game runs okay. Also, on iOS 14 with WebGL 2 enabled in browser settings it seems to work fine.

This is really all I managed to find out after trying random things for a few hours. Does someone know what could be causing this? Or how I can get some more useful information regarding what's going on? I'll try some extra things and share anything I find here.

Thanks in advance! :)

3 Likes

Hi,
i had the same problem. After a lot of research i found one little thing that helps. I disabled the "Lightmap Streaming" in the Player Settings and now everything works fine. Maybe this little trick helps you.
Good luck!

1 Like

Same problem here.
My game crashes "randomly" in iOS (15.0.2) Safari. On Chrome Browser (iOS) it seems to be still working.
"Lightmap Streaming" was already disabled here without any effect :/

Update:
The problem seems to be the "new" Webgl2.0 support of iOS Safari.
You can disable it directly on the phone:
Settings >> Safari >> Advanced >> Experimental >> WebGl 2.0

Or set webgl1.0 in the build-settings of Unity until this issue gets fixed.

I can reproduce it now this way. Not a solution but at least a temporary workaround.

3 Likes

Thanks for your answer @Affentot . Sadly your solution didn't work for me. I ended up doing the same as @chilledbits mentioned; creating a WebGL 1.0 only build for Apple devices. This works fine for now, but hopefully this will be properly fixed in the future.

1 Like

There is a bug in Safari WebGL2 that has been fixed in the current iOS 15.2 beta, which is probably this same issue.

3 Likes

I'm facing the same issue.. Suddenly the WebGL application that was working fine is crashing and reloading on iOS devices
Is there a way to force iPhones/iPads to use the WebGL 1.0 ?
(My app has Auto Graphics API checked )

I'm also experiencing this problem, my app crashes when I tap on a button, all this button does is turn a gameobject on or off, I'm also wondering if we can force iPhones/ iPads to run WebGL 1.0 as I don't want to lose my post processing effects on android by just building for WebGL 1.0, I know how to check if the device is an iphone/ ipad from the index file but I'm unsure how to force Unity to run a specific version of WebGL on start

Can you submit bug reports for these iOS issues? It is important to get iOS WebGL2 working well.

On iOS 15.1 my webGL builds won't even load and start with a TypeError: load failed.

All in all, it does not feel like apple products are supporting webGL well in any form.
Low poly games, that run on mid/low end windows/linux machines with maximum FPS tend to lag on macs.

Is there anything that unity provides to run tests with webGL on iOS devices?
I have none, so i cannot even debug these problems.

Unity has been testing iOS15, but there's only so much we can test as the web is a big platform. Apple recently turned on the Metal back-end for WebGL2, and was the source of a couple regressions, but they're working hard with Google to get them sorted out. As Unity is deprecating WebGL1 (it is very old and not very capable ), finding and fixing issues with WebKit's WebGL2 is very important. Submitting issues, especially with small reproducible examples, is the best way to get the problem pushed up the priority list.

I know some of these issues have been fixed in iOS 15.2.

2 Likes

I have the same problem as mentioned above.
When I tried all the suggestions above (Disable the "new" WebGL 2 / Lightmap Streaming - OFF) the only way to get it working on IOS (version 15.01) was to build my project to WebGL 1...
Hope it will be fixed soon.

After I updated my IOS to version 15.02 beta the Unity build WebGL 2.0 finally works!

I can confirm that with iOS 15.2 (not 15.02) this seems to be not an issue anymore.

Thanks for the confirmation.

Hi! I have a similar problem when running on iOS 15.4 beta (everything works fine on 15.3). I've tried all the suggestions posted here before, but with no success. I'm using Unity Editor 2021.2.10f1.
As soon as I add a button to my scene, which prompts me to install the TextMeshPro essentials package, I'm no longer able to load my game (even on very high-end devices).
I've attached the logs from one of the devices.
Is there a fix for this? Please let me know if you'd like me to provide any more info.

Thank you!
- David

7915192--1009732--logs.txt (24.3 KB)

@davidg I'll look into this.

Hey, I'm using unity 2022.1.0b9 and am having similar issues on IOS 15, after finishing loading it immediately gives an error Out of bounds memory access. I tried with empty scenes and changing compression values but nothing fixes this issue.

@petja32 On 15.4?

[quote=“brendanduncan_u3d”, post:18, topic: 857077]
@petja32 On 15.4?
[/quote]

Yes 15.4!

We're working with Apple to get it fixed. I've been pushing on Apple the urgency of it as much as possible.

1 Like