struct Camera { view_pos: vec4, view: mat4x4, view_proj: mat4x4, inv_proj: mat4x4, inv_view: mat4x4, } @group(0) @binding(0) var camera: Camera; struct PositionColor { @location(0) position: vec3, @location(1) color: vec3, } struct VsOut { @builtin(position) frag_position: vec4, @location(0) color: vec3, } @vertex fn vs_main( v: PositionColor, ) -> VsOut { let frag_position = camera.view_proj * vec4(v.position, 1.0); return VsOut(frag_position, v.color); } @fragment fn fs_main( v: VsOut, ) -> @location(0) vec4 { return vec4(v.color, 1.0); }