Resource limit exceeded: StageInfo { stage: Fragment, counters: ResourceData { buffers: 13, textures: 38, samplers: 17 }, pc_buffer: None, pc_limit: 0, sizes_buffer: Some(12), need_sizes_buffer: true, resources: {ResourceBinding { group: 0, binding: 0 }: BindTarget { buffer: Some(0), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 1 }: BindTarget { buffer: Some(1), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 2 }: BindTarget { buffer: None, texture: Some(0), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 3 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(0)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 4 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(1)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 5 }: BindTarget { buffer: None, texture: Some(1), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 6 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(2)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 7 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(3)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 8 }: BindTarget { buffer: Some(2), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 9 }: BindTarget { buffer: Some(3), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 10 }: BindTarget { buffer: Some(4), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 11 }: BindTarget { buffer: Some(5), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 12 }: BindTarget { buffer: Some(6), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 13 }: BindTarget { buffer: Some(7), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 15 }: BindTarget { buffer: Some(8), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 16 }: BindTarget { buffer: None, texture: Some(2), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 17 }: BindTarget { buffer: None, texture: Some(3), sampler: None, binding_array_size: Some(8), mutable: false }, ResourceBinding { group: 0, binding: 18 }: BindTarget { buffer: None, texture: Some(11), sampler: None, binding_array_size: Some(8), mutable: false }, ResourceBinding { group: 0, binding: 19 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(4)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 20 }: BindTarget { buffer: Some(9), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 21 }: BindTarget { buffer: None, texture: Some(19), sampler: None, binding_array_size: Some(8), mutable: false }, ResourceBinding { group: 0, binding: 22 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(5)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 23 }: BindTarget { buffer: None, texture: Some(27), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 24 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(6)), binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 29 }: BindTarget { buffer: None, texture: Some(28), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 0, binding: 30 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(7)), binding_array_size: None, mutable: false }, ResourceBinding { group: 1, binding: 0 }: BindTarget { buffer: Some(10), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 0 }: BindTarget { buffer: Some(11), texture: None, sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 1 }: BindTarget { buffer: None, texture: Some(29), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 2 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(8)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 3 }: BindTarget { buffer: None, texture: Some(30), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 4 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(9)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 5 }: BindTarget { buffer: None, texture: Some(31), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 6 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(10)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 7 }: BindTarget { buffer: None, texture: Some(32), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 8 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(11)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 9 }: BindTarget { buffer: None, texture: Some(33), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 10 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(12)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 11 }: BindTarget { buffer: None, texture: Some(34), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 12 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(13)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 15 }: BindTarget { buffer: None, texture: Some(35), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 16 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(14)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 17 }: BindTarget { buffer: None, texture: Some(36), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 18 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(15)), binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 19 }: BindTarget { buffer: None, texture: Some(37), sampler: None, binding_array_size: None, mutable: false }, ResourceBinding { group: 2, binding: 20 }: BindTarget { buffer: None, texture: None, sampler: Some(Resource(16)), binding_array_size: None, mutable: false }} }
2024-09-21T03:11:45.569610Z ERROR log: Handling wgpu errors as fatal by default
Looks like we're exceeding the limit on bindings. We might need to gate PCSS bindings on a feature flag, or change how we set up the bindings to only bind the actually used textures/samplers.
Edit: Looking a bit more into it, it looks like we're not hitting the texture limit. The limit is exclusively on samplers, maybe we can virtualize the samplers, as suggested here: google/filament#5788
Bevy version
417e6cc
Relevant system information
What you did
What went wrong
Additional information
Looks like we're exceeding the limit on bindings. We might need to gate PCSS bindings on a feature flag, or change how we set up the bindings to only bind the actually used textures/samplers.
Edit: Looking a bit more into it, it looks like we're not hitting the texture limit. The limit is exclusively on samplers, maybe we can virtualize the samplers, as suggested here: google/filament#5788