diff --git a/crates/bevy_pbr/src/render/light.rs b/crates/bevy_pbr/src/render/light.rs index 6e6783caf676f..f3a51cad44ac0 100644 --- a/crates/bevy_pbr/src/render/light.rs +++ b/crates/bevy_pbr/src/render/light.rs @@ -26,7 +26,6 @@ use bevy_render::{ Extract, }; use bevy_transform::{components::GlobalTransform, prelude::Transform}; -use bevy_utils::FloatOrd; use bevy_utils::{ tracing::{error, warn}, HashMap, @@ -1653,7 +1652,7 @@ pub struct Shadow { } impl PhaseItem for Shadow { - type SortKey = FloatOrd; + type SortKey = CachedRenderPipelineId; #[inline] fn entity(&self) -> Entity { @@ -1662,7 +1661,7 @@ impl PhaseItem for Shadow { #[inline] fn sort_key(&self) -> Self::SortKey { - FloatOrd(self.distance) + self.pipeline } #[inline] @@ -1672,7 +1671,7 @@ impl PhaseItem for Shadow { #[inline] fn sort(items: &mut [Self]) { - radsort::sort_by_key(items, |item| item.distance); + items.sort_by_key(|item| item.pipeline); } } diff --git a/crates/bevy_render/src/render_resource/pipeline_cache.rs b/crates/bevy_render/src/render_resource/pipeline_cache.rs index 2dfe94913c1bb..336c8615ec932 100644 --- a/crates/bevy_render/src/render_resource/pipeline_cache.rs +++ b/crates/bevy_render/src/render_resource/pipeline_cache.rs @@ -50,7 +50,7 @@ pub enum Pipeline { type CachedPipelineId = usize; /// Index of a cached render pipeline in a [`PipelineCache`]. -#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] pub struct CachedRenderPipelineId(CachedPipelineId); impl CachedRenderPipelineId { @@ -59,7 +59,7 @@ impl CachedRenderPipelineId { } /// Index of a cached compute pipeline in a [`PipelineCache`]. -#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] pub struct CachedComputePipelineId(CachedPipelineId); impl CachedComputePipelineId {