@@ -149,21 +149,29 @@ pub fn update_frusta<T: Component + CameraProjection + Send + Sync + 'static>(
149
149
150
150
pub fn check_visibility (
151
151
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
+ ) > ,
160
163
) > ,
161
164
) {
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
+
162
170
for ( mut visible_entities, frustum, maybe_view_mask) in view_query. iter_mut ( ) {
163
171
let view_mask = maybe_view_mask. copied ( ) . unwrap_or_default ( ) ;
164
172
let ( visible_entity_sender, visible_entity_receiver) = crossbeam_channel:: unbounded ( ) ;
165
173
166
- visible_entity_query. par_for_each_mut (
174
+ visible_entity_query. p1 ( ) . par_for_each_mut (
167
175
1024 ,
168
176
|(
169
177
entity,
@@ -174,9 +182,6 @@ pub fn check_visibility(
174
182
maybe_no_frustum_culling,
175
183
maybe_transform,
176
184
) | {
177
- // Reset visibility
178
- computed_visibility. is_visible = false ;
179
-
180
185
if !visibility. is_visible {
181
186
return ;
182
187
}
0 commit comments