-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
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
CSGMesh is not updated when it's properties are changed #46610
Comments
Regression from e8804b9. And caused on chosen |
It can reproduce it from 3.2.4 beta2 to 3.2.4 RC 5. I have no idea about this commit is about viewport input will breaking mesh generating. |
Tested and I can confirm the regression seems to be caused by e8804b9 (reverting that commit solves it), even though I really don't see the link between the two :| Probably causes the 3D viewport not to be properly refreshed as it should be. Maybe here: godot/editor/plugins/spatial_editor_plugin.cpp Lines 4148 to 4152 in 8dd6fd0
|
BTW this error is raised when adding a
There's also some more errors when adding or updating a
|
For the reference, this issue doesn't seem reproducible in |
This is a multi-thread syncing issue. The multi-threading allows calls to the godot/scene/resources/primitive_meshes.cpp Lines 87 to 90 in 5942a70
The mesh_add_surface_from_arrays() returns and pending_request is set to false before it has created the surface on the RasterizerStorage :godot/drivers/gles3/rasterizer_storage_gles3.cpp Lines 3977 to 3978 in 5942a70
If an attempt is made to retrieve the array before the surface is created, if fails with
because there is nothing to retrieve yet: godot/scene/resources/primitive_meshes.cpp Lines 129 to 136 in 5942a70
Ironically, it "works" with more complex meshes, because the call to create the mesh doesn't reach the call to add the surface before the call to retrieve the array is made; so pending_request is still true . This causes a second (unnecessary) call to be made to update the mesh which doesn't return before the first call to update the mesh has finished creating the surface.
I suspect, e8804b9 exposed this preexisting bug, by bringing forward the call to retrieve the array, called by the godot/modules/csg/csg_gizmos.cpp Line 318 in 5942a70
This happens on 3.3 with both GLES2 and GLES3. It probably doesn't happen on master because of the entire |
v3.2.4.rc3.official
Windows 10 PRO; Radeon RX 570 8GB; Driver 20.12.1; GLES3
Issue description:
CSGMesh is not updated when it's properties are changed
Steps to reproduce:
Minimal reproduction project:
Godot.Engine.-.Evaluation.Abridged.2021-03-02.22-49-15-1.mp4
The text was updated successfully, but these errors were encountered: