godotengine / godot

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

Random visual artifacts with blend shapes on AMD graphics cards (GLES3) #45690

Open kayomn opened 3 years ago

kayomn commented 3 years ago

Godot version: 3.2.3 Stable Mono Official

OS/device including version: OS: Manjaro Linux x86_64 Kernel: 5.9.16-1-MANJARO CPU: AMD Ryzen 7 1700X (16) @ 3.400GHz GPU: AMD ATI Radeon RX 5600 XT Backend: GLES3

Issue description: image

When applying blend shapes, the model accumulates graphical artefacts in the form of distended polygons reaching out from the face. As the render updates, so too does the direction of the polygons. Moving the camera around also causes the artefacts to change shape in a seemingly random manner.

The issue becomes progressively more noticeable as more blend shapes are applied.

To confirm that the model was not the problem, it has been opened in the following game engines and hardware:

With the above configurations, no problems rendering the model occur. Additionally, the model was exported as GLB, GLTF, and FBX. I have concluded that the file format does not play a role, as they all behaved identically on the hardware tested.

The issue also persists when the game is running, which leads me to believe this is an AMD Linux-specific renderer bug or file format-wide importing bug.

This issue has also been fixed in master branch.

Steps to reproduce: Open up the minimal reproduction project and tweak the blend shape sliders in the scene-local instance of the model within Main.tscn.

Minimal reproduction project: BlendShapes.zip

nonunknown commented 3 years ago

I've already had these kind of problems, the solution I found for now: https://www.youtube.com/watch?v=H_DOVS6Wl_o

Calinou commented 3 years ago

OS: Fedora 33 GPU: GeForce GTX 1080 (NVIDIA proprietary driver 460.32.03)

I can't reproduce this on 3.2.3 and 3.2 Git ecf432abc (the latter uses the new FBX importer). I made sure to remove the .import/ folder before testing with each Godot version. Even when rotating the camera and modifying blend shape values, I don't see any visual artifacts.

Maybe this only affects AMD graphics cards?

WittyScrap commented 3 years ago

OS: Windows 10 GPU: RTX 2070S (Driver version 461.40)

I also can't reproduce this on 3.2, I tried creating a new project and import the FBX as well and the problem still does not appear no matter what combination of sliders and view angles I use.

This further suggests it might have something to do with AMD cards.

akien-mga commented 3 years ago

OS: Mageia 8 GPU: Intel HD 630 and AMD Radeon RX Vega M (both with Mesa 20.3.4)

I can't seem to reproduce the issue either on 3.2.3-stable or latest 3.2 with the given steps to reproduce, testing both with Intel and AMD.

I tried playing around with blend shapes in the provided Main.tscn (where the imported model is baked in, so reimporting won't change it), and in a new scene with the imported FBX as inherited scene (thus staying affected by reimports).

It reminds me of an issue where meshes with blend shape could cause this kind of corruption when reimported (each reimport would corrupt it further), but I can't find it back.

I don't think it's related to AMD graphics cards specifically, we need to dig more to know what we're missing in the reproduction steps.

kayomn commented 3 years ago

OS: Mageia 8 GPU: Intel HD 630 and AMD Radeon RX Vega M (both with Mesa 20.3.4)

I can't seem to reproduce the issue either on 3.2.3-stable or latest 3.2 with the given steps to reproduce, testing both with Intel and AMD.

I tried playing around with blend shapes in the provided Main.tscn (where the imported model is baked in, so reimporting won't change it), and in a new scene with the imported FBX as inherited scene (thus staying affected by reimports).

It reminds me of an issue where meshes with blend shape could cause this kind of corruption when reimported (each reimport would corrupt it further), but I can't find it back.

I don't think it's related to AMD graphics cards specifically, we need to dig more to know what we're missing in the reproduction steps.

Maybe, but what I find peculiar is that if I download the reproduction project and open it then the issue remains. However, everyone else that has tried opening it is having no problems. This would seem to imply there is some part of the problem that is conditional on the hardware configuration.

Zireael07 commented 3 years ago

I see you're on Manjaro - are you on proprietary drivers or the open source ones? mhwd or whatever the switcher is...

kayomn commented 3 years ago
[kayomn@desktop ~]$ mhwd -l -d
--------------------------------------------------------------------------------
> PCI Device: /devices/pci0000:00/0000:00:03.1/0000:0e:00.0/0000:0f:00.0/0000:10:00.0 (0300:1002:731f)
  Display controller ATI Technologies Inc Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
--------------------------------------------------------------------------------
  > INSTALLED:

   NAME:        video-linux
   ATTACHED:    PCI
   VERSION:     2018.05.04
   INFO:        Standard open source drivers.
   PRIORITY:    2
   FREEDRIVER:  true
   DEPENDS:     -
   CONFLICTS:   -
   CLASSIDS:    0300 0380 0302 
   VENDORIDS:   1002 8086 10de
akien-mga commented 3 years ago

To clarify:

Rendering of the model with blend shapes was tested in UE4, Unity, and Godot on Windows as well as Godot on Linux to confirm that the issue was not related to the model itself.

This means that you have the same issue in Godot on Linux and Windows, right? Or is it Linux specific? If the latter, it could indeed be a Mesa bug which might be fixed in more recent versions (mine is the latest stable).

kayomn commented 3 years ago

To clarify:

Rendering of the model with blend shapes was tested in UE4, Unity, and Godot on Windows as well as Godot on Linux to confirm that the issue was not related to the model itself.

This means that you have the same issue in Godot on Linux and Windows, right? Or is it Linux specific? If the latter, it could indeed be a Mesa bug which might be fixed in more recent versions (mine is the latest stable).

No, that was poorly worded on my part.

To clarify:

I will also amend my wording of the initial issue.

kayomn commented 3 years ago

I can confirm that this issue is not happening on Windows.

image

This is running on the same hardware configuration that is problematic on Linux.

RevoluPowered commented 3 years ago

I had the same problem with my RX 5600 XT on Linux with arbitrary blend shapes in Godot in the past too.

The driver was definitely the problem, but I was unsure where precisely the issue was, rebooting for me would make the issue go away periodically.

kayomn commented 3 years ago

Would it be safe to say this is a confirmed issue?

Also, if this is a driver problem, I imagine this should be taken up with the AMDGPU devs rather than Godot itself.

sisterhooddev commented 3 years ago

I can confirm this happening with NVidia card. Its rare, once in 20th game run, but happens.

blendshapes2

MJacred commented 2 years ago

@kayomn: there was an issue just half a year before yours. They also had Manjaro with AMD and video-linux. Changing driver to video-vesa fixed it for them: https://github.com/godotengine/godot/issues/41688#issuecomment-685273283

EDIT: so it really sounds like a driver issue