#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, }; @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; } @fragment fn fragment(in: VertexOutput) -> @location(0) vec4 { return in.color; }