全局光照

35 篇文章 0 订阅

原文连接:全局光照

全局光照

全局光照是一种表达光线从表面反射到另一个表面(间接光)的工作方式的模型,而不仅限于从光源直接击中表面的光(直接光)。使用间接光能使虚拟世界看起来更加真实和相互连接,因为物体之间相互影响显示效果。一个经典的例子是“颜色出血”效果。比如太阳光照射一个红色沙发时,红光会被反射到沙发后面的墙上。另一个例子是太阳照射一个洞穴入口处的地面时向内部各个方向反射,洞穴内部也会被照亮。
alt text
场景中的全局光照。注意间接光微妙影响

GI概念

传统的视频游戏和其他的实时图形应用一直被限制于直接光照,因为间接光需要的计算太慢而只能使用在CG动画电影一类的非实时情况。一种绕过这种限制计算物体和表面间接光的方式,仅适用于事先知道在游戏中不会移动的物体(也就是静态的)。这样耗时的计算可以事先进行,由于物体不会移动,预计算的间接光在运行时仍然是正确的。Unity支持的这种烘焙GI(也被称为烘焙光照贴图),名称来源于”the back”:间接光预处理和存储(烘焙)的过程。除了间接光照,烘焙GI利用足够多的计算时间为面积光和间接光生成的柔软阴影比正常使用实时技术得到的效果更真实。
另外,Unity 5.0增加了一个称为Precomputed Realtime GI的新技术。它也需要和上面提到的烘焙模式相似的预处理阶段,同样也限定于静态物体。但是它不是只预处理场景生成时的光线反射,而是预处理所有可能的光照反射并且编码这些信息以在运行时使用。因此基本上对所有静态物体,这个技术回答了“任何光照射这个表面时,它向什么方向反射?”这个问题。Unity将光线能传播的路径保存起来在后面使用。最终的光照在运行时将实际的光照呈现到之前计算的光线传播路径中完成。
这意味着光照的数量和类型,它们的位置、方向及其他属性都可以被修改,并且间接光照会相应更新。同样也可以改变物体的材质属性,比如颜色,它们吸收多少光或它们自身发出多少光。虽然预处理实时GI也能得到柔软的阴影,它们形成的阴影通常比烘焙GI的效果要粗糙,除非是场景非常小的情况下。同时注意由于预处理实时GI在运行时的少数帧时间内迭代进行最终的光照处理,因此如果光照发生了很大变化,将需要较多帧数光照才能完全生效。尽管这个过程在实时应用中足够快,如果目标平台的资源非常受限制,采用烘焙GI能得到更好的运行时效果。

GI的局限性

烘培GI和预处理实时GI都有一个局限性,它们只能将静态物体包含到烘培/预处理结果中。因此移动的物体不能向其他物体反射光照,反之也不行。但是它们仍可以使用光探测器获取静态物体的反射光。光探测器位于场景中的一些位置上,在烘培/预处理过程中收集(探测)光照,在运行时照射非静态物体的间接光照就可以通过任意时刻离物体最近的探测器来近似表示。例如,一个红球滚到白墙附近时,不会将红色发散(bleed)到墙上,但是一个红墙附近的白球能通过光探测器获取墙壁上散出的红色。

GI效果的例子

  • 改变一个定向光的方向和颜色来模拟太阳划过天空。改变定向光时,同时改变天空盒可以在运行时制造真实的一天之内的时间变化效果。(实际上新增加的内置天空盒程序很容易实现这个功能)
  • 在一天之中,透过窗户到达室内的阳光在地板上移动,并且光照真实地反射到房间周围和天花板上。当阳光照射红色沙发时,红色的光反射到沙发后面的墙上。将沙发的颜色从红色改编为绿色,沙发后面墙上溅射的颜色也会从红色变为绿色。
  • 调整一个霓虹标记的材质散射属性,当打开时开始向周围环境中发光。
    下面的内容将讨论使用这些特征的细节。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值