bevy/examples/shader
charlotte 40c26f80aa
Gpu readback (#15419)
# Objective

Adds a new `Readback` component to request for readback of a
`Handle<Image>` or `Handle<ShaderStorageBuffer>` to the CPU in a future
frame.

## Solution

We track the `Readback` component and allocate a target buffer to write
the gpu resource into and map it back asynchronously, which then fires a
trigger on the entity in the main world. This proccess is asynchronous,
and generally takes a few frames.

## Showcase

```rust
let mut buffer = ShaderStorageBuffer::from(vec![0u32; 16]);
buffer.buffer_description.usage |= BufferUsages::COPY_SRC;
let buffer = buffers.add(buffer);

commands
    .spawn(Readback::buffer(buffer.clone()))
    .observe(|trigger: Trigger<ReadbackComplete>| {
        info!("Buffer data from previous frame {:?}", trigger.event());
    });
```

---------

Co-authored-by: Kristoffer Søholm <k.soeholm@gmail.com>
Co-authored-by: IceSentry <IceSentry@users.noreply.github.com>
2024-09-30 17:28:55 +00:00
..
animate_shader.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
array_texture.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
compute_shader_game_of_life.rs Handle wgsl errors in the game of life example (#13624) 2024-06-03 13:31:56 +00:00
custom_phase_item.rs simplify std::mem references (#15315) 2024-09-19 21:28:16 +00:00
custom_post_processing.rs Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
custom_vertex_attribute.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
extended_material.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
fallback_image.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
gpu_readback.rs Gpu readback (#15419) 2024-09-30 17:28:55 +00:00
shader_defs.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
shader_instancing.rs simplify std::mem references (#15315) 2024-09-19 21:28:16 +00:00
shader_material_2d.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
shader_material_glsl.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
shader_material_screenspace_texture.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
shader_material.rs Highlight dependency on shader files in examples (#13824) 2024-06-12 14:16:01 +00:00
shader_prepass.rs Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
specialized_mesh_pipeline.rs Add example showing how to use SpecializedMeshPipeline (#14370) 2024-07-31 18:24:58 +00:00
storage_buffer.rs Broaden "Check for bevy_internal imports" CI Task (#15333) 2024-09-20 17:08:37 +00:00
texture_binding_array.rs Simpler lint fixes: makes ci lints work but disables a lint for now (#15376) 2024-09-24 11:42:59 +00:00