shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a ); color1 = (readtex0.rgb ); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (1.0 ); color1 = (readtex0.rgb ); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a ); color1 = (readtex0.rgb )*uPrimColor.rgb; if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a )*uPrimLod; color2 = (combined_color.rgb )*vec_color.rgb; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (vec_color.a ); color1 = (readtex0.rgb ); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); lowp vec4 readtex1 = readTex(uTex1, vTexCoord1, uFb8Bit[1] != 0, uFbFixedAlpha[1] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = mix(readtex0.a, readtex1.a, uEnvColor.a); color1 = mix(readtex0.rgb, readtex1.rgb, vec3(uEnvColor.a)); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a )*uPrimColor.a; color2 = (combined_color.rgb )*vec_color.rgb; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a )*uPrimColor.a; color1 = mix(uEnvColor.rgb, uPrimColor.rgb, readtex0.rgb); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a )*uPrimLod; color2 = (vec_color.rgb )*combined_color.rgb; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (uPrimColor.a ); color1 = (readtex0.rgb )*uPrimColor.rgb; if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a )*uPrimLod; color2 = (combined_color.rgb )*vec_color.rgb; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a )*uPrimColor.a; color1 = mix(uEnvColor.rgb, uPrimColor.rgb, readtex0.rgb); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a ); color2 = (combined_color.rgb )*vec_color.rgb; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a )*uEnvColor.a; color1 = (readtex0.rgb )*uEnvColor.rgb; if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a )*uEnvColor.a; color1 = mix(uPrimColor.rgb, uEnvColor.rgb, readtex0.rgb); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a ); color1 = (readtex0.rgb ); if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = (combined_color.a ); color2 = (combined_color.rgb ); if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); } shader_compile error: ERROR: 0:10: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:11: 'sampler2DMS' : precision statement not allowed for type ERROR: 0:48: 'sampler2DMS' : precision statement not allowed for type Error in fragment shader: #version 330 core #ifdef GL_NV_fragdepth #extension GL_NV_fragdepth : enable #endif #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif uniform sampler2D uTex0; uniform sampler2D uTex1; uniform lowp sampler2DMS uMSTex0; uniform lowp sampler2DMS uMSTex1; uniform lowp ivec2 uMSTexEnabled; layout (std140) uniform ColorsBlock { lowp vec4 uFogColor; lowp vec4 uCenterColor; lowp vec4 uScaleColor; lowp vec4 uBlendColor; lowp vec4 uEnvColor; lowp vec4 uPrimColor; lowp float uPrimLod; lowp float uK4; lowp float uK5; }; uniform lowp int uAlphaCompareMode; uniform lowp int uAlphaDitherMode; uniform lowp int uColorDitherMode; uniform lowp int uGammaCorrectionEnabled; uniform lowp int uFogUsage; uniform lowp ivec2 uFb8Bit; uniform lowp ivec2 uFbFixedAlpha; uniform lowp int uSpecialBlendMode; uniform lowp int uEnableAlphaTest; uniform lowp float uAlphaTestValue; uniform mediump vec2 uDepthScale; in lowp vec4 vShadeColor; in mediump vec2 vTexCoord0; in mediump vec2 vTexCoord1; in mediump vec2 vLodTexCoord; in lowp float vNumLights; in mediump float vFogFragCoord; lowp vec3 input_color; out lowp vec4 fragColor; lowp float snoise(); void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color); mediump float mipmap(out lowp vec4 readtex0, out lowp vec4 readtex1); lowp vec4 readTex(in sampler2D tex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); lowp vec4 readTexMS(in lowp sampler2DMS mstex, in mediump vec2 texCoord, in bool fb8bit, in bool fbFixedAlpha); bool depth_compare(); void colorNoiseDither(in lowp float _noise, inout lowp vec3 _color); void alphaNoiseDither(in lowp float _noise, inout lowp float _alpha); void main() { gl_FragDepth = clamp((gl_FragCoord.z * 2.0 - 1.0) * uDepthScale.s + uDepthScale.t, 0.0, 1.0); lowp vec4 vec_color, combined_color; lowp float alpha1, alpha2; lowp vec3 color1, color2; lowp vec4 readtex0 = readTex(uTex0, vTexCoord0, uFb8Bit[0] != 0, uFbFixedAlpha[0] != 0); input_color = vShadeColor.rgb; vec_color = vec4(input_color, vShadeColor.a); alpha1 = (readtex0.a )*vec_color.a; color1 = (readtex0.rgb )*vec_color.rgb; if (uSpecialBlendMode == 1) color1 = color1 * alpha1 + uBlendColor.rgb * (1.0 - alpha1); else if (uSpecialBlendMode == 2) color1 = uBlendColor.rgb * uFogColor.a + color1 * (1.0 - uFogColor.a); else if (uSpecialBlendMode == 3) color1 = color1 * uFogColor.a + uFogColor.rgb * (1.0 - uFogColor.a); combined_color = vec4(color1, alpha1); alpha2 = alpha1; color2 = color1; if (uEnableAlphaTest != 0) { lowp float alphaTestValue = (uAlphaCompareMode == 3 && alpha2 > 0.0) ? snoise() : uAlphaTestValue; if (alpha2 < alphaTestValue) discard; } if (uColorDitherMode == 2) colorNoiseDither(snoise(), color2); if (uAlphaDitherMode == 2) alphaNoiseDither(snoise(), alpha2); lowp int fogUsage = uFogUsage; if (fogUsage >= 256) fogUsage -= 256; if (fogUsage == 2) fragColor = vec4(color2, uFogColor.a); else if (fogUsage == 3) fragColor = uFogColor; else if (fogUsage == 4) fragColor = vec4(color2, uFogColor.a*alpha2); else fragColor = vec4(color2, alpha2); if (uFogUsage == 257) fragColor.rgb = mix(fragColor.rgb, uFogColor.rgb, vFogFragCoord); if (uGammaCorrectionEnabled != 0) fragColor.rgb = sqrt(fragColor.rgb); }