]> git.tdb.fi Git - libs/gl.git/blob - tests/glsl/use_parameter_in_loop.glsl
Fix GLSL test cases so they pass the basic tests
[libs/gl.git] / tests / glsl / use_parameter_in_loop.glsl
1 uniform Lighting
2 {
3         vec3 light_dir[3];
4 };
5 uniform mat4 model_matrix;
6 uniform mat4 view_matrix;
7 uniform mat4 proj_matrix;
8
9 #pragma MSP stage(vertex)
10 layout(location=0) in vec4 vertex;
11 void main()
12 {
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;
17 }
18
19 #pragma MSP stage(fragment)
20 layout(location=0) out vec4 frag_color;
21 float calculate_lighting(vec3 look_dir)
22 {
23         float intensity = 0.0;
24         for(int i=0; i<3; ++i)
25                 intensity += max(dot(look_dir, light_dir[i]), 0.0);
26         return intensity;
27 }
28 void main()
29 {
30         float light_intensity = calculate_lighting(world_look_dir);
31         frag_color = vec4(vec3(light_intensity), 1.0);
32 }
33
34 // Target API: OpenGL
35
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;
43 void main()
44 {
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;
49 }
50 */
51
52 /* Expected output: fragment
53 layout(binding=5) uniform Lighting
54 {
55         vec3 light_dir[3];
56 };
57 layout(location=0) out vec4 frag_color;
58 float calculate_lighting(vec3 look_dir)
59 {
60         float intensity = 0.0;
61         for(int i = 0; i<3; ++i)
62                 intensity += max(dot(look_dir, light_dir[i]), 0.0);
63         return intensity;
64 }
65 layout(location=1) in vec3 world_look_dir;
66 void main()
67 {
68         frag_color = vec4(vec3(calculate_lighting(world_look_dir)), 1.0);
69 }
70 */