diff options
Diffstat (limited to 'src/modules/evas/engines/gl_common/shader_3d')
21 files changed, 0 insertions, 3685 deletions
diff --git a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd deleted file mode 100644 index faf43304c0..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd +++ /dev/null @@ -1,15 +0,0 @@ -uniform vec4 uColorPick; - -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() -{ - vec4 color = uColorPick; - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd deleted file mode 100644 index 62de54f149..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd +++ /dev/null @@ -1,11 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION - -void main() -{ - VERTEX_SHADER_POSITION - - gl_Position = uMatrixMvp * position; -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd deleted file mode 100644 index 9faa357ec2..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd +++ /dev/null @@ -1,16 +0,0 @@ -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() { - vec4 color; - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd deleted file mode 100644 index 1a68155577..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd +++ /dev/null @@ -1,13 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD - -void main() -{ - VERTEX_SHADER_POSITION - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; -} 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 deleted file mode 100644 index 12664a04ca..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x +++ /dev/null @@ -1,2198 +0,0 @@ -/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED */ -/* IF IT IS CHANGED PLEASE COMMIT THE CHANGES */ - -static const char vertex_color_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "varying vec4 vColor;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_COLOR\n" - "attribute vec4 aColor0;\n" - "#endif //VERTEX_COLOR\n" - "#ifdef VERTEX_COLOR_BLEND\n" - "attribute vec4 aColor1;\n" - "uniform float uColorWeight;\n" - "#endif //VERTEX_COLOR_BLEND\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_COLOR_BLEND\n" - " vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight);\n" - "#else\n" - "#ifdef VERTEX_COLOR\n" - " vec4 color = aColor0;\n" - "#endif //VERTEX_COLOR\n" - "#endif //VERTEX_COLOR_BLEND\n" - " vColor = color;\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char vertex_color_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec4 vColor;\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main()\n" - "{\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char diffuse_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char diffuse_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main() {\n" - " vec4 color;\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char flat_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec2 vFactor;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef SPECULAR\n" - "uniform float uMaterialShininess;\n" - "#endif //SPECULAR\n" - "#ifdef LIGHT_ATTENUATION\n" - "uniform vec3 uLightAtten;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexFlat(vec4 position, vec3 normal)\n" - "{\n" - " vec3 lv;\n" - " float factor;\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " lv = uLightPosition.xyz;\n" - "#else\n" - " lv = uLightPosition.xyz - position.xyz;\n" - " lv = normalize(lv);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " factor = max(dot(lv, normal), 0.0);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, uLightSpotDir);\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - " vFactor.x = factor;\n" - "#else\n" - " vFactor.x = 0.0;\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " vec3 hv = normalize(normalize(-position.xyz) + lv);\n" - " factor = pow(max(dot(hv, normal), 0.0), uMaterialShininess);\n" - " vFactor.y = factor;\n" - "#endif //SPECULAR\n" - " }\n" - " else\n" - " vFactor = vec2(0.0, 0.0);\n" - " /* Light attenuation. */\n" - "#ifdef LIGHT_ATTENUATION\n" - " float dist = length(lv);\n" - " vFactor /= dot(uLightAtten, vec3(1.0, dist, dist * dist));\n" - "#endif //LIGHT_ATTENUATION\n" - "}\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexFlat(position, normal);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char flat_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec2 vFactor;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "vec4 fragmentFlat()\n" - "{\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * vFactor.x;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * vFactor.y;\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentFlat();\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char phong_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vNormal;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexPhong(vec4 position, vec3 normal)\n" - "{\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vLightVector = uLightPosition.xyz;\n" - "#else\n" - " vLightVector = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(vLightVector);\n" - "#endif //LIGHT_ATTENUATION\n" - " vLightVector = normalize(vLightVector);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " vLightHalfVector = normalize(normalize(-position.xyz) + vLightVector);\n" - " vNormal = normal;\n" - "}\n" - "void main() {\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexPhong(position, normal);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char phong_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vNormal;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\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" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - " /* Diffuse term. */\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - " /* Specular term. */\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif\n" - " }\n" - " else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif\n" - " /* Light attenuation. */\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif\n" - " /* Emission term. */\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif\n" - " return fragcolor;\n" - "}\n" - "void main()\n" - "{\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentPhong();\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char normal_map_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifndef VERTEX_TANGENT\n" - "varying vec3 vNormal;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT\n" - "attribute vec4 aTangent0;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - "attribute vec4 aTangent1;\n" - "uniform float uTangentWeight;\n" - "#endif //VERTEX_TANGENT_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifndef VERTEX_TANGENT\n" - "void vertexNormalMap(vec4 position, vec3 normal)\n" - "{\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - " vEyeVector = normalize(-position.xyz);\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vLightVector = uLightPosition.xyz;\n" - "#else\n" - " vLightVector = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(vLightVector);\n" - "#endif //LIGHT_ATTENUATION\n" - " vLightVector = normalize(vLightVector);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " vLightHalfVector = normalize(vEyeVector + vLightVector);\n" - " vNormal = normal;\n" - "}\n" - "#else\n" - "void vertexNormalMap(vec4 position, vec3 normal, vec3 tangent)\n" - "{\n" - " vec3 n = normalize(uMatrixNormal * normal);\n" - " vec3 t = normalize(uMatrixNormal * tangent);\n" - " vec3 b = cross(n, t);\n" - " vec3 tmp;\n" - " position = uMatrixModelview * position;\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vec3 lightDir = uLightPosition.xyz;\n" - "#else\n" - " vec3 lightDir = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(lightDir);\n" - "#endif //LIGHT_ATTENUATION\n" - " lightDir = normalize(lightDir);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " tmp.x = dot(lightDir, t);\n" - " tmp.y = dot(lightDir, b);\n" - " tmp.z = dot(lightDir, n);\n" - " vLightVector = tmp;\n" - " tmp.x = dot(position.xyz, t);\n" - " tmp.y = dot(position.xyz, b);\n" - " tmp.z = dot(position.xyz, n);\n" - " vEyeVector = normalize(tmp);\n" - " vec3 hv = normalize(normalize(-position.xyz) + lightDir);\n" - " tmp.x = dot(hv, t);\n" - " tmp.y = dot(hv, b);\n" - " tmp.z = dot(hv, n);\n" - " vLightHalfVector = tmp;\n" - "}\n" - "#endif //VERTEX_TANGENT\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - " vec3 tangent = aTangent0.xyz * uTangentWeight +\n" - " aTangent1.xyz * (1.0 - uTangentWeight);\n" - "#else\n" - "#ifdef VERTEX_TANGENT\n" - " vec3 tangent = aTangent0.xyz;\n" - "#endif //VERTEX_TANGENT\n" - "#endif //VERTEX_TANGENT_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "#ifdef VERTEX_TANGENT\n" - " vertexNormalMap(position, normal, tangent);\n" - "#else\n" - " vertexNormalMap(position, normal);\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif\n" - "}\n"; - -static const char normal_map_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef NORMAL_TEXTURE\n" - "uniform sampler2D uTextureNormal0;\n" - "uniform mat3 uTextureMatrixTransformNormal0;\n" - "#endif //NORMAL_TEXTURE\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - "uniform sampler2D uTextureNormal1;\n" - "uniform float uTextureNormalWeight;\n" - "uniform mat3 uTextureMatrixTransformNormal1;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "#ifndef VERTEX_TANGENT\n" - "varying vec3 vNormal;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifndef VERTEX_TANGENT\n" - "mat3 cotangent_frame(vec3 n, vec3 p, vec2 uv)\n" - "{\n" - " vec3 dp1 = dFdx(p);\n" - " vec3 dp2 = dFdy(p);\n" - " vec2 duv1 = dFdx(uv);\n" - " vec2 duv2 = dFdy(uv);\n" - " vec3 dp2perp = cross(dp2, n);\n" - " vec3 dp1perp = cross(n, dp1);\n" - " vec3 t = dp2perp * duv1.x + dp1perp * duv2.x;\n" - " vec3 b = dp2perp * duv1.y + dp1perp * duv2.y;\n" - " float invmax = inversesqrt(max(dot(t, t), dot(b, b)));\n" - " return mat3(t * invmax, b * invmax, n);\n" - "}\n" - "vec3 perturb_normal(vec3 normal)\n" - "{\n" - " mat3 tbn = cotangent_frame(vNormal, -vEyeVector, vTexCoord);\n" - " return normalize(tbn * normal);\n" - "}\n" - "#endif //VERTEX_TANGENT\n" - "vec4 fragmentNormalMap()\n" - "{\n" - " float factor;\n" - " vec3 normal;\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - " vec3 Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " vec3 Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\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" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " normal = 2.0 * normal - 1.0;\n" - "#ifndef VERTEX_TANGENT\n" - " normal = perturb_normal(normal);\n" - "#endif //VERTEX_TANGENT\n" - " vec3 lv = normalize(vLightVector);\n" - " normal = normalize(normal);\n" - " factor = dot(lv, normal);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, normalize(uLightSpotDir));\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - " }\n" - " else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentNormalMap();\n" - "#ifdef ALPHA_TEST_ENABLED\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 //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" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char shadow_map_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "varying vec4 shadowmapposition;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#endif //ALPHA_TEST_ENABLED\n" - "void main()\n" - "{\n" - "#ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#endif //ALPHA_TEST_ENABLED\n" - " gl_Position = uMatrixMvp * position;\n" - " shadowmapposition = gl_Position;\n" - "}\n"; - -static const char shadow_map_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec4 shadowmapposition;\n" - "#ifdef ALPHA_TEST_ENABLED\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "#ifdef DIFFUSE\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#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" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) *\n" - " uTextureDiffuseWeight + texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)) *\n" - " (1.0 - uTextureDiffuseWeight));\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse));\n" - "#else\n" - " color = vec4(1);\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\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" - "#endif //ALPHA_TEST_ENABLED\n" - " const vec4 pack = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n" - " const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n" - " vec4 depthcolor;\n" - " float normdist = shadowmapposition.z / shadowmapposition.w;\n" - " normdist = ((normdist + 1.0) / 2.0);\n" - " depthcolor = vec4(fract(pack * normdist));\n" - " depthcolor -= depthcolor.xxyz * mask;\n" - " gl_FragColor = depthcolor;\n" - "}\n"; - -static const char color_pick_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char color_pick_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform vec4 uColorPick;\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main()\n" - "{\n" - " vec4 color = uColorPick;\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - "}\n"; - -static const char parallax_occlusion_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT\n" - "attribute vec4 aTangent0;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - "attribute vec4 aTangent1;\n" - "uniform float uTangentWeight;\n" - "#endif //VERTEX_TANGENT_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexParallaxOcclusion(vec4 position, vec3 normal, vec3 tangent)\n" - "{\n" - " vec3 n = normalize(uMatrixNormal * normal);\n" - " vec3 t = normalize(uMatrixNormal * tangent);\n" - " vec3 b = cross(n, t);\n" - " vec3 tmp;\n" - " position = uMatrixModelview * position;\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vec3 lightDir = uLightPosition.xyz;\n" - "#else\n" - " vec3 lightDir = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(lightDir);\n" - "#endif //LIGHT_ATTENUATION\n" - " lightDir = normalize(lightDir);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " tmp.x = dot(lightDir, t);\n" - " tmp.y = dot(lightDir, b);\n" - " tmp.z = dot(lightDir, n);\n" - " vLightVector = tmp;\n" - " tmp.x = dot(position.xyz, t);\n" - " tmp.y = dot(position.xyz, b);\n" - " tmp.z = dot(position.xyz, n);\n" - " vEyeVector = normalize(tmp);\n" - " vec3 hv = normalize(normalize(-position.xyz) + lightDir);\n" - " tmp.x = dot(hv, t);\n" - " tmp.y = dot(hv, b);\n" - " tmp.z = dot(hv, n);\n" - " vLightHalfVector = tmp;\n" - "}\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - " vec3 tangent = aTangent0.xyz * uTangentWeight +\n" - " aTangent1.xyz * (1.0 - uTangentWeight);\n" - "#else\n" - "#ifdef VERTEX_TANGENT\n" - " vec3 tangent = aTangent0.xyz;\n" - "#endif //VERTEX_TANGENT\n" - "#endif //VERTEX_TANGENT_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexParallaxOcclusion(position, normal, tangent);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char parallax_occlusion_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "uniform sampler2D uTextureNormal0;\n" - "uniform mat3 uTextureMatrixTransformNormal0;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "vec3 Tex0CoordNormal;\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" - "#endif //NORMAL_TEXTURE_BLEND\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "const float parallaxScale = 0.2;\n" - "vec2 parallaxMapping(in vec3 view, in vec2 tex, out float parallaxHeight)\n" - "{\n" - " const float numLayers = 15.0;\n" - " vec2 texStep = parallaxScale * view.xy / view.z / numLayers;\n" - " float layerHeight = 1.0 / numLayers;\n" - " float curLayerHeight = 0.0;\n" - " vec2 dtex = parallaxScale * view.xy / view.z / numLayers;\n" - " vec2 currentTextureCoords = tex;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " float heightFromTexture = (1.0 - texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a) * uTextureNormalWeight;\n" - " heightFromTexture += (1.0 - texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a) *\n" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " float heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " while(heightFromTexture > curLayerHeight)\n" - " {\n" - " curLayerHeight += layerHeight;\n" - " currentTextureCoords -= dtex;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " heightFromTexture = (1.0 - texture2D(uTextureNormal0, currentTextureCoords).a) * uTextureNormalWeight;\n" - " heightFromTexture += (1.0 - texture2D(uTextureNormal1, currentTextureCoords).a) *\n" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " }\n" - " vec2 prevTCoords = currentTextureCoords + texStep;\n" - " float nextH = heightFromTexture - curLayerHeight;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " float prevH = (1.0 - texture2D(uTextureNormal0, prevTCoords).a\n" - " - curLayerHeight + layerHeight) * uTextureNormalWeight;\n" - " prevH += (1.0 - texture2D(uTextureNormal1, prevTCoords).a\n" - " - curLayerHeight + layerHeight) * (1.0 - uTextureNormalWeight);\n" - "#else\n" - " float prevH = 1.0 - texture2D(uTextureNormal0, prevTCoords).a\n" - " - curLayerHeight + layerHeight;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " float weight = nextH / (nextH - prevH);\n" - " vec2 finalTexCoords = prevTCoords * weight + currentTextureCoords * (1.0-weight);\n" - " parallaxHeight = curLayerHeight + prevH * weight + nextH * (1.0 - weight);\n" - " return finalTexCoords;\n" - "}\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" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " normal = texture2D(uTextureNormal0, tex).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, tex).a;\n" - " normal += texture2D(uTextureNormal1, tex).rgb *\n" - " (1.0 - uTextureNormalWeight) / texture2D(uTextureNormal1, tex).a;\n" - "#else\n" - " normal = texture2D(uTextureNormal0, tex).rgb / texture2D(uTextureNormal0, tex).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " normal = 2.0 * normal - 1.0;\n" - " normal = normalize(normal);\n" - " factor = dot(lv, normal);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, normalize(uLightSpotDir));\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " color = texture2D(uTextureDiffuse0, tex) * uTextureDiffuseWeight +\n" - " texture2D(uTextureDiffuse1, tex) * (1.0 - uTextureDiffuseWeight);\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " color = texture2D(uTextureDiffuse0, tex);\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " color = texture2D(uTextureSpecular0, tex) * uTextureSpecularWeight +\n" - " texture2D(uTextureSpecular1, tex) * (1.0 - uTextureSpecularWeight);\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " color = texture2D(uTextureSpecular0, tex);\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - " }\n" - " else\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" - " texture2D(uTextureAmbient1, tex) * (1.0 - uTextureAmbientWeight);\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " color = texture2D(uTextureAmbient0, tex);\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifdef EMISSION\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " color = texture2D(uTextureEmission0, tex) * uTextureEmissionWeight +\n" - " texture2D(uTextureEmission1, tex) * (1.0 - uTextureEmissionWeight);\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " color = texture2D(uTextureEmission0, tex);\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef NEED_TEX_COORD\n" - " Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" - "#endif // NEED_TEX_COORD\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentParallaxMap();\n" - "#ifdef ALPHA_TEST_ENABLED\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 //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char post_processing_fxaa_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "varying vec2 tc0;\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " tc0 = position.xy * 0.5 + 0.5;\n" - "}\n"; - -static const char post_processing_fxaa_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "//FXAA fragment shader by Timothy Lottes\n" - "//http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf\n" - "//modified and adapted to www.enlightenment.org by Oleksander Shcherbina\n" - "uniform sampler2D uColorTexture;\n" - "uniform float uFrameSizeH;\n" - "uniform float uFrameSizeW;\n" - "varying vec2 tc0;\n" - "vec4 fxaa()\n" - "{\n" - " float _SPAN_MAX_ = 8.0;\n" - " float _REDUCE_MUL_ = (1.0/8.0);\n" - " float _REDUCE_MIN_ = (1.0/128.0);\n" - " vec4 l = vec4(0.299, 0.587, 0.114, 0.0);\n" - " vec2 frameBufSize = vec2(uFrameSizeW, uFrameSizeH);\n" - " vec2 direction;\n" - " vec4 colorNW = texture2D(uColorTexture, tc0 + (vec2(-1.0, -1.0)/frameBufSize));\n" - " vec4 colorNE = texture2D(uColorTexture, tc0 + (vec2(1.0, -1.0)/frameBufSize));\n" - " vec4 colorSW = texture2D(uColorTexture, tc0 + (vec2(-1.0, 1.0)/frameBufSize));\n" - " vec4 colorSE = texture2D(uColorTexture, tc0 + (vec2(1.0, 1.0)/frameBufSize));\n" - " vec4 colorM = texture2D(uColorTexture,tc0);\n" - " float lNW = dot(colorNW, l);\n" - " float lNE = dot(colorNE, l);\n" - " float lSW = dot(colorSW, l);\n" - " float lSE = dot(colorSE, l);\n" - " float lM = dot(colorM, l);\n" - " float lMin = min(lM, min(min(lNW, lNE), min(lSW, lSE)));\n" - " float lMax = max(lM, max(max(lNW, lNE), max(lSW, lSE)));\n" - " direction.x = -((lNW + lNE) - (lSW + lSE));\n" - " direction.y = ((lNW + lSW) - (lNE + lSE));\n" - " float directionReduce = max(\n" - " (lNW + lNE + lSW + lSE) * (0.25 * _REDUCE_MUL_),\n" - " _REDUCE_MIN_);\n" - " float rcpDirMin = 1.0/(min(abs(direction.x), abs(direction.y)) + directionReduce);\n" - " direction = min(vec2(_SPAN_MAX_, _SPAN_MAX_),\n" - " max(vec2(-_SPAN_MAX_, -_SPAN_MAX_),\n" - " direction * rcpDirMin)) / frameBufSize;\n" - " vec4 colorA = 0.5 * (\n" - " texture2D(uColorTexture, tc0.xy + direction * (1.0/3.0 - 0.5)) +\n" - " texture2D(uColorTexture, tc0.xy + direction * (2.0/3.0 - 0.5)));\n" - " vec4 colorB = colorA * 0.5 + 0.25 * (\n" - " texture2D(uColorTexture, tc0.xy + direction * (- 0.5)) +\n" - " texture2D(uColorTexture, tc0.xy + direction * 0.5));\n" - " float lB = dot(colorB, l);\n" - " if((lB < lMin) || (lB > lMax))\n" - " return colorA;\n" - " else\n" - " return colorB;\n" - "}\n" - "void main()\n" - "{\n" - " gl_FragColor = fxaa();\n" - "}\n"; - -static const char *vertex_shaders[] = -{ - vertex_color_vert_glsl, - diffuse_vert_glsl, - flat_vert_glsl, - phong_vert_glsl, - normal_map_vert_glsl, - shadow_map_vert_glsl, - color_pick_vert_glsl, - parallax_occlusion_vert_glsl, - post_processing_fxaa_vert_glsl, -}; - -static const char *fragment_shaders[] = -{ - vertex_color_frag_glsl, - diffuse_frag_glsl, - flat_frag_glsl, - phong_frag_glsl, - normal_map_frag_glsl, - shadow_map_frag_glsl, - color_pick_frag_glsl, - parallax_occlusion_frag_glsl, - post_processing_fxaa_frag_glsl, -}; diff --git a/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd deleted file mode 100644 index 863bac1e1a..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd +++ /dev/null @@ -1,64 +0,0 @@ -varying vec2 vFactor; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -vec4 fragmentFlat() -{ - vec4 color; - vec4 fragcolor; -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - fragcolor = uLightDiffuse * color * vFactor.x; -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - fragcolor += uLightSpecular * color * vFactor.y; - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - -#ifdef AMBIENT - - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentFlat(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd deleted file mode 100644 index 10b9493304..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd +++ /dev/null @@ -1,92 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec2 vFactor; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD - -#ifdef LIGHT_SPOT -uniform vec3 uLightSpotDir; -uniform float uLightSpotExp; -uniform float uLightSpotCutoffCos; -#endif //LIGHT_SPOT - -#ifdef SPECULAR -uniform float uMaterialShininess; -#endif //SPECULAR - -#ifdef LIGHT_ATTENUATION -uniform vec3 uLightAtten; -#endif //LIGHT_ATTENUATION - -void vertexFlat(vec4 position, vec3 normal) -{ - vec3 lv; - float factor; - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - lv = uLightPosition.xyz; -#else - lv = uLightPosition.xyz - position.xyz; - lv = normalize(lv); -#endif //LIGHT_DIRECTIONAL - - factor = max(dot(lv, normal), 0.0); - -#ifdef LIGHT_SPOT - float f = dot(-lv, uLightSpotDir); - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - vFactor.x = factor; -#else - vFactor.x = 0.0; -#endif //DIFFUSE - -#ifdef SPECULAR - vec3 hv = normalize(normalize(-position.xyz) + lv); - factor = pow(max(dot(hv, normal), 0.0), uMaterialShininess); - vFactor.y = factor; -#endif //SPECULAR - - } - else - vFactor = vec2(0.0, 0.0); - - /* Light attenuation. */ -#ifdef LIGHT_ATTENUATION - float dist = length(lv); - vFactor /= dot(uLightAtten, vec3(1.0, dist, dist * dist)); -#endif //LIGHT_ATTENUATION -} - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - vertexFlat(position, normal); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh b/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh deleted file mode 100755 index f31880fda0..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -# This script will generate a C file containing all the shaders used by Evas_3D - -DIR=`dirname $0` -cd $DIR/../../../../../ - -OUTPUT="$DIR/evas_gl_3d_shaders.x" - -# Skip generation during make distcheck -if [ "${top_distdir}" != "" ] ; then exit 0; fi - -# Skip generation if file can not be written to -if [ -e ${OUTPUT} ] && [ ! -w ${OUTPUT} ] ; then exit 0; fi - -# Skip generation if there is no diff (or no git) -if ! git rev-parse 2>> /dev/null >> /dev/null ; then exit 0 ; fi -if git diff --quiet --exit-code -- "$DIR" -then - touch "$OUTPUT" - exit 0 -fi - -exec 1<&- -exec 1>"$OUTPUT" - -SHADERS=$@ -VERT_SHADERS_SOURCE="" -FRAG_SHADERS_SOURCE="" - -# Write header -printf "/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED */\n" -printf "/* IF IT IS CHANGED PLEASE COMMIT THE CHANGES */\n\n" - -for SHD in $SHADERS ; do - LNAME=`basename "$SHD" .shd` - - if echo "$LNAME" | grep _vert 2>&1 >> /dev/null ; then - VERT_SHADERS_SOURCE="$VERT_SHADERS_SOURCE "$LNAME"_glsl,\n" - fi - if echo "$LNAME" | grep _frag 2>&1 >> /dev/null ; then - FRAG_SHADERS_SOURCE="$FRAG_SHADERS_SOURCE "$LNAME"_glsl,\n" - fi - - m4 "$DIR/include.shd" "$SHD" > "$SHD.tmp" - - OIFS="$IFS" - IFS=`printf '\n+'` - IFS=${IFS%+} - printf "static const char "$LNAME"_glsl[] =" - for LINE in `cat "$SHD.tmp"` ; do - printf "\n \"$LINE\\\n\"" - done - printf ";\n\n" - IFS="$OIFS" - - rm "$SHD.tmp" -done - -printf "static const char *vertex_shaders[] = -{\n" - printf "$VERT_SHADERS_SOURCE" -printf "};\n\n" - -printf "static const char *fragment_shaders[] = -{\n" - printf "$FRAG_SHADERS_SOURCE" -printf "};\n" diff --git a/src/modules/evas/engines/gl_common/shader_3d/include.shd b/src/modules/evas/engines/gl_common/shader_3d/include.shd deleted file mode 100644 index 2897589c17..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/include.shd +++ /dev/null @@ -1,254 +0,0 @@ -`#ifdef GL_ES -precision mediump float; -precision mediump int; -precision lowp sampler2D; -#endif' - -define(`FRAGMENT_SHADER_USE_TEX_COORD',` -#ifdef NEED_TEX_COORD -varying vec2 vTexCoord; -#endif //TEX_COORD') - -define(`FRAGMENT_SHADER_USE_TEXTURE', ` -#ifdef $1_TEXTURE -uniform sampler2D uTexture$2`0'; -uniform mat3 uTextureMatrixTransform$2`0'; -#endif //$1_TEXTURE -#ifdef $1_TEXTURE_BLEND -uniform sampler2D uTexture$2`1'; -uniform float uTexture$2Weight; -uniform mat3 uTextureMatrixTransform$2`1'; -#endif //$1_TEXTURE_BLEND') - -define(`FRAGMENT_SHADER_USE_FOG', ` -#ifdef FOG_ENABLED -uniform float uFogFactor; -uniform vec4 uFogColor; -#endif //FOG_ENABLED') -define(`FRAGMENT_SHADER_USE_ALPHA_TEST_GLES', -uniform int uAlphaTestComparison; -uniform float uAlphaTestRefValue;) - -define(`FRAGMENT_SHADER_USE_SHADOWS', ` -#ifdef SHADOWED -varying vec4 vLightPosition; -uniform sampler2D uShadowMap; -uniform float uShadowsPCFStep; -uniform float uShadowsPCFSize; -uniform float uShadowsConstantBias; -float shadow; -float pcf(vec4 lpos) -{ - vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5; - float i, j, shadow, q, c; - q = floor(uShadowsPCFStep * 2.0); - c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0); - shadow = 0.0; - const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); - for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0) - for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0) - { - vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize); - shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias); - } - return shadow / c; -} -#endif //SHADOWED') - -define(`FRAGMENT_SHADER_FOG_APPLY', ` -#ifdef FOG_ENABLED - float z = gl_FragCoord.z / gl_FragCoord.w; - float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44); - fogFactor = clamp(fogFactor, 0.0, 1.0); - gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor); -#endif //FOG_ENABLED') - -define(`FRAGMENT_SHADER_USE_LIGHT', ` -#ifdef LIGHT_SPOT -uniform vec3 uLightSpotDir; -uniform float uLightSpotExp; -uniform float uLightSpotCutoffCos; -#endif //LIGHT_SPOT -#ifdef LIGHT_ATTENUATION -varying float vLightDist; -#endif //LIGHT_ATTENUATION') - -define(`FRAGMENT_SHADER_TEXTURE_BLEND', ` -#ifdef $1_TEXTURE_BLEND - vec3 Tex0Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`0'; - vec3 Tex1Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`1'; - color = mix(texture2D(uTexture$2`1', vec2(Tex1Coord$2)), - texture2D(uTexture$2`0', vec2(Tex0Coord$2)), uTexture$2Weight); - color *= uMaterial$2; -#else -#ifdef $1_TEXTURE - vec3 Tex0Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`0'; - color = texture2D(uTexture$2`0', vec2(Tex0Coord$2)) * uMaterial$2; -#else - color = uMaterial$2; -#endif //$1_TEXTURE -#endif //$1_TEXTURE_BLEND') - -define(`FRAGMENT_SHADER_USE_EMISSION_TERM', -`#ifdef EMISSION' -uniform vec4 uMaterialEmission; -FRAGMENT_SHADER_USE_TEXTURE(EMISSION, Emission) -`#endif //EMISSION') - -define(`FRAGMENT_SHADER_USE_SPECULAR_TERM', -`#ifdef SPECULAR' -uniform vec4 uLightSpecular; -uniform float uMaterialShininess; -uniform vec4 uMaterialSpecular; -FRAGMENT_SHADER_USE_TEXTURE(SPECULAR, Specular) -`#endif //SPECULAR') - -define(`FRAGMENT_SHADER_USE_AMBIENT_TERM', -`#ifdef AMBIENT' -uniform vec4 uMaterialAmbient; -uniform vec4 uLightAmbient; -FRAGMENT_SHADER_USE_TEXTURE(AMBIENT, Ambient) -`#endif //AMBIENT') - -define(`FRAGMENT_SHADER_USE_DIFFUSE_TERM', -`#ifdef DIFFUSE' -uniform vec4 uMaterialDiffuse; -uniform vec4 uLightDiffuse; -FRAGMENT_SHADER_USE_TEXTURE(DIFFUSE, Diffuse) -`#endif //DIFFUSE') - -define(`FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY', -/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/ - const float p = 1000000.0; - float acolor = floor($1.a * p); - float refvalue = floor(uAlphaTestRefValue * p); - if (uAlphaTestComparison == 0) discard; - else if (uAlphaTestComparison == 1) - { - if (acolor < refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 2) - { - if (acolor == refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 3) - { - if (acolor <= refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 4) - { - if (acolor > refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 5) - { - if (acolor != refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 6) - { - if (acolor >= refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 7) ;) - - -define(`VERTEX_SHADER_NEED_TEX_COORD', -`#ifdef NEED_TEX_COORD' -varying vec2 vTexCoord; -`#endif //NEED_TEX_COORD') - -define(`VERTEX_SHADER_USE_LIGHT_ATTENUATION', -`#ifdef LIGHT_ATTENUATION' -varying float vLightDist; -`#endif //LIGHT_ATTENUATION') - -define(`VERTEX_SHADER_USE_SHADOWS', -`#ifdef SHADOWED' -uniform mat4 uMatrixLight; -varying vec4 vLightPosition; -`#endif //SHADOWED') - -define(`VERTEX_SHADER_USE_POSITION', -`#ifdef VERTEX_POSITION' -attribute vec4 aPosition0; -`#endif //VERTEX_POSITION' - -`#ifdef VERTEX_POSITION_BLEND' -attribute vec4 aPosition1; -uniform float uPositionWeight; -`#endif //VERTEX_POSITION_BLEND') - -define(`VERTEX_SHADER_USE_NORMALS', -`#ifdef VERTEX_NORMAL' -attribute vec4 aNormal0; -`#endif //VERTEX_NORMAL' - -`#ifdef VERTEX_NORMAL_BLEND' -attribute vec4 aNormal1; -uniform float uNormalWeight; -`#endif //VERTEX_NORMAL_BLEND' -) - -define(`VERTEX_SHADER_USE_TEXCOORD', -`#ifdef VERTEX_TEXCOORD' -attribute vec4 aTexCoord0; -`#endif //VERTEX_TEXCOORD' - -`#ifdef VERTEX_TEXCOORD_BLEND' -attribute vec4 aTexCoord1; -uniform float uTexCoordWeight; -`#endif //VERTEX_TEXCOORD_BLEND' -) - -define(`VERTEX_SHADER_USE_COLOR', -`#ifdef VERTEX_COLOR' -attribute vec4 aColor0; -`#endif //VERTEX_COLOR' - -`#ifdef VERTEX_COLOR_BLEND' -attribute vec4 aColor1; -uniform float uColorWeight; -`#endif //VERTEX_COLOR_BLEND') - -define(`VERTEX_SHADER_POSITION', -`#ifdef VERTEX_POSITION_BLEND' - vec4 position = mix(aPosition1, aPosition0, uPositionWeight); - position = vec4(position.xyz, 1.0); -`#else' - -`#ifdef VERTEX_POSITION' - vec4 position = vec4(aPosition0.xyz, 1.0); -`#endif // VERTEX_POSITION' - -`#endif //VERTEX_POSITION_BLEND') - -define(`VERTEX_SHADER_NORMAL', -`#ifdef VERTEX_NORMAL_BLEND' - vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight); -`#else' - -`#ifdef VERTEX_NORMAL' - vec3 normal = aNormal0.xyz; -`#endif //VERTEX_NORMAL' -`#endif //VERTEX_NORMAL_BLEND') - -define(`VERTEX_SHADER_TEXCOORD', -`#ifdef VERTEX_TEXCOORD_BLEND' - vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t), - vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight); -`#else' - -`#ifdef VERTEX_TEXCOORD' - vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t); -`#endif //VERTEX_TEXCOORD' - -`#endif //VERTEX_TEXCOORD_BLEND') - -define(`VERTEX_SHADER_SHADOWED', -`#ifdef SHADOWED' - vLightPosition = uMatrixLight * position; -`#endif //SHADOWED') diff --git a/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd deleted file mode 100644 index ad2b64f4f8..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd +++ /dev/null @@ -1,147 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_TEXTURE(NORMAL, Normal) -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -#ifndef VERTEX_TANGENT -varying vec3 vNormal; -#endif //VERTEX_TANGENT - -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT - -#ifndef VERTEX_TANGENT - -mat3 cotangent_frame(vec3 n, vec3 p, vec2 uv) -{ - vec3 dp1 = dFdx(p); - vec3 dp2 = dFdy(p); - vec2 duv1 = dFdx(uv); - vec2 duv2 = dFdy(uv); - vec3 dp2perp = cross(dp2, n); - vec3 dp1perp = cross(n, dp1); - vec3 t = dp2perp * duv1.x + dp1perp * duv2.x; - vec3 b = dp2perp * duv1.y + dp1perp * duv2.y; - float invmax = inversesqrt(max(dot(t, t), dot(b, b))); - return mat3(t * invmax, b * invmax, n); -} - -vec3 perturb_normal(vec3 normal) -{ - mat3 tbn = cotangent_frame(vNormal, -vEyeVector, vTexCoord); - return normalize(tbn * normal); -} -#endif //VERTEX_TANGENT - -vec4 fragmentNormalMap() -{ - float factor; - vec3 normal; - vec4 color; - vec4 fragcolor; - - vec3 Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0; -#ifdef NORMAL_TEXTURE_BLEND - vec3 Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1; - normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a; - normal += texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).rgb / texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a * - (1.0 - uTextureNormalWeight); -#else - normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a; -#endif //NORMAL_TEXTURE_BLEND - - normal = 2.0 * normal - 1.0; - -#ifndef VERTEX_TANGENT - normal = perturb_normal(normal); -#endif //VERTEX_TANGENT - - vec3 lv = normalize(vLightVector); - normal = normalize(normal); - - factor = dot(lv, normal); - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - fragcolor = uLightDiffuse * color * factor; - -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - fragcolor += uLightSpecular * color * factor; - } - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef AMBIENT - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif //LIGHT_ATTENUATION - -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; - -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentNormalMap(); -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - -FRAGMENT_SHADER_FOG_APPLY - -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd deleted file mode 100644 index 0c9e557390..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd +++ /dev/null @@ -1,128 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -#ifndef VERTEX_TANGENT -varying vec3 vNormal; -#endif //VERTEX_TANGENT - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS - -#ifdef VERTEX_TANGENT -attribute vec4 aTangent0; -#endif //VERTEX_TANGENT - -#ifdef VERTEX_TANGENT_BLEND -attribute vec4 aTangent1; -uniform float uTangentWeight; -#endif //VERTEX_TANGENT_BLEND - -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -#ifndef VERTEX_TANGENT -void vertexNormalMap(vec4 position, vec3 normal) -{ - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - vEyeVector = normalize(-position.xyz); - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - vLightVector = uLightPosition.xyz; -#else - vLightVector = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(vLightVector); -#endif //LIGHT_ATTENUATION - - vLightVector = normalize(vLightVector); -#endif //LIGHT_DIRECTIONAL - - vLightHalfVector = normalize(vEyeVector + vLightVector); - vNormal = normal; -} - -#else - -void vertexNormalMap(vec4 position, vec3 normal, vec3 tangent) -{ - vec3 n = normalize(uMatrixNormal * normal); - vec3 t = normalize(uMatrixNormal * tangent); - vec3 b = cross(n, t); - vec3 tmp; - - position = uMatrixModelview * position; - -#ifdef LIGHT_DIRECTIONAL - vec3 lightDir = uLightPosition.xyz; -#else - vec3 lightDir = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(lightDir); -#endif //LIGHT_ATTENUATION - - lightDir = normalize(lightDir); -#endif //LIGHT_DIRECTIONAL - - tmp.x = dot(lightDir, t); - tmp.y = dot(lightDir, b); - tmp.z = dot(lightDir, n); - vLightVector = tmp; - - tmp.x = dot(position.xyz, t); - tmp.y = dot(position.xyz, b); - tmp.z = dot(position.xyz, n); - vEyeVector = normalize(tmp); - - vec3 hv = normalize(normalize(-position.xyz) + lightDir); - tmp.x = dot(hv, t); - tmp.y = dot(hv, b); - tmp.z = dot(hv, n); - vLightHalfVector = tmp; -} -#endif //VERTEX_TANGENT - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - -#ifdef VERTEX_TANGENT_BLEND - vec3 tangent = aTangent0.xyz * uTangentWeight + - aTangent1.xyz * (1.0 - uTangentWeight); -#else - -#ifdef VERTEX_TANGENT - vec3 tangent = aTangent0.xyz; -#endif //VERTEX_TANGENT - -#endif //VERTEX_TANGENT_BLEND - - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - -#ifdef VERTEX_TANGENT - vertexNormalMap(position, normal, tangent); -#else - vertexNormalMap(position, normal); -#endif //VERTEX_TANGENT - -#ifdef SHADOWED - vLightPosition = uMatrixLight * position; -#endif -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd deleted file mode 100644 index aedafe4bdd..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd +++ /dev/null @@ -1,240 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; -uniform sampler2D uTextureNormal0; -uniform mat3 uTextureMatrixTransformNormal0; - -#ifdef NEED_TEX_COORD -varying vec2 vTexCoord; -vec3 Tex0CoordNormal; -#endif //TEX_COORD - -#ifdef NORMAL_TEXTURE_BLEND -uniform sampler2D uTextureNormal1; -uniform float uTextureNormalWeight; -uniform mat3 uTextureMatrixTransformNormal1; -vec3 Tex1CoordNormal; -#endif //NORMAL_TEXTURE_BLEND - -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -const float parallaxScale = 0.2; - -vec2 parallaxMapping(in vec3 view, in vec2 tex, out float parallaxHeight) -{ - const float numLayers = 15.0; - vec2 texStep = parallaxScale * view.xy / view.z / numLayers; - - float layerHeight = 1.0 / numLayers; - float curLayerHeight = 0.0; - vec2 dtex = parallaxScale * view.xy / view.z / numLayers; - - vec2 currentTextureCoords = tex; - -#ifdef NORMAL_TEXTURE_BLEND - float heightFromTexture = (1.0 - texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a) * uTextureNormalWeight; - heightFromTexture += (1.0 - texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a) * - (1.0 - uTextureNormalWeight); -#else - float heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a; -#endif //NORMAL_TEXTURE_BLEND - - while(heightFromTexture > curLayerHeight) - { - curLayerHeight += layerHeight; - currentTextureCoords -= dtex; - -#ifdef NORMAL_TEXTURE_BLEND - heightFromTexture = (1.0 - texture2D(uTextureNormal0, currentTextureCoords).a) * uTextureNormalWeight; - heightFromTexture += (1.0 - texture2D(uTextureNormal1, currentTextureCoords).a) * - (1.0 - uTextureNormalWeight); -#else - heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a; -#endif //NORMAL_TEXTURE_BLEND - } - - vec2 prevTCoords = currentTextureCoords + texStep; - float nextH = heightFromTexture - curLayerHeight; - -#ifdef NORMAL_TEXTURE_BLEND - float prevH = (1.0 - texture2D(uTextureNormal0, prevTCoords).a - - curLayerHeight + layerHeight) * uTextureNormalWeight; - prevH += (1.0 - texture2D(uTextureNormal1, prevTCoords).a - - curLayerHeight + layerHeight) * (1.0 - uTextureNormalWeight); -#else - float prevH = 1.0 - texture2D(uTextureNormal0, prevTCoords).a - - curLayerHeight + layerHeight; -#endif //NORMAL_TEXTURE_BLEND - - float weight = nextH / (nextH - prevH); - vec2 finalTexCoords = prevTCoords * weight + currentTextureCoords * (1.0-weight); - parallaxHeight = curLayerHeight + prevH * weight + nextH * (1.0 - weight); - - return finalTexCoords; -} - -vec4 fragmentParallaxMap() -{ - float factor; - vec3 normal; - vec4 color; - vec4 fragcolor; - float parallaxHeight; - vec2 tex = parallaxMapping(vEyeVector, vec2(Tex0CoordNormal), parallaxHeight); - - vec3 lv = normalize(vLightVector); - -#ifdef NORMAL_TEXTURE_BLEND - normal = texture2D(uTextureNormal0, tex).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, tex).a; - normal += texture2D(uTextureNormal1, tex).rgb * - (1.0 - uTextureNormalWeight) / texture2D(uTextureNormal1, tex).a; -#else - normal = texture2D(uTextureNormal0, tex).rgb / texture2D(uTextureNormal0, tex).a; -#endif //NORMAL_TEXTURE_BLEND - - normal = 2.0 * normal - 1.0; - - normal = normalize(normal); - - factor = dot(lv, normal); - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - -#ifdef DIFFUSE_TEXTURE_BLEND - color = texture2D(uTextureDiffuse0, tex) * uTextureDiffuseWeight + - texture2D(uTextureDiffuse1, tex) * (1.0 - uTextureDiffuseWeight); -#else - -#ifdef DIFFUSE_TEXTURE - color = texture2D(uTextureDiffuse0, tex); -#else - color = uMaterialDiffuse; -#endif //DIFFUSE_TEXTURE - -#endif //DIFFUSE_TEXTURE_BLEND - - fragcolor = uLightDiffuse * color * factor; - -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - -#ifdef SPECULAR_TEXTURE_BLEND - color = texture2D(uTextureSpecular0, tex) * uTextureSpecularWeight + - texture2D(uTextureSpecular1, tex) * (1.0 - uTextureSpecularWeight); -#else -#ifdef SPECULAR_TEXTURE - color = texture2D(uTextureSpecular0, tex); -#else - color = uMaterialSpecular; -#endif //SPECULAR_TEXTURE - -#endif //SPECULAR_TEXTURE_BLEND - - fragcolor += uLightSpecular * color * factor; - } - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef AMBIENT -#ifdef AMBIENT_TEXTURE_BLEND - color = texture2D(uTextureAmbient0, tex) * uTextureAmbientWeight + - texture2D(uTextureAmbient1, tex) * (1.0 - uTextureAmbientWeight); -#else - -#ifdef AMBIENT_TEXTURE - color = texture2D(uTextureAmbient0, tex); -#else - color = uMaterialAmbient; -#endif //AMBIENT_TEXTURE - -#endif //AMBIENT_TEXTURE_BLEND - - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif //LIGHT_ATTENUATION - -#ifdef EMISSION - -#ifdef EMISSION_TEXTURE_BLEND - color = texture2D(uTextureEmission0, tex) * uTextureEmissionWeight + - texture2D(uTextureEmission1, tex) * (1.0 - uTextureEmissionWeight); -#else - -#ifdef EMISSION_TEXTURE - color = texture2D(uTextureEmission0, tex); -#else - color = uMaterialEmission; -#endif //EMISSION_TEXTURE - -#endif //EMISSION_TEXTURE_BLEND - - fragcolor += color; -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; - -#ifdef NEED_TEX_COORD - Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0; -#endif // NEED_TEX_COORD - -#ifdef NORMAL_TEXTURE_BLEND - Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1; -#endif //NORMAL_TEXTURE_BLEND - -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentParallaxMap(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY - -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd deleted file mode 100644 index dff4ff75d4..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd +++ /dev/null @@ -1,88 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS - -#ifdef VERTEX_TANGENT -attribute vec4 aTangent0; -#endif //VERTEX_TANGENT - -#ifdef VERTEX_TANGENT_BLEND -attribute vec4 aTangent1; -uniform float uTangentWeight; -#endif //VERTEX_TANGENT_BLEND - -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -void vertexParallaxOcclusion(vec4 position, vec3 normal, vec3 tangent) -{ - vec3 n = normalize(uMatrixNormal * normal); - vec3 t = normalize(uMatrixNormal * tangent); - vec3 b = cross(n, t); - vec3 tmp; - - position = uMatrixModelview * position; - -#ifdef LIGHT_DIRECTIONAL - vec3 lightDir = uLightPosition.xyz; -#else - vec3 lightDir = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(lightDir); -#endif //LIGHT_ATTENUATION - - lightDir = normalize(lightDir); -#endif //LIGHT_DIRECTIONAL - - tmp.x = dot(lightDir, t); - tmp.y = dot(lightDir, b); - tmp.z = dot(lightDir, n); - vLightVector = tmp; - - tmp.x = dot(position.xyz, t); - tmp.y = dot(position.xyz, b); - tmp.z = dot(position.xyz, n); - vEyeVector = normalize(tmp); - - vec3 hv = normalize(normalize(-position.xyz) + lightDir); - tmp.x = dot(hv, t); - tmp.y = dot(hv, b); - tmp.z = dot(hv, n); - vLightHalfVector = tmp; -} - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - -#ifdef VERTEX_TANGENT_BLEND - vec3 tangent = aTangent0.xyz * uTangentWeight + - aTangent1.xyz * (1.0 - uTangentWeight); -#else - -#ifdef VERTEX_TANGENT - vec3 tangent = aTangent0.xyz; -#endif //VERTEX_TANGENT - -#endif //VERTEX_TANGENT_BLEND - - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - - vertexParallaxOcclusion(position, normal, tangent); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd deleted file mode 100644 index 78a867b96a..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd +++ /dev/null @@ -1,103 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vNormal; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -vec4 fragmentPhong() -{ - vec3 normal = normalize(vNormal); - vec3 lv = normalize(vLightVector); - float factor = dot(lv, normal); - vec4 color; - vec4 fragcolor; - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - - /* Diffuse term. */ -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - - fragcolor = uLightDiffuse * color * factor; -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - - /* Specular term. */ -#ifdef SPECULAR - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - - fragcolor += uLightSpecular * color * factor; - } -#endif - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - -#ifdef AMBIENT - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - - fragcolor += uLightAmbient * color; -#endif - - /* Light attenuation. */ -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif - - /* Emission term. */ -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; -#endif - return fragcolor; -} - -void main() -{ - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentPhong(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd deleted file mode 100644 index ee9eed9c47..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd +++ /dev/null @@ -1,51 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vNormal; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -void vertexPhong(vec4 position, vec3 normal) -{ - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - vLightVector = uLightPosition.xyz; -#else - vLightVector = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(vLightVector); -#endif //LIGHT_ATTENUATION - - vLightVector = normalize(vLightVector); -#endif //LIGHT_DIRECTIONAL - - vLightHalfVector = normalize(normalize(-position.xyz) + vLightVector); - vNormal = normal; -} - -void main() { - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - vertexPhong(position, normal); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd deleted file mode 100644 index b78a09177b..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd +++ /dev/null @@ -1,63 +0,0 @@ -//FXAA fragment shader by Timothy Lottes -//http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf -//modified and adapted to www.enlightenment.org by Oleksander Shcherbina -uniform sampler2D uColorTexture; -uniform float uFrameSizeH; -uniform float uFrameSizeW; -varying vec2 tc0; - -vec4 fxaa() -{ - float _SPAN_MAX_ = 8.0; - float _REDUCE_MUL_ = (1.0/8.0); - float _REDUCE_MIN_ = (1.0/128.0); - vec4 l = vec4(0.299, 0.587, 0.114, 0.0); - vec2 frameBufSize = vec2(uFrameSizeW, uFrameSizeH); - vec2 direction; - - vec4 colorNW = texture2D(uColorTexture, tc0 + (vec2(-1.0, -1.0)/frameBufSize)); - vec4 colorNE = texture2D(uColorTexture, tc0 + (vec2(1.0, -1.0)/frameBufSize)); - vec4 colorSW = texture2D(uColorTexture, tc0 + (vec2(-1.0, 1.0)/frameBufSize)); - vec4 colorSE = texture2D(uColorTexture, tc0 + (vec2(1.0, 1.0)/frameBufSize)); - vec4 colorM = texture2D(uColorTexture,tc0); - - float lNW = dot(colorNW, l); - float lNE = dot(colorNE, l); - float lSW = dot(colorSW, l); - float lSE = dot(colorSE, l); - float lM = dot(colorM, l); - - float lMin = min(lM, min(min(lNW, lNE), min(lSW, lSE))); - float lMax = max(lM, max(max(lNW, lNE), max(lSW, lSE))); - - direction.x = -((lNW + lNE) - (lSW + lSE)); - direction.y = ((lNW + lSW) - (lNE + lSE)); - - float directionReduce = max( - (lNW + lNE + lSW + lSE) * (0.25 * _REDUCE_MUL_), - _REDUCE_MIN_); - - float rcpDirMin = 1.0/(min(abs(direction.x), abs(direction.y)) + directionReduce); - - direction = min(vec2(_SPAN_MAX_, _SPAN_MAX_), - max(vec2(-_SPAN_MAX_, -_SPAN_MAX_), - direction * rcpDirMin)) / frameBufSize; - - vec4 colorA = 0.5 * ( - texture2D(uColorTexture, tc0.xy + direction * (1.0/3.0 - 0.5)) + - texture2D(uColorTexture, tc0.xy + direction * (2.0/3.0 - 0.5))); - vec4 colorB = colorA * 0.5 + 0.25 * ( - texture2D(uColorTexture, tc0.xy + direction * (- 0.5)) + - texture2D(uColorTexture, tc0.xy + direction * 0.5)); - float lB = dot(colorB, l); - - if((lB < lMin) || (lB > lMax)) - return colorA; - else - return colorB; -} - -void main() -{ - gl_FragColor = fxaa(); -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd deleted file mode 100644 index 8464fdcc82..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd +++ /dev/null @@ -1,12 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION - -varying vec2 tc0; -void main() -{ - VERTEX_SHADER_POSITION - - gl_Position = uMatrixMvp * position; - tc0 = position.xy * 0.5 + 0.5; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd deleted file mode 100644 index a66f47acf8..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd +++ /dev/null @@ -1,60 +0,0 @@ -varying vec4 shadowmapposition; -#ifdef ALPHA_TEST_ENABLED -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -#ifdef DIFFUSE - -#ifdef DIFFUSE_TEXTURE -uniform sampler2D uTextureDiffuse0; -uniform mat3 uTextureMatrixTransformDiffuse0; -#endif //DIFFUSE_TEXTURE - -#ifdef DIFFUSE_TEXTURE_BLEND -uniform sampler2D uTextureDiffuse1; -uniform float uTextureDiffuseWeight; -uniform mat3 uTextureMatrixTransformDiffuse1; -#endif //DIFFUSE_TEXTURE_BLEND - -#endif //DIFFUSE - -#endif //ALPHA_TEST_ENABLED - -void main() { - - vec4 color; -#ifndef NEED_TEX_COORD - gl_FragColor = vec4(1); -#endif - -#ifdef ALPHA_TEST_ENABLED - -#ifdef DIFFUSE_TEXTURE_BLEND - vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1; - color = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * - uTextureDiffuseWeight + texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)) * - (1.0 - uTextureDiffuseWeight)); -#else - -#ifdef DIFFUSE_TEXTURE - vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0; - color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)); -#else - color = vec4(1); -#endif //DIFFUSE_TEXTURE - -#endif //DIFFUSE_TEXTURE_BLEND - - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) - -#endif //ALPHA_TEST_ENABLED - - const vec4 pack = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0); - const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0); - vec4 depthcolor; - float normdist = shadowmapposition.z / shadowmapposition.w; - normdist = ((normdist + 1.0) / 2.0); - depthcolor = vec4(fract(pack * normdist)); - depthcolor -= depthcolor.xxyz * mask; - gl_FragColor = depthcolor; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd deleted file mode 100644 index 66ce4f3d62..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd +++ /dev/null @@ -1,21 +0,0 @@ -uniform mat4 uMatrixMvp; -varying vec4 shadowmapposition; -VERTEX_SHADER_USE_POSITION - -#ifdef ALPHA_TEST_ENABLED -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -#endif //ALPHA_TEST_ENABLED - -void main() -{ - -VERTEX_SHADER_POSITION - -#ifdef ALPHA_TEST_ENABLED - VERTEX_SHADER_TEXCOORD -#endif //ALPHA_TEST_ENABLED - - gl_Position = uMatrixMvp * position; - shadowmapposition = gl_Position; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd deleted file mode 100644 index 1b85057b66..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd +++ /dev/null @@ -1,17 +0,0 @@ -varying vec4 vColor; - -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() -{ - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(vColor) -#else - gl_FragColor = vColor; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd deleted file mode 100644 index 6daeacfc1f..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd +++ /dev/null @@ -1,24 +0,0 @@ -uniform mat4 uMatrixMvp; -varying vec4 vColor; - -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_COLOR - -void main() -{ - VERTEX_SHADER_POSITION - -#ifdef VERTEX_COLOR_BLEND - vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight); -#else - -#ifdef VERTEX_COLOR - vec4 color = aColor0; -#endif //VERTEX_COLOR - -#endif //VERTEX_COLOR_BLEND - - vColor = color; - gl_Position = uMatrixMvp * position; -} - |