#extension GL_ARB_texture_multisample : enable uniform int m_NumSamples; uniform int m_NumSamplesDepth; #ifdef RESOLVE_MS #define COLORTEXTURE sampler2DMS #else #define COLORTEXTURE sampler2D #endif #ifdef RESOLVE_DEPTH_MS #define DEPTHTEXTURE sampler2DMS #else #define DEPTHTEXTURE sampler2D #endif // NOTE: Only define multisample functions if multisample is available and is being used! #if defined(GL_ARB_texture_multisample) && (defined(RESOLVE_MS) || defined(RESOLVE_DEPTH_MS)) vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){ ivec2 iTexC = ivec2(texC * textureSize(tex)); vec4 color = vec4(0.0); for (int i = 0; i < numSamples; i++){ color += texelFetch(tex, iTexC, i); } return color / numSamples; } vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sample){ ivec2 iTexC = ivec2(texC * textureSize(tex)); return texelFetch(tex, iTexC, sample); } vec4 getColor(in sampler2DMS tex, in vec2 texC){ return textureFetch(tex, texC, m_NumSamples); } vec4 getColorSingle(in sampler2DMS tex, in vec2 texC){ ivec2 iTexC = ivec2(texC * textureSize(tex)); return texelFetch(tex, iTexC, 0); } vec4 getDepth(in sampler2DMS tex,in vec2 texC){ return textureFetch(tex,texC,m_NumSamplesDepth); } #endif vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sample){ return texture2D(tex,texC); } vec4 getColor(in sampler2D tex, in vec2 texC){ return texture2D(tex,texC); } vec4 getColorSingle(in sampler2D tex, in vec2 texC){ return texture2D(tex, texC); } vec4 getDepth(in sampler2D tex,in vec2 texC){ return texture2D(tex,texC); }