raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ce7a6e710643069c895aed1d2dd9a1417389a742
commit ce7a6e710643069c895aed1d2dd9a1417389a742 Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Thu May 21 17:03:24 2015 +0900 update shaders --- .../gl_common/shader_3d/evas_gl_3d_shaders.x | 585 ++++++++++++++++++--- 1 file changed, 498 insertions(+), 87 deletions(-) diff --git a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x b/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x index 7685aa8..4185c44 100644 --- a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x +++ b/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x @@ -54,9 +54,56 @@ static const char vertex_color_frag_glsl[] = "uniform float uFogFactor;\n" "uniform vec4 uFogColor;\n" "#endif //FOG_ENABLED\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "void main()\n" "{\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(vColor.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = vColor;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" " gl_FragColor = vColor;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = vColor;\n" + "#endif //ALPHA_TEST_ENABLED\n" " \n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" @@ -129,17 +176,21 @@ static const char diffuse_frag_glsl[] = "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "vec3 Tex0CoordDiffuse = \n" + "vec3 Tex0CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" "#endif //DIFFUSE_TEXTURE\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" "uniform sampler2D uTextureDiffuse1;\n" "uniform float uTextureDiffuseWeight;\n" "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "vec3 Tex1CoordDiffuse = \n" + "vec3 Tex1CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" "#endif //DIFFUSE\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "void main() {\n" " vec4 color;\n" " \n" @@ -154,7 +205,50 @@ static const char diffuse_frag_glsl[] = " color = uMaterialDiffuse;\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" " \n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" @@ -309,6 +403,7 @@ static const char flat_frag_glsl[] = "float shadow;\n" "float pcf(vec4 lpos, float size)\n" " {\n" + "#ifndef GL_ES\n" " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" " float i, j, randx, randy, shadow;\n" " shadow = 0.0;\n" @@ -316,6 +411,10 @@ static const char flat_frag_glsl[] = " for (j = -4.0; j < 4.0; j++)\n" " shadow += float(smcoord.z <= texture2D(uShadowMap, smcoord.xy + vec2(i / 8.0, j / 8.0) * size).x);\n" " return shadow / 64.0;\n" + "#else\n" + " /*TODO Add algorithm generate shadow*/\n" + " return 1.0;\n" + "#endif //GL_ES\n" "}\n" "#endif //SHADOWED\n" "#ifdef DIFFUSE\n" @@ -324,14 +423,14 @@ static const char flat_frag_glsl[] = "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "vec3 Tex0CoordDiffuse = \n" + "vec3 Tex0CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" "#endif //DIFFUSE_TEXTURE\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" "uniform sampler2D uTextureDiffuse1;\n" "uniform float uTextureDiffuseWeight;\n" "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "vec3 Tex1CoordDiffuse = \n" + "vec3 Tex1CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" "#endif //DIFFUSE\n" @@ -342,14 +441,14 @@ static const char flat_frag_glsl[] = "#ifdef SPECULAR_TEXTURE\n" "uniform sampler2D uTextureSpecular0;\n" "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "vec3 Tex0CoordSpecular = \n" + "vec3 Tex0CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" "#endif //SPECULAR_TEXTURE\n" "#ifdef SPECULAR_TEXTURE_BLEND\n" "uniform sampler2D uTextureSpecular1;\n" "uniform float uTextureSpecularWeight;\n" "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "vec3 Tex1CoordSpecular = \n" + "vec3 Tex1CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" "#endif //SPECULAR_TEXTURE_BLEND\n" "#endif //SPECULAR\n" @@ -359,14 +458,14 @@ static const char flat_frag_glsl[] = "#ifdef AMBIENT_TEXTURE\n" "uniform sampler2D uTextureAmbient0;\n" "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "vec3 Tex0CoordAmbient = \n" + "vec3 Tex0CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" "#endif //AMBIENT_TEXTURE\n" "#ifdef AMBIENT_TEXTURE_BLEND\n" "uniform sampler2D uTextureAmbient1;\n" "uniform float uTextureAmbientWeight;\n" "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "vec3 Tex1CoordAmbient = \n" + "vec3 Tex1CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" "#endif //AMBIENT_TEXTURE_BLEND\n" "#endif //AMBIENT\n" @@ -375,20 +474,25 @@ static const char flat_frag_glsl[] = "#ifdef EMISSION_TEXTURE\n" "uniform sampler2D uTextureEmission0;\n" "uniform mat3 uTextureMatrixTransformEmission0;\n" - "vec3 Tex0CoordEmission = \n" + "vec3 Tex0CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" "#endif //EMISSION_TEXTURE\n" "#ifdef EMISSION_TEXTURE_BLEND\n" "uniform sampler2D uTextureEmission1;\n" "uniform float uTextureEmissionWeight;\n" "uniform mat3 uTextureMatrixTransformEmission1;\n" - "vec3 Tex1CoordEmission = \n" + "vec3 Tex1CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" "#endif //EMISSION_TEXTURE_BLEND\n" "#endif //EMISSION\n" - "void fragmentFlat()\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" + "vec4 fragmentFlat()\n" "{\n" " vec4 color;\n" + " vec4 fragcolor;\n" "#ifdef DIFFUSE\n" " \n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" @@ -402,9 +506,9 @@ static const char flat_frag_glsl[] = " color = uMaterialDiffuse;\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" - " gl_FragColor = uLightDiffuse * color * vFactor.x;\n" + " fragcolor = uLightDiffuse * color * vFactor.x;\n" "#else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#endif //DIFFUSE\n" "#ifdef SPECULAR\n" " \n" @@ -419,10 +523,10 @@ static const char flat_frag_glsl[] = " color = uMaterialSpecular;\n" "#endif //SPECULAR_TEXTURE\n" "#endif //SPECULAR_TEXTURE_BLEND\n" - " gl_FragColor += uLightSpecular * color * vFactor.y;\n" + " fragcolor += uLightSpecular * color * vFactor.y;\n" "#endif //SPECULAR\n" "#ifdef SHADOWED\n" - " gl_FragColor *= shadow;\n" + " fragcolor *= shadow;\n" "#endif //SHADOWED\n" "#ifdef AMBIENT\n" " \n" @@ -437,7 +541,7 @@ static const char flat_frag_glsl[] = " color = uMaterialAmbient;\n" "#endif //AMBIENT_TEXTURE\n" "#endif //AMBIENT_TEXTURE_BLEND\n" - " gl_FragColor += uLightAmbient * color;\n" + " fragcolor += uLightAmbient * color;\n" "#endif //AMBIENT\n" "#ifdef EMISSION\n" " \n" @@ -452,14 +556,60 @@ static const char flat_frag_glsl[] = " color = uMaterialEmission;\n" "#endif //EMISSION_TEXTURE\n" "#endif //EMISSION_TEXTURE_BLEND\n" - " gl_FragColor += color;\n" + " fragcolor += color;\n" "#endif //EMISSION\n" + " return fragcolor;\n" "}\n" "void main() {\n" + " vec4 color;\n" "#ifdef SHADOWED\n" " shadow = pcf(vLightPosition, 1.0 / 200.0);\n" "#endif //SHADOWED\n" - " fragmentFlat();\n" + " color = fragmentFlat();\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" " \n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" @@ -584,6 +734,7 @@ static const char phong_frag_glsl[] = "float shadow;\n" "float pcf(vec4 lpos, float size)\n" " {\n" + "#ifndef GL_ES\n" " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" " float i, j, randx, randy, shadow;\n" " shadow = 0.0;\n" @@ -591,6 +742,10 @@ static const char phong_frag_glsl[] = " for (j = -4.0; j < 4.0; j++)\n" " shadow += float(smcoord.z <= texture2D(uShadowMap, smcoord.xy + vec2(i / 8.0, j / 8.0) * size).x);\n" " return shadow / 64.0;\n" + "#else\n" + " /*TODO Add algorithm generate shadow*/\n" + " return 1.0;\n" + "#endif //GL_ES\n" "}\n" "#endif //SHADOWED\n" "#ifdef DIFFUSE\n" @@ -599,14 +754,14 @@ static const char phong_frag_glsl[] = "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "vec3 Tex0CoordDiffuse = \n" + "vec3 Tex0CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" "#endif //DIFFUSE_TEXTURE\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" "uniform sampler2D uTextureDiffuse1;\n" "uniform float uTextureDiffuseWeight;\n" "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "vec3 Tex1CoordDiffuse = \n" + "vec3 Tex1CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" "#endif //DIFFUSE\n" @@ -617,14 +772,14 @@ static const char phong_frag_glsl[] = "#ifdef SPECULAR_TEXTURE\n" "uniform sampler2D uTextureSpecular0;\n" "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "vec3 Tex0CoordSpecular = \n" + "vec3 Tex0CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" "#endif //SPECULAR_TEXTURE\n" "#ifdef SPECULAR_TEXTURE_BLEND\n" "uniform sampler2D uTextureSpecular1;\n" "uniform float uTextureSpecularWeight;\n" "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "vec3 Tex1CoordSpecular = \n" + "vec3 Tex1CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" "#endif //SPECULAR_TEXTURE_BLEND\n" "#endif //SPECULAR\n" @@ -634,14 +789,14 @@ static const char phong_frag_glsl[] = "#ifdef AMBIENT_TEXTURE\n" "uniform sampler2D uTextureAmbient0;\n" "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "vec3 Tex0CoordAmbient = \n" + "vec3 Tex0CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" "#endif //AMBIENT_TEXTURE\n" "#ifdef AMBIENT_TEXTURE_BLEND\n" "uniform sampler2D uTextureAmbient1;\n" "uniform float uTextureAmbientWeight;\n" "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "vec3 Tex1CoordAmbient = \n" + "vec3 Tex1CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" "#endif //AMBIENT_TEXTURE_BLEND\n" "#endif //AMBIENT\n" @@ -650,14 +805,14 @@ static const char phong_frag_glsl[] = "#ifdef EMISSION_TEXTURE\n" "uniform sampler2D uTextureEmission0;\n" "uniform mat3 uTextureMatrixTransformEmission0;\n" - "vec3 Tex0CoordEmission = \n" + "vec3 Tex0CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" "#endif //EMISSION_TEXTURE\n" "#ifdef EMISSION_TEXTURE_BLEND\n" "uniform sampler2D uTextureEmission1;\n" "uniform float uTextureEmissionWeight;\n" "uniform mat3 uTextureMatrixTransformEmission1;\n" - "vec3 Tex1CoordEmission = \n" + "vec3 Tex1CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" "#endif //EMISSION_TEXTURE_BLEND\n" "#endif //EMISSION\n" @@ -669,12 +824,17 @@ static const char phong_frag_glsl[] = "#ifdef LIGHT_ATTENUATION\n" "varying float vLightDist;\n" "#endif //LIGHT_ATTENUATION\n" - "void fragmentPhong()\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" + "vec4 fragmentPhong()\n" "{\n" " vec3 normal = normalize(vNormal);\n" " vec3 lv = normalize(vLightVector);\n" " float factor = dot(lv, normal);\n" " vec4 color;\n" + " vec4 fragcolor;\n" "#ifdef LIGHT_SPOT\n" " float f = dot(-lv, normalize(uLightSpotDir));\n" " if (f > uLightSpotCutoffCos)\n" @@ -698,9 +858,9 @@ static const char phong_frag_glsl[] = " color = uMaterialDiffuse;\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" - " gl_FragColor = uLightDiffuse * color * factor;\n" + " fragcolor = uLightDiffuse * color * factor;\n" "#else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#endif //DIFFUSE\n" " /* Specular term. */\n" "#ifdef SPECULAR\n" @@ -720,14 +880,14 @@ static const char phong_frag_glsl[] = " color = uMaterialSpecular;\n" "#endif //SPECULAR_TEXTURE\n" "#endif //SPECULAR_TEXTURE_BLEND\n" - " gl_FragColor += uLightSpecular * color * factor;\n" + " fragcolor += uLightSpecular * color * factor;\n" " }\n" "#endif\n" " }\n" " else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#ifdef SHADOWED\n" - " gl_FragColor *= shadow;\n" + " fragcolor *= shadow;\n" "#endif //SHADOWED\n" "#ifdef AMBIENT\n" " \n" @@ -742,11 +902,11 @@ static const char phong_frag_glsl[] = " color = uMaterialAmbient;\n" "#endif //AMBIENT_TEXTURE\n" "#endif //AMBIENT_TEXTURE_BLEND\n" - " gl_FragColor += uLightAmbient * color;\n" + " fragcolor += uLightAmbient * color;\n" "#endif\n" " /* Light attenuation. */\n" "#ifdef LIGHT_ATTENUATION\n" - " gl_FragColor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" + " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" "#endif\n" " /* Emission term. */\n" "#ifdef EMISSION\n" @@ -762,15 +922,61 @@ static const char phong_frag_glsl[] = " color = uMaterialEmission;\n" "#endif //EMISSION_TEXTURE\n" "#endif //EMISSION_TEXTURE_BLEND\n" - " gl_FragColor += color;\n" + " fragcolor += color;\n" "#endif\n" + " return fragcolor;\n" "}\n" "void main()\n" "{\n" + " vec4 color;\n" "#ifdef SHADOWED\n" " shadow = pcf(vLightPosition, 1.0 / 300.0);\n" "#endif //SHADOWED\n" - " fragmentPhong();\n" + " color = fragmentPhong();\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" " \n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" @@ -952,6 +1158,7 @@ static const char normal_map_frag_glsl[] = "float shadow;\n" "float pcf(vec4 lpos, float size)\n" " {\n" + "#ifndef GL_ES\n" " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" " float i, j, randx, randy, shadow;\n" " shadow = 0.0;\n" @@ -959,21 +1166,29 @@ static const char normal_map_frag_glsl[] = " for (j = -4.0; j < 4.0; j++)\n" " shadow += float(smcoord.z <= texture2D(uShadowMap, smcoord.xy + vec2(i / 8.0, j / 8.0) * size).x);\n" " return shadow / 64.0;\n" + "#else\n" + " /*TODO Add algorithm generate shadow*/\n" + " return 1.0;\n" + "#endif //GL_ES\n" "}\n" "#endif //SHADOWED\n" "#ifdef NORMAL_TEXTURE\n" "uniform sampler2D uTextureNormal0;\n" "uniform mat3 uTextureMatrixTransformNormal0;\n" - "vec3 Tex0CoordNormal = \n" + "vec3 Tex0CoordNormal =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" "#endif //NORMAL_TEXTURE\n" "#ifdef NORMAL_TEXTURE_BLEND\n" "uniform sampler2D uTextureNormal1;\n" "uniform float uTextureNormalWeight;\n" "uniform mat3 uTextureMatrixTransformNormal1;\n" - "vec3 Tex1CoordNormal = \n" + "vec3 Tex1CoordNormal =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" "#endif //NORMAL_TEXTURE_BLEND\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "#ifndef VERTEX_TANGENT\n" "varying vec3 vNormal;\n" "#endif //VERTEX_TANGENT\n" @@ -983,14 +1198,14 @@ static const char normal_map_frag_glsl[] = "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "vec3 Tex0CoordDiffuse = \n" + "vec3 Tex0CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" "#endif //DIFFUSE_TEXTURE\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" "uniform sampler2D uTextureDiffuse1;\n" "uniform float uTextureDiffuseWeight;\n" "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "vec3 Tex1CoordDiffuse = \n" + "vec3 Tex1CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" "#endif //DIFFUSE\n" @@ -1001,14 +1216,14 @@ static const char normal_map_frag_glsl[] = "#ifdef SPECULAR_TEXTURE\n" "uniform sampler2D uTextureSpecular0;\n" "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "vec3 Tex0CoordSpecular = \n" + "vec3 Tex0CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" "#endif //SPECULAR_TEXTURE\n" "#ifdef SPECULAR_TEXTURE_BLEND\n" "uniform sampler2D uTextureSpecular1;\n" "uniform float uTextureSpecularWeight;\n" "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "vec3 Tex1CoordSpecular = \n" + "vec3 Tex1CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" "#endif //SPECULAR_TEXTURE_BLEND\n" "#endif //SPECULAR\n" @@ -1018,14 +1233,14 @@ static const char normal_map_frag_glsl[] = "#ifdef AMBIENT_TEXTURE\n" "uniform sampler2D uTextureAmbient0;\n" "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "vec3 Tex0CoordAmbient = \n" + "vec3 Tex0CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" "#endif //AMBIENT_TEXTURE\n" "#ifdef AMBIENT_TEXTURE_BLEND\n" "uniform sampler2D uTextureAmbient1;\n" "uniform float uTextureAmbientWeight;\n" "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "vec3 Tex1CoordAmbient = \n" + "vec3 Tex1CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" "#endif //AMBIENT_TEXTURE_BLEND\n" "#endif //AMBIENT\n" @@ -1034,14 +1249,14 @@ static const char normal_map_frag_glsl[] = "#ifdef EMISSION_TEXTURE\n" "uniform sampler2D uTextureEmission0;\n" "uniform mat3 uTextureMatrixTransformEmission0;\n" - "vec3 Tex0CoordEmission = \n" + "vec3 Tex0CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" "#endif //EMISSION_TEXTURE\n" "#ifdef EMISSION_TEXTURE_BLEND\n" "uniform sampler2D uTextureEmission1;\n" "uniform float uTextureEmissionWeight;\n" "uniform mat3 uTextureMatrixTransformEmission1;\n" - "vec3 Tex1CoordEmission = \n" + "vec3 Tex1CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" "#endif //EMISSION_TEXTURE_BLEND\n" "#endif //EMISSION\n" @@ -1073,11 +1288,12 @@ static const char normal_map_frag_glsl[] = " return normalize(tbn * normal);\n" "}\n" "#endif //VERTEX_TANGENT\n" - "void fragmentNormalMap()\n" + "vec4 fragmentNormalMap()\n" "{\n" " float factor;\n" " vec3 normal;\n" " vec4 color;\n" + " vec4 fragcolor;\n" "#ifdef NORMAL_TEXTURE_BLEND\n" " normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a;\n" " normal += texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).rgb / texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a *\n" @@ -1114,9 +1330,9 @@ static const char normal_map_frag_glsl[] = " color = uMaterialDiffuse;\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" - " gl_FragColor = uLightDiffuse * color * factor;\n" + " fragcolor = uLightDiffuse * color * factor;\n" "#else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#endif //DIFFUSE\n" "#ifdef SPECULAR\n" " factor = dot(normalize(vLightHalfVector), normal);\n" @@ -1135,15 +1351,15 @@ static const char normal_map_frag_glsl[] = " color = uMaterialSpecular;\n" "#endif //SPECULAR_TEXTURE\n" "#endif //SPECULAR_TEXTURE_BLEND\n" - " gl_FragColor += uLightSpecular * color * factor;\n" + " fragcolor += uLightSpecular * color * factor;\n" " }\n" "#endif //SPECULAR\n" "#ifdef SHADOWED\n" - " gl_FragColor *= shadow;\n" + " fragcolor *= shadow;\n" "#endif //SHADOWED\n" " }\n" " else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#ifdef AMBIENT\n" " \n" "#ifdef AMBIENT_TEXTURE_BLEND\n" @@ -1157,10 +1373,10 @@ static const char normal_map_frag_glsl[] = " color = uMaterialAmbient;\n" "#endif //AMBIENT_TEXTURE\n" "#endif //AMBIENT_TEXTURE_BLEND\n" - " gl_FragColor += uLightAmbient * color;\n" + " fragcolor += uLightAmbient * color;\n" "#endif //AMBIENT\n" "#ifdef LIGHT_ATTENUATION\n" - " gl_FragColor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" + " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" "#endif //LIGHT_ATTENUATION\n" "#ifdef EMISSION\n" " \n" @@ -1175,14 +1391,60 @@ static const char normal_map_frag_glsl[] = " color = uMaterialEmission;\n" "#endif //EMISSION_TEXTURE\n" "#endif //EMISSION_TEXTURE_BLEND\n" - " gl_FragColor += color;\n" + " fragcolor += color;\n" "#endif //EMISSION\n" + " return fragcolor;\n" "}\n" "void main() {\n" + " vec4 color;\n" "#ifdef SHADOWED\n" " shadow = pcf(vLightPosition, 1.0 / 200.0);\n" "#endif //SHADOWED\n" - " fragmentNormalMap();\n" + " color = fragmentNormalMap();\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" @@ -1249,6 +1511,10 @@ static const char shadow_map_frag_glsl[] = "#ifdef NEED_TEX_COORD\n" "varying vec2 vTexCoord;\n" "#endif //TEX_COORD\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "#ifdef DIFFUSE\n" "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" @@ -1266,21 +1532,62 @@ static const char shadow_map_frag_glsl[] = "#endif //DIFFUSE\n" "#endif //ALPHA_TEST_ENABLED\n" "void main() {\n" + " vec4 color;\n" "#ifndef NEED_TEX_COORD\n" " gl_FragColor = vec4(1);\n" "#endif\n" "#ifdef ALPHA_TEST_ENABLED\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " gl_FragColor = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) *\n" + " color = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) *\n" " uTextureDiffuseWeight + texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)) *\n" " (1.0 - uTextureDiffuseWeight));\n" "#else\n" "#ifdef DIFFUSE_TEXTURE\n" - " gl_FragColor = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) ;\n" + " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) ;\n" "#else\n" - " gl_FragColor = vec4(1);\n" + " color = vec4(1);\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" "#endif //ALPHA_TEST_ENABLED\n" " gl_FragColor.r = gl_FragCoord.z;\n" "}\n"; @@ -1319,9 +1626,57 @@ static const char color_pick_frag_glsl[] = "precision lowp sampler2D;\n" "#endif\n" "uniform float uColorPick;\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "void main()\n" "{\n" - " gl_FragColor = vec4(uColorPick);\n" + " vec4 color = vec4(uColorPick);\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" "}\n"; static const char parallax_occlusion_vert_glsl[] = @@ -1454,12 +1809,19 @@ static const char parallax_occlusion_frag_glsl[] = "varying vec3 vLightHalfVector;\n" "varying vec3 vEyeVector;\n" "uniform sampler2D uTextureNormal0;\n" - "uniform mat3 uTextureMatrixTransformNormal0;\n" + "uniform mat3 uTextureMatrixTransformNormal0;\n" "#ifdef NEED_TEX_COORD\n" "varying vec2 vTexCoord;\n" - "vec3 Tex0CoordNormal = \n" + "vec3 Tex0CoordNormal =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" "#endif //TEX_COORD\n" + "#ifdef NORMAL_TEXTURE_BLEND\n" + "uniform sampler2D uTextureNormal1;\n" + "uniform float uTextureNormalWeight;\n" + "uniform mat3 uTextureMatrixTransformNormal1;\n" + "vec3 Tex1CoordNormal =\n" + " vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" + "#endif //NORMAL_TEXTURE_BLEND\n" "#ifdef FOG_ENABLED\n" "uniform float uFogFactor;\n" "uniform vec4 uFogColor;\n" @@ -1470,6 +1832,7 @@ static const char parallax_occlusion_frag_glsl[] = "float shadow;\n" "float pcf(vec4 lpos, float size)\n" " {\n" + "#ifndef GL_ES\n" " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" " float i, j, randx, randy, shadow;\n" " shadow = 0.0;\n" @@ -1477,29 +1840,26 @@ static const char parallax_occlusion_frag_glsl[] = " for (j = -4.0; j < 4.0; j++)\n" " shadow += float(smcoord.z <= texture2D(uShadowMap, smcoord.xy + vec2(i / 8.0, j / 8.0) * size).x);\n" " return shadow / 64.0;\n" + "#else\n" + " /*TODO Add algorithm generate shadow*/\n" + " return 1.0;\n" + "#endif //GL_ES\n" "}\n" "#endif //SHADOWED\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - "uniform sampler2D uTextureNormal1;\n" - "uniform float uTextureNormalWeight;\n" - "uniform mat3 uTextureMatrixTransformNormal1;\n" - "vec3 Tex1CoordNormal = \n" - " vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" "#ifdef DIFFUSE\n" "uniform vec4 uMaterialDiffuse;\n" "uniform vec4 uLightDiffuse;\n" "#ifdef DIFFUSE_TEXTURE\n" "uniform sampler2D uTextureDiffuse0;\n" "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "vec3 Tex0CoordDiffuse = \n" + "vec3 Tex0CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" "#endif //DIFFUSE_TEXTURE\n" "#ifdef DIFFUSE_TEXTURE_BLEND\n" "uniform sampler2D uTextureDiffuse1;\n" "uniform float uTextureDiffuseWeight;\n" "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "vec3 Tex1CoordDiffuse = \n" + "vec3 Tex1CoordDiffuse =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" "#endif //DIFFUSE\n" @@ -1510,14 +1870,14 @@ static const char parallax_occlusion_frag_glsl[] = "#ifdef SPECULAR_TEXTURE\n" "uniform sampler2D uTextureSpecular0;\n" "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "vec3 Tex0CoordSpecular = \n" + "vec3 Tex0CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" "#endif //SPECULAR_TEXTURE\n" "#ifdef SPECULAR_TEXTURE_BLEND\n" "uniform sampler2D uTextureSpecular1;\n" "uniform float uTextureSpecularWeight;\n" "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "vec3 Tex1CoordSpecular = \n" + "vec3 Tex1CoordSpecular =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" "#endif //SPECULAR_TEXTURE_BLEND\n" "#endif //SPECULAR\n" @@ -1527,14 +1887,14 @@ static const char parallax_occlusion_frag_glsl[] = "#ifdef AMBIENT_TEXTURE\n" "uniform sampler2D uTextureAmbient0;\n" "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "vec3 Tex0CoordAmbient = \n" + "vec3 Tex0CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" "#endif //AMBIENT_TEXTURE\n" "#ifdef AMBIENT_TEXTURE_BLEND\n" "uniform sampler2D uTextureAmbient1;\n" "uniform float uTextureAmbientWeight;\n" "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "vec3 Tex1CoordAmbient = \n" + "vec3 Tex1CoordAmbient =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" "#endif //AMBIENT_TEXTURE_BLEND\n" "#endif //AMBIENT\n" @@ -1543,14 +1903,14 @@ static const char parallax_occlusion_frag_glsl[] = "#ifdef EMISSION_TEXTURE\n" "uniform sampler2D uTextureEmission0;\n" "uniform mat3 uTextureMatrixTransformEmission0;\n" - "vec3 Tex0CoordEmission = \n" + "vec3 Tex0CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" "#endif //EMISSION_TEXTURE\n" "#ifdef EMISSION_TEXTURE_BLEND\n" "uniform sampler2D uTextureEmission1;\n" "uniform float uTextureEmissionWeight;\n" "uniform mat3 uTextureMatrixTransformEmission1;\n" - "vec3 Tex1CoordEmission = \n" + "vec3 Tex1CoordEmission =\n" " vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" "#endif //EMISSION_TEXTURE_BLEND\n" "#endif //EMISSION\n" @@ -1562,6 +1922,10 @@ static const char parallax_occlusion_frag_glsl[] = "#ifdef LIGHT_ATTENUATION\n" "varying float vLightDist;\n" "#endif //LIGHT_ATTENUATION\n" + "#ifdef GL_ES\n" + "uniform int uAlphaTestComparison;\n" + "uniform float uAlphaTestRefValue;\n" + "#endif //GL_ES\n" "const float parallaxScale = 0.2;\n" "vec2 parallaxMapping(in vec3 view, in vec2 tex, out float parallaxHeight)\n" "{\n" @@ -1606,11 +1970,12 @@ static const char parallax_occlusion_frag_glsl[] = " parallaxHeight = curLayerHeight + prevH * weight + nextH * (1.0 - weight);\n" " return finalTexCoords;\n" "}\n" - "void fragmentParallaxMap()\n" + "vec4 fragmentParallaxMap()\n" "{\n" " float factor;\n" " vec3 normal;\n" " vec4 color;\n" + " vec4 fragcolor;\n" " float parallaxHeight;\n" " vec2 tex = parallaxMapping(vEyeVector, vec2(Tex0CoordNormal), parallaxHeight);\n" " vec3 lv = normalize(vLightVector);\n" @@ -1644,9 +2009,9 @@ static const char parallax_occlusion_frag_glsl[] = " color = uMaterialDiffuse;\n" "#endif //DIFFUSE_TEXTURE\n" "#endif //DIFFUSE_TEXTURE_BLEND\n" - " gl_FragColor = uLightDiffuse * color * factor;\n" + " fragcolor = uLightDiffuse * color * factor;\n" "#else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#endif //DIFFUSE\n" "#ifdef SPECULAR\n" " factor = dot(normalize(vLightHalfVector), normal);\n" @@ -1663,15 +2028,15 @@ static const char parallax_occlusion_frag_glsl[] = " color = uMaterialSpecular;\n" "#endif //SPECULAR_TEXTURE\n" "#endif //SPECULAR_TEXTURE_BLEND\n" - " gl_FragColor += uLightSpecular * color * factor;\n" + " fragcolor += uLightSpecular * color * factor;\n" " }\n" "#endif //SPECULAR\n" "#ifdef SHADOWED\n" - " gl_FragColor *= shadow;\n" + " fragcolor *= shadow;\n" "#endif //SHADOWED\n" " }\n" " else\n" - " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" + " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" "#ifdef AMBIENT\n" "#ifdef AMBIENT_TEXTURE_BLEND\n" " color = texture2D(uTextureAmbient0, tex) * uTextureAmbientWeight +\n" @@ -1683,10 +2048,10 @@ static const char parallax_occlusion_frag_glsl[] = " color = uMaterialAmbient;\n" "#endif //AMBIENT_TEXTURE\n" "#endif //AMBIENT_TEXTURE_BLEND\n" - " gl_FragColor += uLightAmbient * color;\n" + " fragcolor += uLightAmbient * color;\n" "#endif //AMBIENT\n" "#ifdef LIGHT_ATTENUATION\n" - " gl_FragColor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" + " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" "#endif //LIGHT_ATTENUATION\n" "#ifdef EMISSION\n" "#ifdef EMISSION_TEXTURE_BLEND\n" @@ -1699,14 +2064,60 @@ static const char parallax_occlusion_frag_glsl[] = " color = uMaterialEmission;\n" "#endif //EMISSION_TEXTURE\n" "#endif //EMISSION_TEXTURE_BLEND\n" - " gl_FragColor += color;\n" + " fragcolor += color;\n" "#endif //EMISSION\n" + " return fragcolor;\n" "}\n" "void main() {\n" + " vec4 color;\n" "#ifdef SHADOWED\n" " shadow = pcf(vLightPosition, 1.0 / 200.0);\n" "#endif //SHADOWED\n" - " fragmentParallaxMap();\n" + " color = fragmentParallaxMap();\n" + "#ifdef ALPHA_TEST_ENABLED\n" + " #ifdef GL_ES\n" + "/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" + " const float p = 1000000.0;\n" + " float acolor = floor(color.a * p);\n" + " float refvalue = floor(uAlphaTestRefValue * p);\n" + " if (uAlphaTestComparison == 0) discard;\n" + " else if (uAlphaTestComparison == 1)\n" + " {\n" + " if (acolor < refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 2)\n" + " {\n" + " if (acolor == refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 3)\n" + " {\n" + " if (acolor <= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 4)\n" + " {\n" + " if (acolor > refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 5)\n" + " {\n" + " if (acolor != refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 6)\n" + " {\n" + " if (acolor >= refvalue) gl_FragColor = color;\n" + " else discard;\n" + " }\n" + " else if (uAlphaTestComparison == 7) ;\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //GL_ES\n" + "#else\n" + " gl_FragColor = color;\n" + "#endif //ALPHA_TEST_ENABLED\n" " \n" "#ifdef FOG_ENABLED\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n" --