stringkun.github.io/DemoShow/ex…
varying vec3 vNormal;
void main() {
vNormal = normalize(normalMatrix * normal);
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
uniform vec3 light;
varying vec3 vNormal;
uniform vec3 color;
void main() {
//这个是灯光与法线的dot
float diffuse = dot(normalize(light), vNormal);
float dir = length(vNormal * vec3(0.0, 0.0, 1.0));
if (dir < 0.5) {
dir = 0.0;
gl_FragColor = vec4(dir, dir, dir, 1.0);
}
else {
//与等的角度越小的 diffuse越大 越亮
if (diffuse > 0.8) {
diffuse = 1.0;
}
else if (diffuse > 0.5) {
diffuse = 0.6;
}
else if (diffuse > 0.2) {
diffuse = 0.4;
}
else {
diffuse = 0.2;
}
gl_FragColor = vec4( color* diffuse, 1.0);
}
}