材质和光照贴图
2017-01-12 本文已影响0人
龙遁流
材质(materials)
在真实世界里,每个物体会对光产生不同的反应。钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体不会散射(Scatter)很多光却会反射(Reflect)很多光,结果看起来就有一个较小的高光点(Highlight),有些物体散射了很多,它们就会产生一个半径更大的高光。如果我们想要在OpenGL中模拟多种类型的物体,我们必须为每个物体分别定义材质(Material)属性。
冯氏光照模型的材质属性ambient材质向量定义了在环境光照下这个物体反射的是什么颜色;通常这是和物体颜色相同的颜色。
diffuse材质向量定义了在漫反射光照下物体的颜色。漫反射颜色被设置为(和环境光照一样)我们需要的物体颜色。
specular材质向量设置的是物体受到的镜面光照的影响的颜色(或者可能是反射一个物体特定的镜面高光颜色)。最后,shininess影响镜面高光的散射/半径。
光照贴图(lighting maps)
现实世界的物体通常不会只有一种材质,而是由多种材质组成。
漫反射贴图(Diffuse Map)
为了对每个原始像素独立设置diffuse颜色,使用漫反射贴图模拟一个物体的漫反射颜色。
镜面贴图(Specular Map)
使用镜面贴图模拟物体的镜面高光的亮度。可将漫反射贴图转化为黑白图样并调节亮度和对比度来生成镜面贴图。
放射光贴图(Emission Map)
即记录每个片段发光值(Emission Value)大小的贴图,发光值是(模拟)物体自身发光(Emit)时可能产生的颜色。这样的话物体就可以忽略环境光自身发光。通常在你看到游戏里某个东西(比如机器人的眼,或是箱子上的小灯在发光时,使用的就是放射光贴图。
图片和一些文字来源于https://learnopengl-cn.github.io,本人收集作为笔记,如有侵权,望告知