每个像素运行一次拖动数字,或直接改代码
void main() {
vec3 N = normalize(vNormal);
vec3 L = normalize(vec3(-0.600, 0.8, 1.0));
vec3 V = normalize(uCameraPos - vWorld);
vec3 H = normalize(L + V);
float diffuse = max(dot(N, L), 0.0);
float spec = pow(max(dot(N, H), 0.0), 32.000) * step(0.0, dot(N, L));
vec3 color = vec3(0.96, 0.43, 0.30) * (0.1 + 0.9 * diffuse) + vec3(0.800 * spec);
gl_FragColor = vec4(color, 1.0);
}JS 这一侧gl.uniformMatrix4fv(uModel, …) // 旋转 -0.35 / 0.10
高光取决于视线:H 是灯和视线的中间方向,N 越接近 H 越亮;指数越大,光斑越小越锐。
试一试
- 把光泽度从 8 调到 128
- 转动球体,高光会移动吗?