WAUthethird / Marble-Marcher-Community-Edition

A community-developed version of the original Marble Marcher - a fractal physics game.
GNU General Public License v2.0
258 stars 19 forks source link

White screen on macOS, `Compute shader compilation error.` in the log #67

Open Atemu opened 1 year ago

Atemu commented 1 year ago

So I got this to build on macOS but the executable isn't working. The window is entirely white and this is in the log:

$ ./result/bin/marble-marcher-ce 
Warning. Compatibility profile not supported on this platform.
Error. Unable to create the context. Retrying without shared context.
Warning. New context created without shared context.
Warning: The created OpenGL context does not fully meet the settings that were requested
Requested: version = 4.3 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false
Created: version = 4.1 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = true ; debug = false ; sRGB = false
Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Compute shader compilation error. 

Does MM depend on compute shaders? If yes, that's a death blow to any mac port because the geniuses at the fruit company won't support OGL>4.1 and compute shaders are a 4.3 feature.

I have very little idea about rendering but could this work with TF instead?

WAUthethird commented 1 year ago

Hi! Yes, MM does depend on compute shaders. Mac porting has essentially been abandoned due to this - unless someone is up to porting it to Vulkan?

Not sure what you mean by TF.

Atemu commented 1 year ago

MM does depend on compute shaders. Mac porting has essentially been abandoned due to this

In that case I think a more precise note in the README would be appropriate. Just state that macOS is not supported at all. The current note is very confusing.

unless someone is up to porting it to Vulkan?

Vulkan wasn't invented by the fruit people, so ...no bueno. MotenVK is a thing but it's limited. You'd probably need/want a direct Metal port.

Not sure what you mean by TF.

Sorry, Transform Feedback. As I said, I don't have in-depth knowledge about rendering tech (I've only been a curious user so far) but AFAIK it's the predecessor to compute shaders. It's frowned upon nowadays because it complicates drivers and CS are much better but it's the only option to get CS-like functionality on lesser software stacks as is the case here.

WAUthethird commented 1 year ago

MoltenGL may also be an option, but I haven't looked much into this.

WAUthethird commented 1 year ago

In that case I think a more precise note in the README would be appropriate. Just state that macOS is not supported at all. The current note is very confusing.

That's a good point of feedback. I'll make that change now.

Vulkan wasn't invented by the fruit people, so ...no bueno. MotenVK is a thing but it's limited. You'd probably need/want a direct Metal port.

Sorry -- MoltenVK is what I meant here, but yeah, almost certainly limited - though to what degree I don't know. Direct Metal would almost certainly work better, as you say.

Sorry, Transform Feedback. As I said, I don't have in-depth knowledge about rendering tech (I've only been a curious user so far) but AFAIK it's the predecessor to compute shaders. It's frowned upon nowadays because it complicates drivers and CS are much better but it's the only option to get CS-like functionality on lesser software stacks as is the case here.

Gotcha. Unfortunately, unless someone in the community would like to take that burden upon themselves to develop, I don't really see transform feedback being utilized as a fallback method anytime soon, esp. for a relatively dead game like MM/MMCE.

Atemu commented 1 year ago

MoltenGL may also be an option, but I haven't looked much into this.

MoltenGL only implements GLES2.0 which doesn't support compute shaders either.

Google's ANGLE might be an option but it only implements up to GLES3.0 atop of Metal and we need 3.1. You could perhaps run GLES3.1 atop of Vulkan atop of Metal perhaps but at that point you might as well use Zink which is supposed to work on mac but I've never gotten it to work.