第 3 课:Diffuse Lighting
实现
uniform sampler2D iChannel0;
varying vec3 vPos;
varying vec3 vNormal;
varying vec2 vUv;
void main() {
vec3 objectColor = texture2D(iChannel0, vUv).rgb;
vec3 fragNormal = normalize(vNormal);
vec3 lightColor = vec3(1.0, 1.0, 0.75);
vec3 lightDir = normalize(vPos - vec3(-1.0, 2.0, 2.0));
float ambient = 0.2;
float diffuse = max(dot(fragNormal, -lightDir), 0.0);
vec3 result = objectColor * lightColor * (ambient + diffuse);
gl_FragColor = vec4(result, 1.0);
}