Skip to content

Shader per-instance uniform error spam if more than 1 mesh with that material is used in the editor #55253

@Whimfoome

Description

@Whimfoome

Godot version

4.0.dev.mono (1e71cab)

System information

Arch Linux, AMDGPU, Vulkan Mobile (Project Renderer)

Issue description

When you add shader material to a mesh, you are able to use instance uniform, so every instance can be with different value.

It works fine, until you add more than 1 of that mesh to a scene. Or something like that, I can't debug it exactly.

Now when you reload the editor and open that scene, I get somewhere like 3000 errors per second and you don't see the meshes. You can stop it by going to the original mesh scene and open it. Once opened you no longer get errors, even in the main scene.

This doesn't really affect the game, but it's really annoying since I have to open that scene every time I open my editor, or I get flooded by errors, and Godot crashes.

image

Error messages follow this pattern:

Uniforms supplied for set (3):
  Set: 3 Binding: 0 Type: UniformBuffer Length: 112
  Set: 3 Binding: 1 Type: Texture Length: 1
  Set: 3 Binding: 2 Type: Texture Length: 1
  Set: 3 Binding: 3 Type: Texture Length: 1
  are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:
  Set: 0 Binding: 1 Type: Sampler Length: 12
  Set: 0 Binding: 2 Type: Sampler Length: 1
  Set: 0 Binding: 3 Type: Sampler Length: 1
  Set: 0 Binding: 4 Type: Sampler Length: 1
  Set: 0 Binding: 5 Type: StorageBuffer Length: 0
  Set: 0 Binding: 6 Type: StorageBuffer Length: 0
  Set: 0 Binding: 7 Type: StorageBuffer Length: 0
  Set: 0 Binding: 8 Type: UniformBuffer Length: 4224
  Set: 0 Binding: 9 Type: StorageBuffer Length: 0
  Set: 0 Binding: 10 Type: StorageBuffer Length: 0
  Set: 0 Binding: 11 Type: Texture Length: 1
  Set: 0 Binding: 12 Type: Texture Length: 1
  Set: 0 Binding: 13 Type: StorageBuffer Length: 0
  Set: 0 Binding: 14 Type: StorageBuffer Length: 0
  Set: 1 Binding: 0 Type: UniformBuffer Length: 2784
  Set: 1 Binding: 2 Type: Texture Length: 1
  Set: 1 Binding: 3 Type: Texture Length: 1
  Set: 1 Binding: 4 Type: Texture Length: 1
  Set: 1 Binding: 5 Type: Texture Length: 1
  Set: 1 Binding: 6 Type: Texture Length: 2
  Set: 1 Binding: 9 Type: Texture Length: 1
  Set: 1 Binding: 10 Type: Texture Length: 1
  Set: 2 Binding: 0 Type: StorageBuffer Length: 0
  Set: 3 Binding: 0 Type: UniformBuffer Length: 16
  Set: 3 Binding: 1 Type: Texture Length: 1

Steps to reproduce

  1. Open minimal reproduction project
  2. When you open Scene.tscn, you should get many errors, and you shouldn't be able to see the Spheres.
  3. Open Sphere.tscn
  4. Open Scene.tscn and the Spheres should display properly, without errors.

This only affects the Editor, no errors are shown in the actual game.

Minimal reproduction project

ShaderInstanceError.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions