
fixes #6799 # Objective We should be able to reuse the `Globals` or `View` shader struct definitions from anywhere (including third party plugins) without needing to worry about defining unrelated shader defs. Also we'd like to refactor these structs to not be repeatedly defined. ## Solution Refactor both `Globals` and `View` into separate importable shaders. Use the imports throughout. Co-authored-by: Torstein Grindvik <52322338+torsteingrindvik@users.noreply.github.com>
36 lines
845 B
WebGPU Shading Language
36 lines
845 B
WebGPU Shading Language
#import bevy_render::view
|
|
|
|
@group(0) @binding(0)
|
|
var<uniform> view: View;
|
|
|
|
struct VertexOutput {
|
|
@location(0) uv: vec2<f32>,
|
|
@location(1) color: vec4<f32>,
|
|
@builtin(position) position: vec4<f32>,
|
|
};
|
|
|
|
@vertex
|
|
fn vertex(
|
|
@location(0) vertex_position: vec3<f32>,
|
|
@location(1) vertex_uv: vec2<f32>,
|
|
@location(2) vertex_color: vec4<f32>,
|
|
) -> VertexOutput {
|
|
var out: VertexOutput;
|
|
out.uv = vertex_uv;
|
|
out.position = view.view_proj * vec4<f32>(vertex_position, 1.0);
|
|
out.color = vertex_color;
|
|
return out;
|
|
}
|
|
|
|
@group(1) @binding(0)
|
|
var sprite_texture: texture_2d<f32>;
|
|
@group(1) @binding(1)
|
|
var sprite_sampler: sampler;
|
|
|
|
@fragment
|
|
fn fragment(in: VertexOutput) -> @location(0) vec4<f32> {
|
|
var color = textureSample(sprite_texture, sprite_sampler, in.uv);
|
|
color = in.color * color;
|
|
return color;
|
|
}
|