1#extension GL_ARB_texture_multisample : enable
2
3uniform int m_NumSamples;
4uniform int m_NumSamplesDepth;
5
6#ifdef RESOLVE_MS
7    #define COLORTEXTURE sampler2DMS
8#else
9    #define COLORTEXTURE sampler2D
10#endif
11
12#ifdef RESOLVE_DEPTH_MS
13    #define DEPTHTEXTURE sampler2DMS
14#else
15    #define DEPTHTEXTURE sampler2D
16#endif
17
18// NOTE: Only define multisample functions if multisample is available and is being used!
19#if defined(GL_ARB_texture_multisample) && (defined(RESOLVE_MS) || defined(RESOLVE_DEPTH_MS))
20vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){
21      ivec2 iTexC = ivec2(texC * textureSize(tex));
22      vec4 color = vec4(0.0);
23      for (int i = 0; i < numSamples; i++){
24         color += texelFetch(tex, iTexC, i);
25      }
26      return color / numSamples;
27}
28
29vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sample){
30    ivec2 iTexC = ivec2(texC * textureSize(tex));
31    return texelFetch(tex, iTexC, sample);
32}
33
34vec4 getColor(in sampler2DMS tex, in vec2 texC){
35      return textureFetch(tex, texC, m_NumSamples);
36}
37
38vec4 getColorSingle(in sampler2DMS tex, in vec2 texC){
39    ivec2 iTexC = ivec2(texC * textureSize(tex));
40    return texelFetch(tex, iTexC, 0);
41}
42
43vec4 getDepth(in sampler2DMS tex,in vec2 texC){
44      return textureFetch(tex,texC,m_NumSamplesDepth);
45}
46#endif
47
48vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sample){
49    return texture2D(tex,texC);
50}
51
52vec4 getColor(in sampler2D tex, in vec2 texC){
53    return texture2D(tex,texC);
54}
55
56vec4 getColorSingle(in sampler2D tex, in vec2 texC){
57    return texture2D(tex, texC);
58}
59
60vec4 getDepth(in sampler2D tex,in vec2 texC){
61    return texture2D(tex,texC);
62}