欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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或者为黑色表示不需要镜面反射,木块和铁最好对比
相关标签: OpenGL 贴图 3d