diff --git a/crates/bevy_render/src/render_resource/buffer.rs b/crates/bevy_render/src/render_resource/buffer.rs index c7a8a22b3c..87ea3e3e2a 100644 --- a/crates/bevy_render/src/render_resource/buffer.rs +++ b/crates/bevy_render/src/render_resource/buffer.rs @@ -13,4 +13,4 @@ bitflags::bitflags! { const STORAGE = 128; const INDIRECT = 256; } -} +} \ No newline at end of file diff --git a/crates/bevy_render/src/render_resource/render_resource_assignments.rs b/crates/bevy_render/src/render_resource/render_resource_assignments.rs index 3a03262a8a..755e263993 100644 --- a/crates/bevy_render/src/render_resource/render_resource_assignments.rs +++ b/crates/bevy_render/src/render_resource/render_resource_assignments.rs @@ -28,6 +28,27 @@ impl RenderResourceAssignment { } } +impl Hash for RenderResourceAssignment { + fn hash(&self, state: &mut H) { + match self { + RenderResourceAssignment::Buffer { + resource, + range, + dynamic_index: _, // dynamic_index is not a part of the binding + } => { + resource.hash(state); + range.hash(state); + } + RenderResourceAssignment::Texture(resource) => { + resource.hash(state); + } + RenderResourceAssignment::Sampler(resource) => { + resource.hash(state); + } + } + } +} + #[derive(Eq, PartialEq, Debug)] pub enum RenderResourceSetStatus { Changed(RenderResourceSetId), diff --git a/crates/bevy_render/src/render_resource/render_resource_set.rs b/crates/bevy_render/src/render_resource/render_resource_set.rs index 8acb9e8dc0..8dec1c0dea 100644 --- a/crates/bevy_render/src/render_resource/render_resource_set.rs +++ b/crates/bevy_render/src/render_resource/render_resource_set.rs @@ -46,8 +46,7 @@ impl RenderResourceSetBuilder { self.dynamic_uniform_indices.push(dynamic_index); } - let resource = assignment.get_resource(); - resource.hash(&mut self.hasher); + assignment.hash(&mut self.hasher); self.indexed_assignments .push(IndexedRenderResourceAssignment { index, assignment }); self