|
@@ -1,62 +1,62 @@
|
|
|
-#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 being used!
|
|
|
-#ifdef GL_ARB_texture_multisample
|
|
|
-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);
|
|
|
+#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);
|
|
|
}
|