Parallelize legion::draw_transformed_meshes()
This commit is contained in:
parent
a5047f5875
commit
5f367c3108
|
@ -105,18 +105,25 @@ fn present<T: RenderCallbacks>(#[resource] callbacks: &mut T) {
|
|||
callbacks.present();
|
||||
}
|
||||
|
||||
#[system(for_each)]
|
||||
#[system]
|
||||
fn draw_transformed_meshes(
|
||||
#[resource] mesh_pass: &pass::RenderPassBox<mesh::MeshPass>,
|
||||
transform: &scene::Transform,
|
||||
mesh: &scene::Mesh,
|
||||
world: &SubWorld,
|
||||
query: &mut Query<(&scene::Transform, &scene::Mesh)>,
|
||||
) {
|
||||
puffin::profile_function!();
|
||||
query.par_iter_chunks(world).for_each(|mesh_chunk| {
|
||||
puffin::profile_function!();
|
||||
|
||||
mesh_pass.add_transformed_meshes(&[mesh::TransformedMesh {
|
||||
transform: transform.transform,
|
||||
mesh: mesh.mesh,
|
||||
}]);
|
||||
let meshes: Vec<_> = mesh_chunk
|
||||
.into_iter()
|
||||
.map(|(transform, mesh)| mesh::TransformedMesh {
|
||||
transform: transform.transform,
|
||||
mesh: mesh.mesh,
|
||||
})
|
||||
.collect();
|
||||
|
||||
mesh_pass.add_transformed_meshes(&meshes);
|
||||
});
|
||||
}
|
||||
|
||||
#[system(for_each)]
|
||||
|
|
Loading…
Reference in New Issue