Bug 230949

Summary: Blend4web material shader error on iOS and iPadOS 15
Product: WebKit Reporter: Eric <eric.r>
Component: WebGLAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Critical CC: dino, kbr, kevin_neal, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: iPhone / iPad   
OS: Other   
See Also: https://bugs.webkit.org/show_bug.cgi?id=230472
Attachments:
Description Flags
Console error of one of our pages we use this technology, device: iPad Pro 11" iOS 15.1 none

Description Eric 2021-09-29 05:56:33 PDT
Created attachment 439601 [details]
Console error of one of our pages we use this technology, device: iPad Pro 11" iOS 15.1

Issue with iOS and iPadOS 15.1 Safari and wkwebview Controller with webGL shaders, looks like it don't like any kind of material shader and don't render the 3d models.
We use this for a crucial part of our system for display 3d models.
In MacOS Safari, FireFox, Chrome last versions works perfectly.

Most of blend4web examples in they website don't work to.
https://www.blend4web.com/apps/code_snippets/code_snippets.html?scene=material_api


Console log attached.

Thanks.
Comment 1 Kimmo Kinnunen 2021-09-29 06:16:21 PDT
Thanks. Most likely this is duplicate of bug  230472  as you observed.
Comment 2 Eric 2021-09-29 06:24:22 PDT
I don't understand if this was resolved or i will have to look for an alternative. If it is resolved, how can I identify it? this is a serious problem for us.

Thanks!
Comment 3 Kimmo Kinnunen 2021-09-29 06:29:34 PDT
(In reply to Eric from comment #2)
> I don't understand if this was resolved or i will have to look for an
> alternative. If it is resolved, how can I identify it? this is a serious
> problem for us.

Unfortunately the problem is present in the currently released iOS, but will be fixed in one of the upcoming releases.
If you are able to use a workaround, you could change the variables passed to inout parameters of the functions to not refer to swizzles.

before:
void f(inout float a) { ... }
void main() {
 vec3 myvec = ...;
 f(myvec.x);
}

after:
void f(inout float a) { ... }
void main() {
 vec3 myvec = ...;
 float myfloat = myvec.x;
 f(myfloat);
 myvec.x = myfloat;
}
Comment 4 Eric 2021-09-29 06:33:51 PDT
Thank you very much now it's clearer.
Comment 5 Radar WebKit Bug Importer 2021-09-29 10:07:11 PDT
<rdar://problem/83676218>
Comment 6 Alexey Proskuryakov 2021-09-29 10:23:43 PDT
Is this understood well enough to dupe to bug 230472 at this point?
Comment 7 Kimmo Kinnunen 2021-09-29 11:00:19 PDT

*** This bug has been marked as a duplicate of bug 230472 ***