第二十九章 颜色总结

创建一个白色光源,将其和物体颜色值相乘,得到的是物体被人所感知的颜色。

一个物体作为被投光对象,另一个物体代表光源的位置。冯氏光照模型:环境,漫反射,镜面光照组成

环境光照添加到场景里:用光的颜色乘以一个很小的常量环境因子,再乘以物体的颜色,然后将最终结果作为片段的颜色:
float ambientStrength = 0.1;
vec3 ambient = ambientStrength * lightColor;

vec3 result = ambient * objectColor;
FragColor = vec4(result, 1.0);
漫反射光照:需要指定光纤和片段的角度,使用法向量:两个单位向量夹角越小,点乘越接近1。则角度越大,光对片段的影响越小。
1.法向量:垂直于片段的向量
2.定向的光纤:是光源位置和片段位置之间向量差的方向向量。
计算漫反射光照:首先在片段着色器中声明uniform vec3(作为光源的位置),其次使用lightingShader.setVec3进行赋值,最后需要片段的世界位置:
通过把顶点位置属性乘以模型矩阵,就可以变换到世界空间坐标中了。下面需要在片段着色器中计算光照:
首先计算光源和片段位置之间的方向向量,把法线和最终的方向向量都进行标准化:
vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos);————光源位置减去片段位置得到光源指向
其次,通过对法向量norm和光源的方向向量lightDir进行点乘&#

你可能感兴趣的:(OPGENGL,算法,线性代数,机器学习)