
# Objective Move Bevy UI's rendering into a dedicated crate. Motivations: * Allow the UI renderer to be used with other UI frameworks than `bevy_ui`. * Allow for using alternative renderers like Vello with `bevy_ui`. * It's difficult for rendering contributors to make changes and improvements to the UI renderer as it requires in-depth knowledge of the UI implementation. ## Solution Move the `render` and `ui_material` modules from `bevy_ui` into a new crate `bevy_ui_render`. ## Testing Important examples to check are `testbed_ui`, `testbed_full_ui`, `ui_material`, `viewport_node` and `gradients`. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
33 lines
805 B
WebGPU Shading Language
33 lines
805 B
WebGPU Shading Language
#import bevy_render::{
|
|
view::View,
|
|
globals::Globals,
|
|
}
|
|
#import bevy_ui::ui_vertex_output::UiVertexOutput
|
|
|
|
@group(0) @binding(0)
|
|
var<uniform> view: View;
|
|
@group(0) @binding(1)
|
|
var<uniform> globals: Globals;
|
|
|
|
@vertex
|
|
fn vertex(
|
|
@location(0) vertex_position: vec3<f32>,
|
|
@location(1) vertex_uv: vec2<f32>,
|
|
@location(2) size: vec2<f32>,
|
|
@location(3) border_widths: vec4<f32>,
|
|
@location(4) border_radius: vec4<f32>,
|
|
) -> UiVertexOutput {
|
|
var out: UiVertexOutput;
|
|
out.uv = vertex_uv;
|
|
out.position = view.clip_from_world * vec4<f32>(vertex_position, 1.0);
|
|
out.size = size;
|
|
out.border_widths = border_widths;
|
|
out.border_radius = border_radius;
|
|
return out;
|
|
}
|
|
|
|
@fragment
|
|
fn fragment(in: UiVertexOutput) -> @location(0) vec4<f32> {
|
|
return vec4<f32>(1.0);
|
|
}
|