* Fix for "Internal error wrong operand type built in unary operator function. Type: in sampler2DMS" if multisample is not being used (old ATI driver bug)

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8326 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
Sha..om 13 years ago
parent fd3c84ccce
commit d38b469de6
  1. 122
      engine/src/core-data/Common/ShaderLib/MultiSample.glsllib

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