efl/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd

61 lines
1.6 KiB
Plaintext

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;
}