struct _transform_Input { @location(0) position: vec3, @location(1) normal: vec3, @location(2) uv: vec2, } struct _transform_Output { @builtin(position) position: vec4, @location(0) uv: vec2, @location(1) normal: vec3, } struct Uniforms { model: mat4x4, view_proj: mat4x4, normal_mat: mat4x4, } @group(0) @binding(0) var uniforms: Uniforms; @vertex fn transform(input: _transform_Input) -> _transform_Output { var __luma_output: _transform_Output; let pos = input.position; let world_pos = (uniforms.model * vec4(pos, 1.0)); let clip_pos = (uniforms.view_proj * world_pos); __luma_output.position = clip_pos; __luma_output.uv = input.uv; __luma_output.normal = normalize((uniforms.normal_mat * vec4(input.normal, 0.0)).xyz); return __luma_output; }