#version 300 es precision mediump float; in vec4 pos; in vec3 v_surfaceToLight; uniform vec3 u_baseColor; uniform vec3 u_maxColor; uniform float u_light; out vec4 outColor; void main() { vec4 fragNormal = normalize(pos); float light = max(dot(fragNormal.xyz, normalize(v_surfaceToLight).xyz), u_light); float y = pos.z; if (y < 0.0) { y = y * -1.0; } vec3 color = mix(u_baseColor, u_maxColor, y); outColor = vec4(color, 1.0); outColor.rgb *= light; }