上帝造物,第一天,上帝说:“要有光”,于是有了光。
如果没有光,那么世界就是全是黑色;游戏世界中,如果没有光,那么游戏界面就是一片黑色。所以,无论多么绚丽的游戏界面,都是因为有了光,才有了颜色。
现实中的光是一种物质,虽然它具有波粒二象性,但是无论怎么说,它都是从光源出发,照射到物体上,然后进入人的眼睛,光是有颜色的,眼睛的瞳孔也是有面积的,根据瞳孔每个点进入的光线颜色不同,我们才能在大脑中形成一个画面,也就是眼前的世界。
游戏世界中,想要还原现实世界,那么最合理的办法就是光线追踪,还原光线的本质,创建从光源出发的无数射线物质,跟着光线移动,遇到物体要反射,要折射,要吸收,然后进入摄像机的镜头,根据镜头上所有进入光线的颜色,形成一幅游戏画面。
但是,这太难了。虽然计算机有强大的计算量,但是依然无法满足实时光线追踪的要求,所以游戏这种实时程序,暂时还是无法使用光线追踪算法(动漫电影等基本都是会使用光线追踪算法离线算好),游戏开发者,就找到了一个简单的方法,总结了很多模型,去模拟现实中的光照。
当光线照射到一个物体上后,光线会分成三部分,第一部分,反射,第二部分,吸收,第三部分,进入物体。而第三部分的光线又分成两种情况,吸收和离开物体。
也就是说,光线照射到物体上后,有一部分光线被吸收,另外一部分离开物体。离开物体的光线,一部分是反射,一部分是散射。在光照模型中,称之为高光反射和漫反射。高光反射只有一个方向,漫反射没有方向。
除此之外,在标准光照模型中还存在自发光和环境光。
原创技术文章,撰写不易,转载请注明出处:电子设备中的画家|王烁 于 2017 年 7 月 30 日发表,原文链接(http://geekfaner.com/unity/shader/LightModel/)