@@ -14,7 +14,7 @@ use bevy_render::{
14
14
PipelineCache , PolygonMode , RenderPipelineDescriptor , Shader , SpecializedMeshPipeline ,
15
15
SpecializedMeshPipelineError , SpecializedMeshPipelines ,
16
16
} ,
17
- view:: { ExtractedView , Msaa } ,
17
+ view:: { ExtractedView , Msaa , VisibleEntities } ,
18
18
RenderApp , RenderStage ,
19
19
} ;
20
20
use bevy_utils:: tracing:: error;
@@ -115,14 +115,14 @@ fn queue_wireframes(
115
115
Query < ( Entity , & Handle < Mesh > , & MeshUniform ) > ,
116
116
Query < ( Entity , & Handle < Mesh > , & MeshUniform ) , With < Wireframe > > ,
117
117
) > ,
118
- mut views : Query < ( & ExtractedView , & mut RenderPhase < Opaque3d > ) > ,
118
+ mut views : Query < ( & ExtractedView , & VisibleEntities , & mut RenderPhase < Opaque3d > ) > ,
119
119
) {
120
120
let draw_custom = opaque_3d_draw_functions
121
121
. read ( )
122
122
. get_id :: < DrawWireframes > ( )
123
123
. unwrap ( ) ;
124
124
let msaa_key = MeshPipelineKey :: from_msaa_samples ( msaa. samples ) ;
125
- for ( view, mut opaque_phase) in views. iter_mut ( ) {
125
+ for ( view, visible_entities , mut opaque_phase) in views. iter_mut ( ) {
126
126
let view_matrix = view. transform . compute_matrix ( ) ;
127
127
let view_row_2 = view_matrix. row ( 2 ) ;
128
128
@@ -154,9 +154,19 @@ fn queue_wireframes(
154
154
} ;
155
155
156
156
if wireframe_config. global {
157
- material_meshes. p0 ( ) . iter ( ) . for_each ( add_render_phase) ;
157
+ let query = material_meshes. p0 ( ) ;
158
+ visible_entities
159
+ . entities
160
+ . iter ( )
161
+ . filter_map ( |visible_entity| query. get ( * visible_entity) . ok ( ) )
162
+ . for_each ( add_render_phase) ;
158
163
} else {
159
- material_meshes. p1 ( ) . iter ( ) . for_each ( add_render_phase) ;
164
+ let query = material_meshes. p1 ( ) ;
165
+ visible_entities
166
+ . entities
167
+ . iter ( )
168
+ . filter_map ( |visible_entity| query. get ( * visible_entity) . ok ( ) )
169
+ . for_each ( add_render_phase) ;
160
170
}
161
171
}
162
172
}
0 commit comments