有四种类型光照以及三种光源。本章将介绍使用一个“定向”光源如何实现简单光照。在随后的章节会介绍其他两种类型的光源和镜面光照。
光照对于视频游戏的真实外观和感觉是非常重要的。
由于固定功能管线从directx10中删除了,因此现在需要人工实现光照了。一般地,光照模型越精确,计算量就越大以及越复杂。在视频游戏中,在保持游戏运行在30fps及以上同时,需要找到一种方式来实现光照。当为一个电影做场景模型时,由于每一帧都是提前渲染好的,能够承担只花费数小时而不是好几天来渲染一帧。本节将会学习到如何实现简单光照,定向光照,也叫做平行光照。
当为了找到光击中的像素颜色而做计算时,在颜色变量中的颜色值可能比1大或比0小。为了解决这个问题,就要使用HLSL语言中叫做saturate的函数。
光照类型
可将不同种类的光照分为以下四组:
环境光:
环境光是场景的一部分,它不是由光源直接照射但是也不是漆黑一片,它可以由其他物体反射或折射的光构成。环境光一般来说是场景中的最低量的光。在现实生活中,环境光就是各种界面反射的光线,它会点亮整个空间,但它不是由光源直射造成的。就像之前所说,动画能够承担复杂的光照模型,且能够计算空间中的所有的光线并点亮整个空间,但是在视频游戏中,没有时间来做这些计算,因此,可以使用一个简单的示例来确保场景部分获得一点能够看清所有事物的光即可。为了获得这个值,做了一个叉乘,是由光的环境颜色和材质的漫反射颜色分量进行叉乘。
比如,LightAmbient(0.5,0.5,0.5)*MaterialDiffuse(0.75,1.0,0.5)=(0.375,0.5,0.25)
漫反射光:
当光撞击物体表面时,在屏幕上所