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();
|
callbacks.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[system(for_each)]
|
#[system]
|
||||||
fn draw_transformed_meshes(
|
fn draw_transformed_meshes(
|
||||||
#[resource] mesh_pass: &pass::RenderPassBox<mesh::MeshPass>,
|
#[resource] mesh_pass: &pass::RenderPassBox<mesh::MeshPass>,
|
||||||
transform: &scene::Transform,
|
world: &SubWorld,
|
||||||
mesh: &scene::Mesh,
|
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 {
|
let meshes: Vec<_> = mesh_chunk
|
||||||
transform: transform.transform,
|
.into_iter()
|
||||||
mesh: mesh.mesh,
|
.map(|(transform, mesh)| mesh::TransformedMesh {
|
||||||
}]);
|
transform: transform.transform,
|
||||||
|
mesh: mesh.mesh,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
mesh_pass.add_transformed_meshes(&meshes);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#[system(for_each)]
|
#[system(for_each)]
|
||||||
|
|
Loading…
Reference in New Issue