bevy-rust-gpu icon indicating copy to clipboard operation
bevy-rust-gpu copied to clipboard

Validation panic when loading a shader that accesses lighting data

Open ProfLander opened this issue 2 years ago • 3 comments

As rust-gpu doesn't support access specifiers for storage buffers, bevy panics with the following error when trying to load a shader that accesses its lighting data:

ERROR wgpu::backend::direct: Handling wgpu errors as fatal by default    
thread 'main' panicked at 'wgpu error: Validation Error

Caused by:
    In Device::create_render_pipeline
      note: label = `rust_gpu_pbr_opaque_mesh_pipeline`
    error matching FRAGMENT shader requirements against the pipeline
    shader global ResourceBinding { group: 0, binding: 6 } is not available in the layout pipeline layout
    storage class Storage { access: LOAD } doesn't match the shader Uniform

', /home/josh/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.14.2/src/backend/direct.rs:2403:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

This can be worked around by forcibly disabling storage buffers via WgpuSettings (which is default behaviour in the current BevyRustGpuPlugin), but precludes their usage entirely, which is not ideal given that read / write storage buffers are viable.

Upstream tracking issue: rust-gpu/#689

ProfLander avatar Mar 04 '23 02:03 ProfLander

In theory it would also be possible to remedy this on the bevy side, but that doesn't seem appropriate given that their lighting system is read-only as per GPU usage idioms. Patching in a read-write option for the sake of making a third-party crate's workaround viable isn't a great reason to do it.

ProfLander avatar Mar 04 '23 03:03 ProfLander

This is in the process of being fixed upstream (https://github.com/EmbarkStudios/rust-gpu/pull/1009) and has been tested as working with bevy-rust-gpu / bevy-pbr-rust.

ProfLander avatar Mar 20 '23 07:03 ProfLander

This is in the process of being fixed upstream

Sorry, that PR is not for the non-writable branch you tested, which I just opened the PR for:

  • https://github.com/EmbarkStudios/rust-gpu/pull/1011

eddyb avatar Mar 20 '23 22:03 eddyb