Gaussian Splat mesh is not rendered on iOS

Hello!

I’m trying to load a scene with GaussianSplattingMesh on iOS. The mesh seems to be loaded, but there is no visual output for the GaussianSplattingMesh (everything else in the scene is fine).

I could not generate a PG because could not load a PG scene from iOS Safari or Chrome. If you are able to load them, you may try any playground with GaussianSplattingMesh.

Everything is fine with Android.

Any help is greatly appreciated. Thanks!

cc @Cedric

I’ll take a look asap

2 Likes

I could open and see every GS from Babylon.js docs on my iphone 11

Is there a specific GS that didn’t display? anything in the console?

Strange, all I see in docs is a blank page when running on iPhone 12 Pro with iOS 16.3.1. However, both the docs page and the PGs load fine when running on 13 Pro with iOS 16.1.

Nothing in the console? Like a shader error?

The screenshot was from docs page, I thought it was not about shaders. I’m debugging on Windows, which I’m having inconsistencies when debugging, but I was able to see this error at docs:

image

I cannot see the contents of the .js resources there.

When loading a PG, this is the error I see:

Erroneous snippet from index.js:

checkBabylonVersionAsync().then((versionInfo) => {
    const bundle = (globalThis && globalThis.__PLAYGROUND_BUNDLE__) || "babylon.playground.js";
    loadScriptAsync(bundle).then(() => {
        var hostElement = document.getElementById("host-element");
        let mode = undefined;
        if (window.location.href.includes("full.html")) {
            mode = 1;
        } else if (window.location.href.includes("frame.html")) {
            mode = 2;
        }
        // eslint-disable-next-line no-undef      /*ERROR BELOW*/ 
        BABYLON.Playground.Show(hostElement, mode, versionInfo.version, versionInfo.bundles);
    });
});

do you get that error for every PG? only for ios16.3.1?

cc @docEdub

Yes, I’m having that at every PG and doc page. I will test with another device with different versions in a short while.

In my application, I see everything other than the GaussianSplattingMesh. But the mesh seems to be loaded without any errors.

Side information, subpages at forum are shown like this on my iPhone:

Just tried with iPhone 6s Plus with iOS 15.8 (:sauropod: :moai: :t_rex:) and it does not render the GS mesh as well.

I’ll take a look

The GS loads and displays on my iPhone 12’s with iOS 26.2. The GS is upside-down though. Same on macOS with all browsers.

I don’t have iOS 15 or 16 to test with.

PG I tested with is https://playground.babylonjs.com/#M05L0C#5

I’ll update the doc PG.

Same results on Windows 11 for Edge and Chrome. PG and GS load with no errors but GS is upside-down. I don’t see any syntax errors for the PG code in the console.

1 Like

The issue should affect all iOS versions below 16.4 and is independent of Gaussian Splatting. On iOS < 16.4, opening https://playground.babylonjs.com results in a blank page.

This happens because Monaco upgrade introduces modern JavaScript features that older WebKit engines can’t parse/execute (notably class static initialization blocks and RegExp lookbehind). On those browsers this triggers a runtime/parse failure early in babylon.playground.[fullhash].js, so the script never completes and the Playground isn’t attached to the global object.

Root cause analysis and fix proposal:

3 Likes

GG @SimoneDev

1 Like