com.bladecoder.engine.shading.cel.fragment.copy.glsl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of blade-engine Show documentation
Show all versions of blade-engine Show documentation
Classic point and click adventure game engine
#ifdef GL_ES
#define LOWP lowp
#define MED mediump
#define HIGH highp
precision mediump float;
#else
#define MED
#define LOWP
#define HIGH
#endif
#if defined(specularTextureFlag) || defined(specularColorFlag)
#define specularFlag
#endif
#ifdef normalFlag
varying vec3 v_normal;
#endif //normalFlag
#if defined(colorFlag)
varying vec4 v_color;
#endif
#ifdef blendedFlag
varying float v_opacity;
#ifdef alphaTestFlag
varying float v_alphaTest;
#endif //alphaTestFlag
#endif //blendedFlag
#if defined(diffuseTextureFlag) || defined(specularTextureFlag)
#define textureFlag
varying MED vec2 v_texCoords0;
#endif
#ifdef diffuseColorFlag
uniform vec4 u_diffuseColor;
#endif
#ifdef diffuseTextureFlag
uniform sampler2D u_diffuseTexture;
#endif
#ifdef specularColorFlag
uniform vec4 u_specularColor;
#endif
#ifdef specularTextureFlag
uniform sampler2D u_specularTexture;
#endif
#ifdef normalTextureFlag
uniform sampler2D u_normalTexture;
#endif
#ifdef lightingFlag
varying vec3 v_lightDiffuse;
#if defined(ambientLightFlag) || defined(ambientCubemapFlag) || defined(sphericalHarmonicsFlag)
#define ambientFlag
#endif //ambientFlag
#ifdef specularFlag
varying vec3 v_lightSpecular;
#endif //specularFlag
#ifdef shadowMapFlag
uniform sampler2D u_shadowTexture;
uniform float u_shadowPCFOffset;
varying vec3 v_shadowMapUv;
#define separateAmbientFlag
float getShadowness(vec2 offset)
{
const vec4 bitShifts = vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0);
return step(v_shadowMapUv.z, dot(texture2D(u_shadowTexture, v_shadowMapUv.xy + offset), bitShifts));//+(1.0/255.0));
}
float getShadow()
{
return (//getShadowness(vec2(0,0)) +
getShadowness(vec2(u_shadowPCFOffset, u_shadowPCFOffset)) +
getShadowness(vec2(-u_shadowPCFOffset, u_shadowPCFOffset)) +
getShadowness(vec2(u_shadowPCFOffset, -u_shadowPCFOffset)) +
getShadowness(vec2(-u_shadowPCFOffset, -u_shadowPCFOffset))) * 0.25;
}
#endif //shadowMapFlag
#if defined(ambientFlag) && defined(separateAmbientFlag)
varying vec3 v_ambientLight;
#endif //separateAmbientFlag
#endif //lightingFlag
#ifdef fogFlag
uniform vec4 u_fogColor;
varying float v_fog;
#endif // fogFlag
void main() {
#if defined(normalFlag)
vec3 normal = v_normal;
#endif // normalFlag
#if defined(diffuseTextureFlag) && defined(diffuseColorFlag) && defined(colorFlag)
vec4 diffuse = texture2D(u_diffuseTexture, v_texCoords0) * u_diffuseColor * v_color;
#elif defined(diffuseTextureFlag) && defined(diffuseColorFlag)
vec4 diffuse = texture2D(u_diffuseTexture, v_texCoords0) * u_diffuseColor;
#elif defined(diffuseTextureFlag) && defined(colorFlag)
vec4 diffuse = texture2D(u_diffuseTexture, v_texCoords0) * v_color;
#elif defined(diffuseTextureFlag)
vec4 diffuse = texture2D(u_diffuseTexture, v_texCoords0);
#elif defined(diffuseColorFlag) && defined(colorFlag)
vec4 diffuse = u_diffuseColor * v_color;
#elif defined(diffuseColorFlag)
vec4 diffuse = u_diffuseColor;
#elif defined(colorFlag)
vec4 diffuse = v_color;
#else
vec4 diffuse = vec4(1.0);
#endif
#if (!defined(lightingFlag))
gl_FragColor.rgb = diffuse.rgb;
#elif (!defined(specularFlag))
#if defined(ambientFlag) && defined(separateAmbientFlag)
#ifdef shadowMapFlag
gl_FragColor.rgb = (diffuse.rgb * (v_ambientLight + getShadow() * v_lightDiffuse));
//gl_FragColor.rgb = texture2D(u_shadowTexture, v_shadowMapUv.xy);
#else
gl_FragColor.rgb = (diffuse.rgb * (v_ambientLight + v_lightDiffuse));
#endif //shadowMapFlag
#else
#ifdef shadowMapFlag
gl_FragColor.rgb = getShadow() * (diffuse.rgb * v_lightDiffuse);
#else
//gl_FragColor.rgb = (diffuse.rgb * v_lightDiffuse);
float intensity;
vec4 color;
intensity = dot(v_lightDiffuse,normal);
if (intensity > 0.80)
color = vec4(1.0,0.5,0.5,1.0);
else if (intensity > 0.2)
color = vec4(0.6,0.3,0.3,1.0);
else
color = vec4(0.2,0.1,0.1,1.0);
gl_FragColor = color;
#endif //shadowMapFlag
#endif
#else
#if defined(specularTextureFlag) && defined(specularColorFlag)
vec3 specular = texture2D(u_specularTexture, v_texCoords0).rgb * u_specularColor.rgb * v_lightSpecular;
#elif defined(specularTextureFlag)
vec3 specular = texture2D(u_specularTexture, v_texCoords0).rgb * v_lightSpecular;
#elif defined(specularColorFlag)
vec3 specular = u_specularColor.rgb * v_lightSpecular;
#else
vec3 specular = v_lightSpecular;
#endif
#if defined(ambientFlag) && defined(separateAmbientFlag)
#ifdef shadowMapFlag
gl_FragColor.rgb = (diffuse.rgb * (getShadow() * v_lightDiffuse + v_ambientLight)) + specular;
//gl_FragColor.rgb = texture2D(u_shadowTexture, v_shadowMapUv.xy);
#else
gl_FragColor.rgb = (diffuse.rgb * (v_lightDiffuse + v_ambientLight)) + specular;
#endif //shadowMapFlag
#else
#ifdef shadowMapFlag
gl_FragColor.rgb = getShadow() * ((diffuse.rgb * v_lightDiffuse) + specular);
#else
gl_FragColor.rgb = (diffuse.rgb * v_lightDiffuse) + specular;
#endif //shadowMapFlag
#endif
#endif //lightingFlag
}