bevy/examples/shader
robtfm c99351f7c2
allow extensions to StandardMaterial (#7820)
# Objective

allow extending `Material`s (including the built in `StandardMaterial`)
with custom vertex/fragment shaders and additional data, to easily get
pbr lighting with custom modifications, or otherwise extend a base
material.

# Solution

- added `ExtendedMaterial<B: Material, E: MaterialExtension>` which
contains a base material and a user-defined extension.
- added example `extended_material` showing how to use it
- modified AsBindGroup to have "unprepared" functions that return raw
resources / layout entries so that the extended material can combine
them

note: doesn't currently work with array resources, as i can't figure out
how to make the OwnedBindingResource::get_binding() work, as wgpu
requires a `&'a[&'a TextureView]` and i have a `Vec<TextureView>`.

# Migration Guide

manual implementations of `AsBindGroup` will need to be adjusted, the
changes are pretty straightforward and can be seen in the diff for e.g.
the `texture_binding_array` example.

---------

Co-authored-by: Robert Swain <robert.swain@gmail.com>
2023-10-17 21:28:08 +00:00
..
animate_shader.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
array_texture.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
compute_shader_game_of_life.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
custom_vertex_attribute.rs Add consuming builder methods for more ergonomic Mesh creation (#10056) 2023-10-09 19:47:41 +00:00
extended_material.rs allow extensions to StandardMaterial (#7820) 2023-10-17 21:28:08 +00:00
fallback_image.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
post_processing.rs Multiple Asset Sources (#9885) 2023-10-13 23:17:32 +00:00
shader_defs.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
shader_instancing.rs Use EntityHashMap<Entity, T> for render world entity storage for better performance (#9903) 2023-09-27 08:28:28 +00:00
shader_material_glsl.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
shader_material_screenspace_texture.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
shader_material.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
shader_prepass.rs Bevy Asset V2 (#8624) 2023-09-07 02:07:27 +00:00
texture_binding_array.rs allow extensions to StandardMaterial (#7820) 2023-10-17 21:28:08 +00:00