[4.3-stable] MacOS 15.0.1 Sequoia's safari does not work with viewport and caused it frozen.
Tested versions
IOS 18.0.1
Chrome:
Safari:
- Reproducible in 4.2, 4.2.2, 4.3, 4.3.dev1
System information
Godot v4.3.stable - macOS 15.0.1 - GLES3 (Compatibility) - Apple M1 - Apple M1 (8 Threads)
Issue description
All of my Godot games crashed in the cloud on my iPhone and Mac after I upgraded both. I found the issue after a week of figuring. My Linux (20.04), Windows (8, 10, 11), and other Macs (older versions which is 14.3) don't have this issue. The Mac I'm using right now, where I'm typing to you, is already upgraded to the latest version, which is 15.0.1. I can't see my project due to a SubViewportContainer issue. There are no error logs in HTML5. I was able to see it in Chrome but not in Safari. My iPhone couldn't see the data either. See the video:
https://drive.google.com/file/d/1B40qT4eeABohT4miUnMhjiavpCuOUWfe/view?usp=sharing
The right browser is Chrome, and the left browser is Safari.
There are two lines that I can reproduce, and I have this in a zip file as well.
var white_rectangle = $SubViewportContainer/SubViewport/ColorRect # BUG HERE
# var white_rectangle = $ColorRect # WORKING
If you comment out the first line and uncomment the second, you will see it working in Safari. However, when you comment out the second line and uncomment the first, you will see the bug without any error logs.
First line is inside the node called subviewport node. The second line is outside of the node called SubViewPort.
Steps to reproduce
- run HTML tester in safari on 15.0.1 Mac OS only
- comment the first line out and uncomment the second line and then re-run html5 export.
Minimal reproduction project (MRP)
It is worth adding that on IOS, all browsers are essentially reskins of Safari due to Apples policies, so essentially its just Safari that is affected across all Apple devices. Testing Chrome on Mac OS (which actually is Chrome and not a Safari reskin) works correctly
Mac OS 15.1 persists
I have a similar (possibly the same) issue where the functionality of SubViewport appears to be broken on Safari 18.1.1 (MacOS 15.1.1). Specifically, when projecting a Camera3D to a SubViewport and sampling pixels from the resulting texture, I always get black/transparent values in safari whereas in other browsers I get the expected pixel values corresponding to the camera's field of view.
I encountered this issue. SubViewportContainer renders only first frame, and never updates the rendering again. And I confirmed that Godot itself continues to run, so I believe this is a rendering issue.
Is there a workaround?