1#version 460 compatibility
2
3#extension GL_ARB_bindless_texture: require
4
5#if !defined GL_ARB_bindless_texture
6#  error GL_ARB_bindless_texture is not defined
7#elif GL_ARB_bindless_texture != 1
8#  error GL_ARB_bindless_texture is not equal to 1
9#endif
10
11// Valid usage cases
12layout(bindless_sampler) uniform sampler2D s0;      //  case0:  bindless layout
13in sampler2D s1;                                    //  case1:  sampler as an input
14uniform uvec2 s2;                                   //  case2:  uvec2 as sampler constructor
15uniform ivec2 s3;                                   //  case3:  ivec2 as sampler constructor
16uniform int index;
17in sampler2D s4[2][3];                              //  case4:  sampler arrays of arrays
18uniform BB {sampler2D s5;} bbs5[2];                 //  case5:  uniform block member as a sampler
19in samplerBuffer s6;                                //  case6:  samplerBuffer input
20uniform UBO9 {samplerBuffer s7;};                   //  case7:  samplerBuffer as an uniform block member
21buffer SSBO10 {samplerBuffer s8;};                  //  case8:  samplerBuffer as an ssbo member
22layout(rgba8, bindless_image) in image2D i9;        //  case9:  bindless image as an input
23
24
25uniform vec2 coord;                                 //  bindless coord 2-D
26uniform int icoord;                                 //  bindless coord 1-D
27out vec4 color0;
28out vec4 color1;
29out vec4 color2;
30out vec4 color3;
31out vec4 color4;
32out vec4 color5;
33out vec4 color6;
34out vec4 color7;
35out vec4 color8;
36out vec4 color9;
37
38void main()
39{
40    color0 = texture(s0, coord);
41    color1 = texture(s1, coord);
42    color2 = texture(sampler2D(s2), coord);
43    color3 = texture(sampler2D(s3), coord);
44    color4 = texture(s4[index][index], coord);
45    color5 = texture(bbs5[index].s5, coord);
46    color6 = texelFetch(s6, icoord);
47    color7 = texelFetch(s7, icoord);
48    color8 = texelFetch(s8, icoord);
49    color9 = imageLoad(i9, ivec2(0,0));
50}