Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skinned Meshes don't appear in Godot 4.x's GLES3 rendering on Gen 3 Intel HD Graphics (works with ANGLE) #83344

Open
hossine7 opened this issue Oct 14, 2023 · 11 comments

Comments

@hossine7
Copy link

hossine7 commented Oct 14, 2023

Godot version

4.2.beta1, 4.2.dev6, 4.2.dev4, 4.1.1.stable

System information

Windows 10 LTSC - Intel Pentium G2020 - Intel HD Graphics - ANGLE (Compatibility)

Issue description

when using ANGLE (Compatibility) rendering, Skinned Meshes do appear normally in the editor's viewport. but don't appear at all in play mode.
image
image

in addition, i get this error in the Debugger when i enter play mode:

ERROR: 0:328: ';' : syntax error syntax error


  <C++ Source>   drivers/gles3/shader_gles3.cpp:252 @ _display_error_with_code()

when using GLES3 (Compatibility), they don't appear in both the editor and play mode.

Steps to reproduce

--GLES3:
-create a new project in any Godot 4.x
-select Compatibility rendering
-import any sort of a skinned mesh and add it to the scene

--ANGLE:
-create a shortcut to Godot 4's exe
-in the properties of the shortcuts, add --rendering-driver opengl3_angle to the "Target" field
-launch Godot from that shortcut
-do the same steps as GLES3 above

Minimal reproduction project

N/A

@hossine7

This comment was marked as off-topic.

@AThousandShips
Copy link
Member

AThousandShips commented Jan 1, 2024

Please do not bump without adding additional info, instead you can ask about this issue in the contributor chat

Also please test with a recent version, this might have been solved already

@hossine7
Copy link
Author

hossine7 commented Jan 2, 2024

Please do not bump without adding additional info, instead you can ask about this issue in the contributor chat

Also please test with a recent version, this might have been solved already

ok

tested v4.3-dev1, still the same issue

@clayjohn
Copy link
Member

clayjohn commented Jan 2, 2024

It sounds like your command line flag is not getting passed off to the running application and so the running application is still using the Non-ANGLE backend.

You should be changing the rendering/gl_compatibility/driver instead.

@hossine7
Copy link
Author

hossine7 commented Jan 3, 2024

It sounds like your command line flag is not getting passed off to the running application and so the running application is still using the Non-ANGLE backend.

i feel like i already knew what the problem was, but i didn't know how to change the driver at the time lol
finally i can use the program

@hossine7 hossine7 closed this as completed Jan 4, 2024
@akien-mga
Copy link
Member

Reopening for now, we should evaluate if we could detect when we're running on an old gen Intel HD Graphics and default to using ANGLE if so, like we do for some old ATI/AMD GPUs.

CC @bruvzg

@akien-mga akien-mga reopened this Jan 4, 2024
@akien-mga akien-mga changed the title Skinned Meshes don't appear in Godot 4.x's ANGLE/GLES3 rendering when on Intel HD Graphics Skinned Meshes don't appear in Godot 4.x's GLES3 rendering on Gen 3 Intel HD Graphics (works with ANGLE) Jan 4, 2024
@bruvzg
Copy link
Member

bruvzg commented Jan 9, 2024

evaluate if we could detect when we're running on an old gen Intel HD Graphics

We need to decide what's old gen (do we have more open issues for specific GPUs?). And get a list of device/vendor strings (I was using https://opengl.gpuinfo.org/ for current data and https://feedback.wildfiregames.com/report/opengl/ to check for potential name differences in the old drivers).

Otherwise, it's the same as AMD.

Intel HD Graphics is everything from 2010 to 2016, so it's probably too broad scope, and we should only do it for specific generations.

@akien-mga
Copy link
Member

Intel HD Graphics is everything from 2010 to 2016, so it's probably too broad scope, and we should only do it for specific generations.

I think these might all be old enough to default to ANGLE.

Overview on Intel Graphics generations: https://en.wikipedia.org/wiki/Intel_Graphics_Technology#Generations

From what I remember of many bug reports we've had about Intel issues on Windows, anything older than Intel HD Graphics 4000 (Gen 7) seems to be unusable on Windows. Notably Intel HD Graphics 3000 (Gen 6) doesn't support OpenGL 3.3 at all IIRC, or would just crash.

We could stretch it to include HD Graphics 4000 and friends (Gen 7) in the ANGLE list, and only start defaulting to native OpenGL for Gen 7.5 (HD Graphics 4400).

I think it's fine if we always exclude un-numbered Intel HD Graphics / Intel(R) HD Graphics, even if some of those are still found even up to Gen 8. Those are consistently the lowest end options in the generation and I wouldn't expect much out of those chipsets, so ANGLE might be a safer bet to have something at least functional.

@bruvzg
Copy link
Member

bruvzg commented Jan 9, 2024

Seems some of the Intel HD do not have number in the RENDERER string, so unless we want more complex detection system (getting pid/vid from the Windows API), unnamed Intel HD Graphics / Intel(R) HD Graphics is the only option.

@bruvzg
Copy link
Member

bruvzg commented Jan 9, 2024

Or the opposite, seems like Gen 5 doesn't have proper DX11 support for the DX 11 so it won't work with Angle and Gen 6 without 3.3 support will fall back without the list. So we only need Gen 7 in the list.

@bruvzg
Copy link
Member

bruvzg commented Jan 9, 2024

Seems some of the Intel HD do not have number in the RENDERER string, so unless we want more complex detection system

Added option to read device IDs and all Gen5-7 IDs to the list - #87013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants