bevy/crates/bevy_render/src
vero 7eadc1d467
Zero Copy Mesh (#15569)
# Objective

- Another step towards #15558

## Solution

- Instead of allocating a Vec and then having wgpu copy it into a
staging buffer, write directly into the staging buffer.
- gets rid of another hidden copy, in `pad_to_alignment`.

future work:
- why is there a gcd implementation in here (and its subpar, use
binary_gcd. its in the hot path, run twice for every mesh, every frame i
think?) make it better and put it in bevy_math
- zero-copy custom mesh api to avoid having to write out a Mesh from a
custom rep

## Testing

- lighting and many_cubes run fine (and slightly faster. havent
benchmarked though)

---

## Showcase

- look ma... no copies

at least when RenderAssetUsage is GPU only :3

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
Co-authored-by: Kristoffer Søholm <k.soeholm@gmail.com>
2024-10-04 21:24:44 +00:00
..
batching Remove remnant EntityHash and related types from bevy_utils (#15039) 2024-09-09 15:24:17 +00:00
camera Revert "Have EntityCommands methods consume self for easier chaining" (#15523) 2024-10-02 12:47:26 +00:00
diagnostic Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
mesh Zero Copy Mesh (#15569) 2024-10-04 21:24:44 +00:00
primitives Migrate meshes and materials to required components (#15524) 2024-10-01 21:33:17 +00:00
render_graph Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
render_phase Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
render_resource Split off bevy_image from bevy_render (#15650) 2024-10-04 20:16:47 +00:00
renderer Remove render_resource_wrapper (#15441) 2024-09-30 17:37:07 +00:00
texture Split off bevy_image from bevy_render (#15650) 2024-10-04 20:16:47 +00:00
view Migrate meshes and materials to required components (#15524) 2024-10-01 21:33:17 +00:00
alpha.rs Simpler lint fixes: makes ci lints work but disables a lint for now (#15376) 2024-09-24 11:42:59 +00:00
color_operations.wgsl move wgsl color operations from bevy_pbr to bevy_render (#13209) 2024-05-04 10:30:23 +00:00
extract_component.rs The Cooler 'Retain Rendering World' (#15320) 2024-09-30 18:51:43 +00:00
extract_instances.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
extract_param.rs Better warnings about invalid parameters (#15500) 2024-10-03 13:16:55 +00:00
extract_resource.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
globals.rs Refactor App and SubApp internals for better separation (#9202) 2024-03-31 03:16:10 +00:00
globals.wgsl Refactor Globals and View structs into separate shaders (#7512) 2023-02-11 17:55:18 +00:00
gpu_component_array_buffer.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
gpu_readback.rs Gpu readback (#15419) 2024-09-30 17:28:55 +00:00
lib.rs Split off bevy_image from bevy_render (#15650) 2024-10-04 20:16:47 +00:00
maths.wgsl add tonemapping LUT bindings for sprite and mesh2d pipelines (#13262) 2024-05-28 12:09:26 +00:00
pipelined_rendering.rs The Cooler 'Retain Rendering World' (#15320) 2024-09-30 18:51:43 +00:00
render_asset.rs Split off bevy_image from bevy_render (#15650) 2024-10-04 20:16:47 +00:00
settings.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
spatial_bundle.rs Clearer spatial bundle pub const docs (#14293) 2024-07-15 16:03:09 +00:00
storage.rs Simpler lint fixes: makes ci lints work but disables a lint for now (#15376) 2024-09-24 11:42:59 +00:00
world_sync.rs The Cooler 'Retain Rendering World' (#15320) 2024-09-30 18:51:43 +00:00