mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 14:08:32 +00:00
Update Camera
's Frustum
only when its GlobalTransform
or CameraProjection
changed (#9092)
# Objective Update a camera's frustum only when needed. - Maybe a performance gain from not having to compute frusta when not needed, at the cost of change detection (?) - Making "fighting" with `update_frusta` less tedious, see https://github.com/bevyengine/bevy/issues/9077 and https://discord.com/channels/691052431525675048/743663924229963868/1127566087966433322 ## Solution Add change detection filter for `GlobalTransform` or `T: CameraProjection` in `update_frusta`, since those are the cases when the frustum needs to be updated. ## Note I don't think a migration guide and changelog are needed, but I'm not 100% sure, I could put something like "if you're fighting against `update_frusta`, you can do it only when there is a change to `GlobalTransform` or `CameraProjection` now", what do you think? It's not really a breaking change with a normal use case.
This commit is contained in:
parent
c4edbdba5f
commit
9d1a10273c
1 changed files with 4 additions and 1 deletions
|
@ -268,7 +268,10 @@ pub fn calculate_bounds(
|
|||
}
|
||||
|
||||
pub fn update_frusta<T: Component + CameraProjection + Send + Sync + 'static>(
|
||||
mut views: Query<(&GlobalTransform, &T, &mut Frustum)>,
|
||||
mut views: Query<
|
||||
(&GlobalTransform, &T, &mut Frustum),
|
||||
Or<(Changed<GlobalTransform>, Changed<T>)>,
|
||||
>,
|
||||
) {
|
||||
for (transform, projection, mut frustum) in &mut views {
|
||||
let view_projection =
|
||||
|
|
Loading…
Add table
Reference in a new issue