Godot: Graphical artifacts in Godot 3.2 beta 4

Created on 20 Dec 2019  ·  32Comments  ·  Source: godotengine/godot

There seems to be a graphical issue in Godot 3.2 that isn't present in Godot 3.1.2.
Godot 3.2
Godot 3.1.2

Mesh:

  • Is imported using Collada format
  • Two-sided so you can see it from any angle.
  • custom collision included.

More images showing the issue
Even more

bug regression editor rendering

Most helpful comment

I've also encountered this issue. My GPU is GTX 1050Ti.

ars

Some observations:

  • It happens since 3.2 beta 2 build. It does not happen with beta 1.
  • It only happens with GLES3.
  • I thought it only happens to the face that is perpendicular (and almost perpendicular) to Y-axis. But looks like it's to do with shade. When I rotated the sky, it appears on the side, the new bottom.

sky_rotated

  • It seems to disappear when:
    -- Well, unshaded.
    -- Enabled normal map, even without normal map texture.
    -- Enabled metallic, proportional to the metallic value.
    -- When the face was totally lit by other light sources.

I guess this is something to do with lighting and shadow but I'm clueless about graphics programming so...

All 32 comments

you can attach images by just drag and drop in comment field.

Can you provide a test project that exhibits the issue, and details on your system?

KDE Neon(Based on Ubuntu 18.04, kernel 5.3.18)
I5-4570 Cpu
Gtx 1060 6gb gpu
16 gb of ram

Here's a test project that includes one of the assets shown in screenshots.
Godot3.2_Test.zip

Screenshot_20191220_105932
Screenshot from 2019-12-20 15-23-52

For benefit of others I pasted one of your original images here. The second image is mine captured from blender. I loaded the DAE into blender, and there is z fighting because the object contains what seems to be a duplicate mesh underneath the first. I deleted a quad to show this, there is a white mesh underneath (am presuming this is the collision mesh? maybe this is showing in godot?).

Edit .. It does seem to load the collision mesh in Godot ok, I can't get the same z fighting as yours but perhaps my frame buffer is different (you should really upload a project, not just the DAE). Maybe it is something to do with the double sidedness...

The thing is that for personal reasons I would not like to share my project yet but it is odd that you don't experience it in 3.2 beta 4 and I do.

In the project that I sent the issue persisted so I though that it should be enough for you to analyze, and at the time when I sent those screenshots above, my project consisted of only imported .dae assets and nothing else.

Edit: second mesh is the collision and it needs to be visible in Blender so that Godot could import it with the object itself.

@warriormaster12 Are you running the project on the Intel IGP or the NVIDIA graphics card?

Unlike AMD and NVIDIA, Intel graphics drivers default to 16-bit depth buffer unless the application explicitly requests a 24-bit depth buffer. This could be the cause of Z-fighting being only visible on Intel graphics.

cc @clayjohn

@Calinou on desktop we explicitly request 24/32 bit depth buffers. So when available, the driver should always supply the highest bit depth.

@Calinou Nvidia graphics card. I want to repeat that in any project that I have imported assets to, issue persists. With 3.1.2 everything works as should.

This really looks like Z fighting, or perhaps a problem with the normals... Have you tried uploading a normal cube exported from Blender?

No not yet, I can try though.

Please do, I think that's the source of the issue. Could be wrong tho

-------- Mensagem Original --------
Ligado 3/01/2020, 13:53, Alexander Streng escreveu:

No not yet, I can try though.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Nope, I still have the issue and it doesn't matter if I have collision or not.

image
image

Godot 3.1.2
image

I fail to see the difference between 3.1.2 and 3.2 - the cubes look the same to me.

3.1.2 doesn't have artifacts in the bottom face and it looks a bit darker.

Oh, zooming in I can see the artifacts now that you mentioned where to look.
Are the cubes two-sided? Does the issue occur if they are one-sided?

It's the default blender cube so no it shouldn't be two-sided

A little update. Tried default meshes in the meshinstance node aaaand... Basically same story.

Tested with Godot 3.2 beta 5 and the issue is still there.

Edit: it seems that textured assets don't have these kind of artifacts

"Textured" in what sense? Do you import materials from Blender? Set up material in Godot?

For custom assets I do import materials from Blender if their color is set to something other than default white. Once I have settled with how the object looks in the environment, I go back to Blender and texture it and then import updated object with textures back in to Godot and that seems to "fix" the artifacting issue.

Without textures
Screenshot_20200104_161825

And with textures
Screenshot_20200104_161945

Unfortunately very difficult to pin down without the system it occurs on, I'm mostly stumped.

Some other possibilities aside from z buffer:

  • the shader reading garbage somewhere, and maybe on most systems it just defaults to a zero or 1.
  • it could be something precision sensitive in the maths for one of the shaders (e.g. divide by zero).

I would try converting both the spatial material that has the problem, and one that does not, to a shader, then try to manually bisect between the two, in order to figure out when the problem starts occurring. You could also try disabling the z prepass just to rule that out.

I don't think that it's a material issue since choosing a default mesh from mesh instance has the same issue. How to disable z prepass and is there a way to debug Godot inside of terminal?

Exactly because default mesh and your mesh have the issue, it looks like a material issue.
Z prepass is somewhere in material's settings, btw.

Oh okay, don't know all of the terms related to game engine development so thanks for correcting me 😁

Are you going to leave this issue unsolved?

It needs to be reproduced in order to be solved. No one can reproduce therefore no one can solve it right now.

I removed the 3.2 milestone as it is clear that this will not be solved in the coming weeks and I don't think this issue should block the 3.2 release as no one else is experiencing this issue.

I understand.

I've also encountered this issue. My GPU is GTX 1050Ti.

ars

Some observations:

  • It happens since 3.2 beta 2 build. It does not happen with beta 1.
  • It only happens with GLES3.
  • I thought it only happens to the face that is perpendicular (and almost perpendicular) to Y-axis. But looks like it's to do with shade. When I rotated the sky, it appears on the side, the new bottom.

sky_rotated

  • It seems to disappear when:
    -- Well, unshaded.
    -- Enabled normal map, even without normal map texture.
    -- Enabled metallic, proportional to the metallic value.
    -- When the face was totally lit by other light sources.

I guess this is something to do with lighting and shadow but I'm clueless about graphics programming so...

@sunkper thanks for confirming. Based on your info it looks like this may be an issue with the irradiance map code that was added in beta 2 https://github.com/godotengine/godot/commit/cd40154890ba9791b219d66beaf187a7d8dcdba5

@warriormaster12 Thanks for your patience, I have submitted a PR to fix this issue. If you are comfortable building from master please do so and confirm that the PR fixes the issue for you. :)

@clayjohn will do 👌

Cloned master branch, compiled it and yup, no artifacts anymore. Thanks a lot for fixing the issue. I hope only best for you and your project :D

Was this page helpful?
0 / 5 - 0 ratings