@@ -149,21 +149,29 @@ pub fn update_frusta<T: Component + CameraProjection + Send + Sync + 'static>(
149149
150150pub fn check_visibility (
151151 mut view_query : Query < ( & mut VisibleEntities , & Frustum , Option < & RenderLayers > ) , With < Camera > > ,
152- mut visible_entity_query : Query < (
153- Entity ,
154- & Visibility ,
155- & mut ComputedVisibility ,
156- Option < & RenderLayers > ,
157- Option < & Aabb > ,
158- Option < & NoFrustumCulling > ,
159- Option < & GlobalTransform > ,
152+ mut visible_entity_query : ParamSet < (
153+ Query < & mut ComputedVisibility > ,
154+ Query < (
155+ Entity ,
156+ & Visibility ,
157+ & mut ComputedVisibility ,
158+ Option < & RenderLayers > ,
159+ Option < & Aabb > ,
160+ Option < & NoFrustumCulling > ,
161+ Option < & GlobalTransform > ,
162+ ) > ,
160163 ) > ,
161164) {
165+ // Reset the computed visibility to false
166+ for mut computed_visibility in visible_entity_query. p0 ( ) . iter_mut ( ) {
167+ computed_visibility. is_visible = false ;
168+ }
169+
162170 for ( mut visible_entities, frustum, maybe_view_mask) in view_query. iter_mut ( ) {
163171 let view_mask = maybe_view_mask. copied ( ) . unwrap_or_default ( ) ;
164172 let ( visible_entity_sender, visible_entity_receiver) = crossbeam_channel:: unbounded ( ) ;
165173
166- visible_entity_query. par_for_each_mut (
174+ visible_entity_query. p1 ( ) . par_for_each_mut (
167175 1024 ,
168176 |(
169177 entity,
@@ -174,9 +182,6 @@ pub fn check_visibility(
174182 maybe_no_frustum_culling,
175183 maybe_transform,
176184 ) | {
177- // Reset visibility
178- computed_visibility. is_visible = false ;
179-
180185 if !visibility. is_visible {
181186 return ;
182187 }
0 commit comments