光照贴图
如果需要描述物体的材质,仅仅描述漫反射,环境光照,高光项是远远不够的,比如:
一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽,所以它没有镜面高光,轮毂非常闪亮(如果你洗车了的话)。汽车同样会有漫反射和环境光颜色,它们在整个物体上也不会是一样的,汽车有着许多种不同的环境光/漫反射颜色。总之,这样的物体在不同的部件上都有不同的材质属性。我们希望通过某种方式对物体的每个片段单独设置漫反射颜色。
漫反射贴图
可以将需要细节化的物体光照信息做成纹理存储,并在shader中读取它。
struct Material {
sampler2D diffuse;
vec3 specular;
float shininess;
};
...
in vec2 TexCoords;
镜面光贴图
我们同样可以使用一个专门用于镜面高光的纹理贴图。这也就意味着我们需要生成一个黑白的(如果你想得话也可以是彩色的)纹理,来定义物体每部分的镜面光强度。下面是一个镜面光贴图(Specular Map)的例子:
struct Material {
sampler2D diffuse;
sampler2D specular;
float shininess;
};
https://learnopengl-cn.github.io/02%20Lighting/04%20Lighting%20maps/#_3