Skip to content
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

Vulkan: Volumetric Fog breaks when number of visible VoxelGI nodes changes #69565

Closed
Tracked by #55328 ...
RandomCatDude opened this issue Dec 4, 2022 · 2 comments · Fixed by #76437
Closed
Tracked by #55328 ...

Vulkan: Volumetric Fog breaks when number of visible VoxelGI nodes changes #69565

RandomCatDude opened this issue Dec 4, 2022 · 2 comments · Fixed by #76437

Comments

@RandomCatDude
Copy link
Contributor

Godot version

v4.0.beta7.official [0bb1e89]

System information

Manjaro Linux, Forward+, RX 570 (Mesa 22.3.0-devel)

Issue description

When the number of visible VoxelGI nodes changes (through occlusion culling, changing visibility, or baking a fresh VoxelGI), Volumetric Fog breaks, with the froxel buffer appearing to freeze.
Toggling Volumetric Fog off and back on again will fix it until the aforementioned case breaks it again.

The outputs gets flooded with a massive error while the bug is occurring. Click to expand.
Uniforms were never supplied for set (0) at the time of drawing, which are required by the pipeline
drivers/vulkan/rendering_device_vulkan.cpp:8292 - Condition "!uniform_set" is true.
Uniforms supplied for set (0):
Set: 0 Binding: 1 Type: Texture Writable: N Length: 1
Set: 0 Binding: 2 Type: Texture Writable: N Length: 1
Set: 0 Binding: 3 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 4 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 5 Type: UniformBuffer Writable: N Length: 3712
Set: 0 Binding: 6 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 7 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 8 Type: Image Writable: Y Length: 1
Set: 0 Binding: 9 Type: Image Writable: Y Length: 1
Set: 0 Binding: 10 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 11 Type: UniformBuffer Writable: N Length: 896
Set: 0 Binding: 12 Type: Texture Writable: N Length: 8
Set: 0 Binding: 13 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 14 Type: UniformBuffer Writable: N Length: 304
are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:
Set: 0 Binding: 1 Type: Texture Writable: N Length: 1
Set: 0 Binding: 2 Type: Texture Writable: N Length: 1
Set: 0 Binding: 3 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 4 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 5 Type: UniformBuffer Writable: N Length: 3712
Set: 0 Binding: 6 Type: StorageBuffer Writable: N Length: 0
Set: 0 Binding: 7 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 8 Type: Image Writable: Y Length: 1
Set: 0 Binding: 9 Type: Image Writable: Y Length: 1
Set: 0 Binding: 10 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 11 Type: UniformBuffer Writable: N Length: 896
Set: 0 Binding: 12 Type: Texture Writable: N Length: 8
Set: 0 Binding: 13 Type: Sampler Writable: N Length: 1
Set: 0 Binding: 14 Type: UniformBuffer Writable: N Length: 304
Set: 0 Binding: 15 Type: Texture Writable: N Length: 1
Set: 0 Binding: 16 Type: Image Writable: Y Length: 1
Set: 0 Binding: 17 Type: Image Writable: Y Length: 1
Set: 0 Binding: 18 Type: Image Writable: Y Length: 1
Set: 0 Binding: 19 Type: Texture Writable: N Length: 1
drivers/vulkan/rendering_device_vulkan.cpp:8292 - Condition "!uniform_set" is true.
Uniforms were never supplied for set (0) at the time of drawing, which are required by the pipeline
drivers/vulkan/rendering_device_vulkan.cpp:8292 - Condition "!uniform_set" is true.
Uniforms were never supplied for set (0) at the time of drawing, which are required by the pipeline

Video of the MRP below -- the box to the right represents the VoxelGI node.

2022-12-04.15-52-37.mp4

Steps to reproduce

MRP:

  1. Download and run. Click drag to rotate the camera around, and hit Space/Right Click to toggle the fog.
  2. Rotate camera such that the cube either goes out of view, or goes into view. Observe volumetric fog not working anymore.
  3. Toggle the fog off and back on to fix it, and test again if desired.

Manual:

  1. Create a new scene, add a WorldEnvironment node and enable Volumetric Fog.
  2. Add a FogVolume, or an intense light source to get a clear point of reference.
  3. Add a VoxelGI node to the scene. Bake it so that it becomes active.
  4. The volumetric fog will immediately break. Repair it by toggling it off and back on in the Environment
  5. Either toggle the VoxelGI's visibility, or move the camera around in-editor so that the VoxelGI volume either goes out of, or into view. Observe volumetric fog breaking in these cases. Repair it the same way as step 4 to test it again.

Minimal reproduction project

Volumetric Fog+VoxelGI Test.zip

@RandomCatDude
Copy link
Contributor Author

still reproducible as of v4.0.rc2.official [d2699dc7a]

@atirut-w
Copy link
Contributor

atirut-w commented Mar 5, 2023

Still happening on v4.0.stable.official [92bee43ad]. I am on Windows 11 with AMD Radeon RX 6700 XT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants