#import bevy_pbr::mesh_types #import bevy_pbr::mesh_view_bindings [[group(1), binding(0)]] var mesh: Mesh; // NOTE: Bindings must come before functions that use them! #import bevy_pbr::mesh_functions struct Vertex { [[location(0)]] position: vec3; [[location(1)]] normal: vec3; [[location(2)]] uv: vec2; [[location(3)]] i_pos_scale: vec4; [[location(4)]] i_color: vec4; }; struct VertexOutput { [[builtin(position)]] clip_position: vec4; [[location(0)]] color: vec4; }; [[stage(vertex)]] fn vertex(vertex: Vertex) -> VertexOutput { let position = vertex.position * vertex.i_pos_scale.w + vertex.i_pos_scale.xyz; var out: VertexOutput; out.clip_position = mesh_position_local_to_clip(mesh.model, vec4(position, 1.0)); out.color = vertex.i_color; return out; } [[stage(fragment)]] fn fragment(in: VertexOutput) -> [[location(0)]] vec4 { return in.color; }