expenses / mateversum

Mateversum is a peer-to-peer WebXR metaverse project. Binary: https://github.com/expenses/mateversum-web
https://expenses.github.io/mateversum-web
MIT License
24 stars 1 forks source link

`GL_OVR_multiview2` is not supported on macOS #34

Open ianklatzco opened 2 years ago

ianklatzco commented 2 years ago

might be just b/c using ANGLE / bc is on M1

crashlog expenses.github.io-1655719787272.log

expenses commented 2 years ago

Ah great, yeah looks like you can't use this on Macbooks then.

expenses commented 2 years ago

FYI this is implementable: https://developer.apple.com/documentation/metal/render_passes/rendering_to_multiple_viewports_in_a_draw_command. I guess the ANGLE backend just doesn't.

expenses commented 2 years ago

A desktop mode wouldn't require this extension, so boreq would be able to use Mateversum via that.

expenses commented 2 years ago

@ianklatzco can you check with boreq whether you can switch to the Metal backend in chrome://flags? It might be something you can toggle and perhaps doing that lets you use this extension. At the moment it's using the (old and deprecated) OpenGL backend on macOS:

mateversum.js:1563 Vendor: Google Inc. (Apple)
mateversum.js:1563 Renderer: ANGLE (Apple, Apple M1, OpenGL 4.1)
mateversum.js:1563 Version: WebGL 2.0 (OpenGL ES 3.0 Chromium)
mateversum.js:1563 SL version: WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0 Chromium)
mateversum.js:1563 Adapter Gl AdapterInfo { name: "ANGLE (Apple, Apple M1, OpenGL 4.1)", vendor: 0, device: 0, device_type: IntegratedGpu, backend: Gl }
mateversum.js:1563 Using ANGLE (Apple, Apple M1, OpenGL 4.1) with the Gl backend. Downlevel capabilities: DownlevelCapabilities { flags: NON_POWER_OF_TWO_MIPMAPPED_TEXTURES | CUBE_ARRAY_TEXTURES | COMPARISON_SAMPLERS | ANISOTROPIC_FILTERING | COLOR_ATTACHMENT_FLOAT, limits: DownlevelLimits, shader_model: Sm5 }
mateversum.js:1563 Supported features: PUSH_CONSTANTS | TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES | CLEAR_TEXTURE | MULTIVIEW
expenses commented 2 years ago

FYI: My take is that I'm not going to support VR rendering for platforms that don't support the GL_OVR_multiview2 extension because I think it'd render too slowly and be a bit of a pain to support.