godotengine / godot

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

GridMap renders 3D meshes as solid black with "Compatibility" renderer #74111

Closed kdiduk closed 1 year ago

kdiduk commented 1 year ago

Bugsquad note: This issue has been confirmed several times already. No need to confirm it further.


Godot version

v4.0.rc6.official

System information

Linux kernel 5.15. Driver: Mesa 22.3.1. Godot renderer: compatibility

Issue description

When using Compatibility renderer in Godot 4.0, GridMap doesn't render 3D meshesh correctly: they are rendered as completely black. And what is interesting is that they are rendered correctly while editing before a 3D mesh is actually placed.

grodmap_compatibility

See the video below:

https://user-images.githubusercontent.com/12220677/221860974-aabde208-1999-4799-aa46-caa0bed86a1f.mp4

The renderers "Forward+" and "Mobile" don't have this issue.

gridmap_mobile_renderer

Also, this issue was mentioned by other users in Godot Discord (for example, here)

Steps to reproduce

Create new project with "Compatibility" renderer. Create a simple 3D scene (with lights, etc.) and put GridMap node on it. Create new MeshLibrary with some 3D meshesh. Start editing GridMap. Notice when placing 3D meshesh on it, they are rendered correctly until they are placed. One they are placed, they are rendered as completely black.

Minimal reproduction project

racing.tar.gz

Calinou commented 1 year ago

I can confirm this on 4.0.stable (Linux, GeForce RTX 4090 with NVIDIA 525.89.02).

And what is interesting is that they are rendered correctly while editing before a 3D mesh is actually placed.

The preview is a single mesh, while the final GridMap is a MultiMesh.

What's interesting is that this does not occur with MultiMeshInstance3D nodes. Here's an instance from a MultiMeshInstance3D on the top, and the GridMap at the bottom:

image

MRP with MultiMeshInstance3D added: racing_multimesh.zip

Leandro-170 commented 1 year ago

I've been facing this issue recently in a project of my own. At first, I thought it was my own GPU issues (I have a very old GPU, and have to rely on the Compatibility render to use Godot 4) but just now, I've found that meshes that have materials with the vertex_color_use_as_albedo property on render all black, and that disabling it seems to make them render properly.

In here, ground tiles were exported from Blender to a GLTF scene, then loaded as a scene in Godot, then exported to a MeshLibrary without any changes. image

In here, i reopened the scene, picked the grass plane mesh and made both itself and it's material unique, then unset vertex_color_use_as_albedo. image

I'm not sure if said property should behave like this - on my side, setting the property to true on a standalone MeshInstance's material does not show any visible effect. image

Wolfe2x7 commented 1 year ago

I confirm this bug affects any MultiMesh, including MultiMeshInstance3D, if and only if vertex colors are used in a shader. 4.1.1 Stable.

Hazarth commented 1 year ago

Yep, I encountered the same issue. Switching to Forward+ or Mobile is a simple workaround