
# Objective - Add Ui Materials so that UI can render more complex and animated widgets. - Fixes #5607 ## Solution - Create a UiMaterial trait for specifying a Shader Asset and Bind Group Layout/Data. - Create a pipeline for rendering these Materials inside the Ui layout/tree. - Create a MaterialNodeBundle for simple spawning. ## Changelog - Created a `UiMaterial` trait for specifying a Shader asset and Bind Group. - Created a `UiMaterialPipeline` for rendering said Materials. - Added Example [`ui_material` ](https://github.com/MarkusTheOrt/bevy/blob/ui_material/examples/ui/ui_material.rs) for example usage. - Created [`UiVertexOutput`](https://github.com/MarkusTheOrt/bevy/blob/ui_material/crates/bevy_ui/src/render/ui_vertex_output.wgsl) export as VertexData for shaders. - Created [`material_ui`](https://github.com/MarkusTheOrt/bevy/blob/ui_material/crates/bevy_ui/src/render/ui_material.wgsl) shader as default for both Vertex and Fragment shaders. --------- Co-authored-by: ickshonpe <david.curthoys@googlemail.com> Co-authored-by: François <mockersf@gmail.com>
10 lines
352 B
WebGPU Shading Language
10 lines
352 B
WebGPU Shading Language
#define_import_path bevy_ui::ui_vertex_output
|
|
|
|
// The Vertex output of the default vertex shader for the Ui Material pipeline.
|
|
struct UiVertexOutput {
|
|
@location(0) uv: vec2<f32>,
|
|
// The size of the borders in UV space. Order is Left, Right, Top, Bottom.
|
|
@location(1) border_widths: vec4<f32>,
|
|
@builtin(position) position: vec4<f32>,
|
|
};
|