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}