首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

光照-04.光照贴图(Lighting maps)-5

光照-04.光照贴图(Lighting maps)-5

练习

    调整光源的ambient,diffuse和specular向量值,看看它们如何影响实际输出的箱子外观。

    尝试在片段着色器中反转镜面贴图(Specular Map)的颜色值,然后木头就会变得反光而边框不会反光了(由于贴图中钢边依然有一些残余颜色,所以钢边依然会有一些高光,不过反光明显小了很多)。

解答:

vec3 diffuse = light.diffuse * diff * vec3(texture(material.diffuse, TexCoords));       // texture函数使用前面设置的纹理参数对相应颜色值进行采样,返回vec4类型



    Try creating a specular map from the diffuse texture that uses actual colors instead of black and white and see that the result doesn't look too realistic. 如果你不会处理图片,你可以使用这个带颜色的镜面贴图。



最终效果:
1461575-b88c95e67446e73e.png


-添加一个叫做放射光贴图(Emission Map)的东西,即记录每个片段发光值(Emission Value)大小的贴图,发光值是(模拟)物体自身发光(Emit)时可能产生的颜色。这样的话物体就可以忽略环境光自身发光。通常在你看到游戏里某个东西(比如 机器人的眼,或是箱子上的小灯)在发光时,使用的就是放射光贴图。使用这个贴图(作者为 creativesam)作为放射光贴图并使用在箱子上,你就会看到箱子上有会发光的字了。

机器人的眼

项目代码。
实验结果如下:
返回列表