生成一段phong光照模型的代码
时间: 2023-05-19 19:00:40 浏览: 76
以下是一个简单的 Phong 光照模型的代码示例:
```c++
vec3 ambientLight = vec3(0.2, 0.2, 0.2);
vec3 diffuseLight = vec3(0.8, 0.8, 0.8);
vec3 specularLight = vec3(1.0, 1.0, 1.0);
float shininess = 32.0;
vec3 ambient = ambientLight * objectColor;
vec3 lightDir = normalize(lightPos - fragPos);
vec3 normal = normalize(Normal);
float diff = max(dot(normal, lightDir), 0.0);
vec3 diffuse = diffuseLight * diff * objectColor;
vec3 viewDir = normalize(viewPos - fragPos);
vec3 reflectDir = reflect(-lightDir, normal);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), shininess);
vec3 specular = specularLight * spec * objectColor;
vec3 result = ambient + diffuse + specular;
```
这段代码计算了一个物体表面的环境光、漫反射光和镜面反射光,并将它们相加得到最终的颜色。其中,ambientLight、diffuseLight 和 specularLight 分别表示环境光、漫反射光和镜面反射光的颜色,shininess 表示物体的光泽度,lightPos 表示光源的位置,fragPos 表示当前片段的位置,Normal 表示当前片段的法向量,viewPos 表示观察者的位置,objectColor 表示物体的颜色。