mirror of
https://github.com/bevyengine/bevy
synced 2025-01-08 03:08:55 +00:00
fd232ad360
# 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>
23 lines
578 B
WebGPU Shading Language
23 lines
578 B
WebGPU Shading Language
#import bevy_render::view::View
|
|
#import bevy_ui::ui_vertex_output::UiVertexOutput
|
|
|
|
@group(0) @binding(0)
|
|
var<uniform> view: View;
|
|
|
|
@vertex
|
|
fn vertex(
|
|
@location(0) vertex_position: vec3<f32>,
|
|
@location(1) vertex_uv: vec2<f32>,
|
|
@location(2) border_widths: vec4<f32>,
|
|
) -> UiVertexOutput {
|
|
var out: UiVertexOutput;
|
|
out.uv = vertex_uv;
|
|
out.position = view.view_proj * vec4<f32>(vertex_position, 1.0);
|
|
out.border_widths = border_widths;
|
|
return out;
|
|
}
|
|
|
|
@fragment
|
|
fn fragment(in: UiVertexOutput) -> @location(0) vec4<f32> {
|
|
return vec4<f32>(1.0);
|
|
}
|