aboutsummaryrefslogtreecommitdiff
path: root/engine/src/core-data/Common/ShaderLib/MultiSample.glsllib
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/core-data/Common/ShaderLib/MultiSample.glsllib')
-rw-r--r--engine/src/core-data/Common/ShaderLib/MultiSample.glsllib62
1 files changed, 62 insertions, 0 deletions
diff --git a/engine/src/core-data/Common/ShaderLib/MultiSample.glsllib b/engine/src/core-data/Common/ShaderLib/MultiSample.glsllib
new file mode 100644
index 0000000..0e5355c
--- /dev/null
+++ b/engine/src/core-data/Common/ShaderLib/MultiSample.glsllib
@@ -0,0 +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 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);
+} \ No newline at end of file