godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.37k stars 21.26k forks source link

Implement automatic OpenGL fallback for GPUs that don't support Vulkan #57622

Closed ghost closed 6 months ago

ghost commented 2 years ago

Godot version

4.0 alpha

System information

Windows 8 intel hd 4000 GLES3

Issue description

the Godot 4.0 alpha doesn't open in my intelHD4000 Although my device supports GLES3 godot1 godot2

Steps to reproduce

its not open

Minimal reproduction project

No response

akien-mga commented 2 years ago

GLES3 is not fully implemented yet, and there's no automatic fallback to it when Vulkan is not supported (the error message is slightly misleading, but it is what will be valid once GLES3 is fully implemented).

You can force using it with godot.exe --rendering-driver opengl3 but note that it is still very early on and has only limited 2D support.

jmdejong commented 2 years ago

I've had the same problem when trying to launch godot 4 on linux. With the command-line flag I can indeed open Godot, but when that session opens another window (opening a project from the project overview or running a scene from the editor) then it tries (and fails) vulkan again

Fran6nd commented 2 years ago

Same as @jmdejong on Mac OS with an M1 proc. I tried building for x86 too, same errors, same behaviours if I use --rendering-driver opengl3. I am kinda stuck.

Calinou commented 2 years ago

Same as @jmdejong on Mac OS with an M1 proc. I tried building for x86 too, same errors, same behaviours if I use --rendering-driver opengl3. I am kinda stuck.

M1 Macs can run Vulkan with MoltenVK. You need to install the Vulkan SDK if you've built Godot from source, as per the documentation.

clayjohn commented 1 year ago

This has been partially addressed. The Project manager now defaults to GLES3 so users without Vulkan support can still open the engine and create a project. The team needs to discuss having an automatic fallback as it may not make sense. In other words, if a team creates a game that is designed for the Forward+ renderer, it will likely look broken if run from the gl_compatibility renderer as the gl_compatibility renderer lacks some features. So automatically falling back may not be helpful

Zireael07 commented 1 year ago

A way to make things NOT break would be https://github.com/godotengine/godot-proposals/issues/6207 but, obviously, not something that can go into 4.0

mechPenSketch commented 1 year ago

I have something to add on continuing from my closed thread.

As mentioned before, I've observed two kinds of projects that cannot be opened:

While both can be worked around, I think the GLES3 fallback should be applied to the former. Mabe this is the only other timer the fallback should be applied to.

When it comes to other projects, the original owner may intend to render in Vulkan, so fallback may not be applicable there. However, they need to disclaim so that others won't clone them only to be greeted with the Vulkan error message.

Calinou commented 1 year ago

While both can be worked around, I think the GLES3 fallback should be applied to the former. Mabe this is the only other timer the fallback should be applied to.

See https://github.com/godotengine/godot/issues/74159. We shouldn't unconditionally convert all 3.x projects to use OpenGL, as many rendering features are currently missing in that renderer (such as shadows in 3D).

Calinou commented 6 months ago

Closing in favor of https://github.com/godotengine/godot-proposals/issues/8006.