#import bevy_pbr::mesh_types #import bevy_pbr::mesh_view_bindings struct Vertex { [[location(0)]] position: vec3; #ifdef SKINNED [[location(4)]] joint_indexes: vec4; [[location(5)]] joint_weights: vec4; #endif }; [[group(1), binding(0)]] var mesh: Mesh; struct VertexOutput { [[builtin(position)]] clip_position: vec4; }; #ifdef SKINNED [[group(1), binding(1)]] var joint_matrices: SkinnedMesh; #import bevy_pbr::skinning #endif [[stage(vertex)]] fn vertex(vertex: Vertex) -> VertexOutput { #ifdef SKINNED let model = skin_model(vertex.joint_indexes, vertex.joint_weights); #else let model = mesh.model; #endif let world_position = model * vec4(vertex.position, 1.0); var out: VertexOutput; out.clip_position = view.view_proj * world_position; return out; } [[stage(fragment)]] fn fragment() -> [[location(0)]] vec4 { return vec4(1.0, 1.0, 1.0, 1.0); }