bevy/crates/bevy_pbr/src/meshlet
JMS55 fe58993577
METIS-based meshlet generation (#16947)
# Objective
Improve DAG building for virtual geometry

## Solution

- Use METIS to group triangles into meshlets which lets us minimize
locked vertices which improves simplification, instead of using meshopt
which prioritizes culling efficiency. Also some other minor tweaks.
- Currently most meshlets have 126 triangles, and not 128. Fixing this
might involve calling METIS recursively ourselves to manually bisect the
graph, not sure. Not going to attempt to fix this in this PR.

## Testing

- Did you test these changes? If so, how?
  - Tested on bunny.glb and cliff.glb
- Are there any parts that need more testing?
  - No
- How can other people (reviewers) test your changes? Is there anything
specific they need to know?
  - Download the new bunny asset, run the meshlet example.

---

## Showcase

New 

![image](https://github.com/user-attachments/assets/68f5d2f0-a4ca-41e1-90d5-35a2c6969c21)

Old

![image](https://github.com/user-attachments/assets/a3d97a09-773d-44b2-9990-25e1f6b51ec9)

---------

Co-authored-by: IceSentry <IceSentry@users.noreply.github.com>
2025-01-05 02:03:26 +00:00
..
asset.rs Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
cull_clusters.wgsl Meshlet fill cluster buffers rewritten (#15955) 2024-10-23 19:18:49 +00:00
downsample_depth.wgsl Meshlet software raster + start of cleanup (#14623) 2024-08-26 17:54:34 +00:00
dummy_visibility_buffer_resolve.wgsl Meshlet rendering (initial feature) (#10164) 2024-03-25 19:08:27 +00:00
fill_cluster_buffers.wgsl Meshlet fill cluster buffers rewritten (#15955) 2024-10-23 19:18:49 +00:00
from_mesh.rs METIS-based meshlet generation (#16947) 2025-01-05 02:03:26 +00:00
instance_manager.rs Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
material_pipeline_prepare.rs Refactor and simplify custom projections (#17063) 2025-01-01 20:44:24 +00:00
material_shade_nodes.rs Meshlet software raster + start of cleanup (#14623) 2024-08-26 17:54:34 +00:00
meshlet_bindings.wgsl Meshlet fill cluster buffers rewritten (#15955) 2024-10-23 19:18:49 +00:00
meshlet_mesh_manager.rs Update hashbrown to 0.15 (#15801) 2024-12-10 19:45:50 +00:00
meshlet_mesh_material.wgsl Meshlet misc (#13761) 2024-06-10 13:06:08 +00:00
meshlet_preview.png Meshlet rendering (initial feature) (#10164) 2024-03-25 19:08:27 +00:00
mod.rs Remove the type parameter from check_visibility, and only invoke it once. (#16812) 2024-12-17 04:43:45 +00:00
persistent_buffer_impls.rs Meshlet new error projection (#15846) 2024-10-22 20:14:30 +00:00
persistent_buffer.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
pipelines.rs Native unclipped depth on supported platforms (#16095) 2024-12-03 17:30:14 +00:00
remap_1d_to_2d_dispatch.wgsl Meshlet fill cluster buffers rewritten (#15955) 2024-10-23 19:18:49 +00:00
resolve_render_targets.wgsl More triangles/vertices per meshlet (#15023) 2024-09-08 17:55:57 +00:00
resource_manager.rs Meshlet fill cluster buffers rewritten (#15955) 2024-10-23 19:18:49 +00:00
visibility_buffer_hardware_raster.wgsl Native unclipped depth on supported platforms (#16095) 2024-12-03 17:30:14 +00:00
visibility_buffer_raster_node.rs Native unclipped depth on supported platforms (#16095) 2024-12-03 17:30:14 +00:00
visibility_buffer_resolve.wgsl Fix meshlet shaders for bindless mode. (#16825) 2024-12-24 02:39:18 +00:00
visibility_buffer_software_raster.wgsl Native unclipped depth on supported platforms (#16095) 2024-12-03 17:30:14 +00:00