Even with purely static lighting, some dynamic lighting effects are hard to avoid. One of these is a day-night cycle. This can be implemented in AndEngine using either the blending of a black or dark image layer, or a fragment shader program that changes the ambient light level. The shader is by far the easiest approach:
public static final Vector4 ambientColor = new vector4(0.3f, 0.3f, 0.7f, 0.7f);
Here, we define the desired ambient color (in hex RGB: 0x030307, a slightly dark shade of blue) as well as the alpha level (0x07). We used a four-element vector so that we can pass it in one go to the fragment shader:
varying LOWP vec4 vColor; varying vec2 vTexCoord; //texture samplers uniform sampler2D u_texture; //diffuse map //additional parameters for the shader uniform LOWP vec4 ambientColor; void main() { vec4 diffuseColor = texture2D(u_texture, vTexCoord); vec3 ambient = ambientColor.rgb * ambientColor.a; vec3 final = vColor * diffuseColor.rgb ...