| #version 460 compatibility |
| |
| #extension GL_ARB_bindless_texture: require |
| |
| #if !defined GL_ARB_bindless_texture |
| # error GL_ARB_bindless_texture is not defined |
| #elif GL_ARB_bindless_texture != 1 |
| # error GL_ARB_bindless_texture is not equal to 1 |
| #endif |
| |
| // Valid usage cases |
| layout(bindless_sampler) uniform sampler2D s0; // case0: bindless layout |
| in sampler2D s1; // case1: sampler as an input |
| uniform uvec2 s2; // case2: uvec2 as sampler constructor |
| uniform ivec2 s3; // case3: ivec2 as sampler constructor |
| uniform int index; |
| in sampler2D s4[2][3]; // case4: sampler arrays of arrays |
| uniform BB {sampler2D s5;} bbs5[2]; // case5: uniform block member as a sampler |
| in samplerBuffer s6; // case6: samplerBuffer input |
| uniform UBO9 {samplerBuffer s7;}; // case7: samplerBuffer as an uniform block member |
| buffer SSBO10 {samplerBuffer s8;}; // case8: samplerBuffer as an ssbo member |
| layout(rgba8, bindless_image) in image2D i9; // case9: bindless image as an input |
| |
| |
| uniform vec2 coord; // bindless coord 2-D |
| uniform int icoord; // bindless coord 1-D |
| out vec4 color0; |
| out vec4 color1; |
| out vec4 color2; |
| out vec4 color3; |
| out vec4 color4; |
| out vec4 color5; |
| out vec4 color6; |
| out vec4 color7; |
| out vec4 color8; |
| out vec4 color9; |
| |
| void main() |
| { |
| color0 = texture(s0, coord); |
| color1 = texture(s1, coord); |
| color2 = texture(sampler2D(s2), coord); |
| color3 = texture(sampler2D(s3), coord); |
| color4 = texture(s4[index][index], coord); |
| color5 = texture(bbs5[index].s5, coord); |
| color6 = texelFetch(s6, icoord); |
| color7 = texelFetch(s7, icoord); |
| color8 = texelFetch(s8, icoord); |
| color9 = imageLoad(i9, ivec2(0,0)); |
| } |