您的位置:首页 > 移动开发 > Unity3D

烘焙光

2018-02-10 23:19 141 查看
原文链接:烘焙光

烘培光是设置为烘培模式的光照组件

烘培光可以用来表示局部环境光,而不是功能齐全的光照。Unity在运行时之前预计算这些光照的照明,并在在任何运行时灯光计算中都不会考虑它们。这意味着烘培光没有运行时开销。

Unity将烘培光的直接和间接光烘培到光照贴图(照明静态GameObject)和光探测器(照亮动态GameObject)。即使在动态GameObject(参见Wikipedia: Specular highlight了解更多信息)上,烘培光也不能形成镜面光照效果。烘培光不会响应玩家的动作和场景中发生的事件。它们主要用来增加黑暗区域的亮度,而不用调整场景中所有光照。

烘培光也是唯一不能从动态GameObject向动态GameObject投射阴影的光照类型。

烘培光的优势

将静态GameObject向静态GameObject投射的高质量阴影存储到光照贴图中,而不增加成本。

提供间接照明

静态GameObject的所有光照只形成一个可以从着色器的光照贴图中获取的纹理。

烘培光的缺点

没有实时直接光(也就是说没有镜面光照效果)

动态GameObject不能向静态GameObject投射阴影

只能使用光探测器得到静态GameObject向动态GameObject投射的低分辨率阴影

与实时光相比,光照贴图纹理会占用更多内存,因为光照贴图需要额外包含直接光照信息

技术细节

对于烘培光,Unity预处理除了从相机到表面这段光线以外的所有光线路径。查看文档光照模式了解更多关于光照路径的信息。



烘培模式:所有光照路径会被预处理

Unity会预处理直接烘培光,也就是说在运行时Unity不知道光照的方向信息。少量的纹理操作会处理场景区域烘培光的所有光照计算。没有方向信息,UnityUnity不能进行镜面反射的计算。如果要得到镜面反射,可以使用反射探测器或者混和光或者实时光。查看文档directional light maps了解更多内容。

烘培光无法在运行时照亮动态GameObject。动态物体从烘培光获取光照的唯一方法是通过光探测器。这是烘培光和任何Subtractive mode Mixed Lights的唯一区别(除了主要方向光),Subtractive模式的混和光会在运行时为动态GameObject计算光照。

2017-06-08发布 limited editorial review

光照模式在5.6增加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity manual light