通过取光线方向相对于法线的反射向量,将其与相机方向相乘(点乘),用pow取幂就行了
着色器代码一样的部分就跳过了
最后效果vec3 cameradir = normalize(u_cameraposition - v_position);
vec3 reflectdir = normalize(reflect(-lightcolor,v_normal));
float spec = pow(max(dot(cameradir,reflectdir),0.0f),128.0f);
那个白色小圆圈就是
不是很亮?那就对了!
毕竟把镜面反射放进去了,如果改为
vec4 ambient = 0.1f * u_lightcolor;
vec4 diffues = diff * u_lightcolor;
vec4 specular = spec * u_lightcolor;
o_color = (ambient + diffues) * v_color + specular;
,那么结果会变成这样


![[Java] [OpenGL ES 3.2] 镜面反射光照 [Java] [OpenGL ES 3.2] 镜面反射光照](http://www.mshxw.com/aiimages/31/706794.png)
