5 uniform mat4 model_matrix;
6 uniform mat4 view_matrix;
7 uniform mat4 proj_matrix;
9 #pragma MSP stage(vertex)
10 layout(location=0) in vec4 vertex;
13 out vec4 world_vertex = model_matrix*vertex;
14 vec3 eye_pos = inverse(view_matrix)[3].xyz;
15 out vec3 world_look_dir = normalize(world_vertex.xyz-eye_pos);
16 gl_Position = proj_matrix*view_matrix*world_vertex;
19 #pragma MSP stage(fragment)
20 layout(location=0) out vec4 frag_color;
21 float calculate_lighting(vec3 look_dir)
23 float intensity = 0.0;
24 for(int i=0; i<3; ++i)
25 intensity += max(dot(look_dir, light_dir[i]), 0.0);
30 float light_intensity = calculate_lighting(world_look_dir);
31 frag_color = vec4(vec3(light_intensity), 1.0);
36 /* Expected output: vertex
37 layout(location=0) uniform mat4 model_matrix;
38 layout(location=4) uniform mat4 view_matrix;
39 layout(location=8) uniform mat4 proj_matrix;
40 layout(location=0) in vec4 vertex;
41 layout(location=0) out vec4 world_vertex;
42 layout(location=1) out vec3 world_look_dir;
45 world_vertex = model_matrix*vertex;
46 world_look_dir = normalize(world_vertex.xyz-inverse(view_matrix)[3].xyz);
47 gl_Position = proj_matrix*view_matrix*world_vertex;
48 gl_Position.z = gl_Position.z*2.0-gl_Position.w;
52 /* Expected output: fragment
53 layout(binding=5) uniform Lighting
57 layout(location=0) out vec4 frag_color;
58 float calculate_lighting(vec3 look_dir)
60 float intensity = 0.0;
61 for(int i = 0; i<3; ++i)
62 intensity += max(dot(look_dir, light_dir[i]), 0.0);
65 layout(location=1) in vec3 world_look_dir;
68 frag_color = vec4(vec3(calculate_lighting(world_look_dir)), 1.0);