godotengine / godot

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

Vulkan: Error spam when using Particles Billboard mode on a BaseMaterial3D in GPUParticles3D #61516

Closed DillonSteyl closed 1 year ago

DillonSteyl commented 2 years ago

Godot version

4.0alpha8

System information

Windows 10, Vulkan, RTX 3060 Laptop GPU

Issue description

When creating a GPU Particles system with a standard process material and setting the material to "particle billboard", the following error is spammed to log: "Uniforms were never supplied for set (3) at the time of drawing, which are required by the pipeline" The particle rendering then seems to bug out (the material becomes black and the billboarding does not work at all).

Interestingly, this seems to be dependent on the order in which things are done (see the Steps to Reproduce). Adding a new process material after the billboard mode is set up seems to fix the issue?

Steps to reproduce

Minimal reproduction project

No response

akien-mga commented 2 years ago

I can reproduce the issue on Linux with AMD GPU (Mesa RADV drivers) in 4.0 alpha 11.

wacyym commented 2 years ago

Yes, Material3D in GPUparticles is completly broken - this bug is reproducing while almost any parameter is changed in: -transparency tab -shading tab -vertex color -emission -normal map -etc...

Tested on Godot_v4.0-alpha14_win64, Vulkan Clustered, AMD Ryzen 5300U. ERROR: Uniforms were never supplied for set (3) at the time of drawing, which are required by the pipeline at: (drivers/vulkan/rendering_device_vulkan.cpp:7784) ERROR: Condition "!shader" is true. Returning: RID() at: render_pipeline_create (drivers/vulkan/rendering_device_vulkan.cpp:6434) ERROR: Condition "pipeline.is_null()" is true. Returning: RID() at: _generate_version (servers/rendering/renderer_rd/pipeline_cache_rd.cpp:60) ERROR: This render pipeline requires (0) bytes of push constant data, supplied: (16) at: (drivers/vulkan/rendering_device_vulkan.cpp:7736) ERROR: No render pipeline was set before attempting to draw. at: (drivers/vulkan/rendering_device_vulkan.cpp:7753)

wacyym commented 2 years ago

Seems its some sort of GUI bug? Because i found a workaround: create mesh and add material to it, separately in filesystem, then dragndrop this mesh into draw pass property and it works.