struct VertexInput { @location(0) position: vec3, @location(1) uv: vec2, } struct Interpolated { @builtin(position) position: vec4, @location(0) uv: vec2, @location(1) normal: vec3, } struct Interpolated { @location(0) uv: vec2, @location(1) normal: vec3, } struct FragmentOutput { @location(0) color: vec4, } struct Uniforms { mvp: mat4x4, } @group(0) @binding(0) var uniforms: Uniforms; @vertex fn vs_main(input: VertexInput) -> Interpolated { var __luma_output: Interpolated; let clip_pos = (uniforms.mvp * vec4(input.position, 1.0)); __luma_output.position = clip_pos; __luma_output.uv = input.uv; __luma_output.normal = vec3(0.0, 1.0, 0.0); return __luma_output; } @fragment fn fs_main(input: Interpolated) -> FragmentOutput { var __luma_output: FragmentOutput; __luma_output.color = vec4(input.uv, 0.0, 1.0); return __luma_output; }