1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-- Workflow vertex stage test: in/out/do plus top-level out assignments.
struct Uniforms
model: mat4
view_proj: mat4
normal_mat: mat4
end
uniform uniforms: Uniforms
vertex transform
in position: vec3
in normal: vec3
in uv: vec2
out position: vec4 @builtin(position)
out uv: vec2
out normal: vec3
do
let pos = position
let world_pos = uniforms.model * vec4(pos, 1.0)
let clip_pos = uniforms.view_proj * world_pos
out.position = clip_pos
out.uv = uv
out.normal = normalize((uniforms.normal_mat * vec4(normal, 0.0)).xyz)
end