]> git.tdb.fi Git - libs/gl.git/blob - tests/glsl/multiple_emitvertex.glsl
Allocate locations to interface variables
[libs/gl.git] / tests / glsl / multiple_emitvertex.glsl
1 uniform sampler2D tex;
2
3 #pragma MSP stage(vertex)
4 layout(location=0) in vec4 position;
5 void main()
6 {
7         out vec2 texcoord = position.xy*0.5+0.5;
8         gl_Position = position;
9 }
10
11 #pragma MSP stage(geometry)
12 layout(triangles) in;
13 layout(triangle_strip, max_vertices=3) out;
14 void main()
15 {
16         passthrough[0];
17         EmitVertex();
18         passthrough[1];
19         EmitVertex();
20         passthrough[2];
21         EmitVertex();
22 }
23
24 #pragma MSP stage(fragment)
25 layout(location=0) out vec4 frag_color;
26 void main()
27 {
28         frag_color = texture(tex, texcoord);
29 }
30
31 /* Expected output: vertex
32 layout(location=0) in vec4 position;
33 layout(location=0) out vec2 texcoord;
34 void main()
35 {
36         texcoord = position.xy*0.5+0.5;
37         gl_Position = position;
38 }
39 */
40
41 /* Expected output: geometry
42 layout(triangles) in;
43 layout(triangle_strip, max_vertices=3) out;
44 layout(location=0) in vec2 texcoord[];
45 layout(location=0) out vec2 _gs_out_texcoord;
46 void main()
47 {
48         gl_Position = gl_in[0].gl_Position;
49         _gs_out_texcoord = texcoord[0];
50         EmitVertex();
51         gl_Position = gl_in[1].gl_Position;
52         _gs_out_texcoord = texcoord[1];
53         EmitVertex();
54         gl_Position = gl_in[2].gl_Position;
55         _gs_out_texcoord = texcoord[2];
56         EmitVertex();
57 }
58 */
59
60 /* Expected output: fragment
61 layout(location=0) uniform sampler2D tex;
62 layout(location=0) out vec4 frag_color;
63 layout(location=0) in vec2 _gs_out_texcoord;
64 void main()
65 {
66         frag_color = texture(tex, _gs_out_texcoord);
67 }
68 */