OpenGL学习之路之光照贴图
程序员文章站
2022-06-11 11:38:21
...
冯光照模型
FragColor =vec4((diffuse + ambient + specular) * objColor,1.0f);
环境光–ambient
ambient具体能表现无光照区域的颜色,在物体较暗的部分加上漫反射贴图会更真实
vec3 ambient=texture(material.diffuse, TexCoord).rgb * ambientColor;
漫反射贴图—diffuse
出现的大概像表面的纹理像木箱的表面,相当于简单反射到眼睛的获得的颜色
vec3 diffuse=texture(material.diffuse,TexCoord).rgb * max( dot( lightDir, Normal), 0) * lightColor;
//vec3 diffuse=texture(material.diffuse,TexCoord).rgb;
镜面反射—specular
可以将光照和高光进行反射,提高真实度
float specularAmount=pow(max(dot(reflectVec,cameraVec),0),material.shininess); //高光的集中度,倍数越高,同一视角高光点越小
vec3 specular=texture(material.specular,TexCoord).rgb * specularAmount * lightColor;//镜面反射图中为数值0或者为黑色表示不需要镜面反射,木块和铁最好对比