Parallelize legion::draw_transformed_meshes()

This commit is contained in:
mars 2022-06-30 00:21:17 -06:00
parent a5047f5875
commit 5f367c3108
1 changed files with 15 additions and 8 deletions

View File

@ -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)]