UNITY3D 5.0 IBL lighting for light mapping
有计划开发在游戏中组合区块模块的功能。
这个计划面料的最大难题是
连接区块与模块的阴影连接部分不能被平滑地连接起来。
下面是在开发时有所顾虑的问题。
在被一个创建以区块为基础的Light Map的时候,就算光照值只错一点点,区块间的color grading也会有较大的误差。在区块被组合后,区块间可能会产生较大的色调差异。
选择制作Light Map的平台
Unity3D Enlighten Lightmapping engine.

对于 要进行Light Map烘焙处理的纹理,一定记得勾选Static
方向光的角度

要防止以一个模块为基准,阴影以射线的形式出现。
在阴影的方向不是投射在正面上的话,下一个要组合的模块的连接部分可能会无法正常显示阴影。
方向光的光源建立

在供Light Map烘焙用的场景中进行操作,把Baking模式设为Baking。
Intensity :光照强度
Bounce Intensity : GI处理中方向光照的强度
阴影类型:由室外光照产生的阴影称为Hard Shadows,因从外面射入室内微弱的光线而产生的阴影称为Soft Shadow
Baked Shadow Angle :在Mesh平面中设置光照角度时,设置的值大于Mesh平面和光照之间的角度的话,不会产生阴影。
Light Map 创建界面

在Window / Lighting中可见的Light
可以看到场景里的Directional Light(主光)的属性
可以通过在这个窗口中改变实际场景中Directional光照的数值。
Light Map设置中,大体有两个Bounce Intensity。
IBL 材质的Bounce Intensity和Directional Light的Bounce Intensity.
不同情况下,光照材质的Bounce Intensity设置有很大的差异。

场面设置
Unity3d 5.0中渲染设置和Lighting合并了。
Environment Lighting.
Skybox.
一般会使用Unity3d的Procedural sky天空盒材质。
在使用Procedural sky天空盒材质时,IBL材质的HDR处理信息不足,无法作为实际的光照材质。

Procedural sky的灵活运用
Sun size
设置太阳的大小
Atmoshpere Thickness
数值高的话,水平线的Haze会出现霞光
Sky Tint
Procedural sky的基本色乘上任意颜色
Ground
设置 Procedural sky map中的地面颜色
Exposure
设置曝光度
最直接决定光照亮度的选项。


《把Procedural sky用作IBL材料来使用时的渲染》

《使用Unity3d里的Procedural sky,这个材质可以立即作为IBL光照材质使用>
因为Procedural sky是以蓝色调为主,所以越接近白色,蓝色所发生的漫反射就会越厉害。

《HDR图片上用IBL光照方式进行烘焙的示例》

在HDR图片渲染中使用的IBL材质

不可避免的,Bounce强度越高,阴影就越浅。

在Cube Map中,把Exposure设置为0.55
要根据HDR贴图修改Exposure的数值,因为其决定了整体的Bright强度。
重要的是,不要让实际HDR材质的曝光度变成Over bright。

将Ambient Source的Intensity基本值设为1,可以定下一个基准。

用其他IBL材质进行渲染


用其他IBL材质进行渲染


用其他IBL材质进行渲染
当HDR贴图材质作为IBL的材质使用时,通过material的Exposure(曝光度)对亮度进行调整。并且用Rotation不断调试dominant light的方向。
用HDI图片制作cube map
和上面一样,准备了一张全景图。
创建一个新的material。
Material的Shader设成Skybox / Cubamap
将全景图import进Unity3d。
选择import的全景图,将纹理类型设置成cubemap。
将Mapping属性改为latitude-Longitude Layout。
检查Fixup Edge Seams。(这是出于对PBR Roughness的考虑,不做也没有关系)
import之前制作的新的cube map的插槽后,拖拽HDR图片接入。
Light Map烘焙的基本设置

关闭Precomputed Realtime GI
为了方向光的area light(重要)

平常一般使用点光源,但是就圆形光源固有的特性而言,对某些特定的墙面很难产生效果。这时应该使用area light。

area light的Batching
因为以模块为基础创建了区块,area light的范围不要超越区块的界限。
颜色的tone最好在区块的界限之内。

设置完Color后,设置Intensity的时候最好不要超过0.5。
想要有隐约的散光效果的话,要将Bounce Intensity设置得高一些。
LightMap Texture fixed size handle how to.
优化设置的目的
设置texel per unit,即对制作Light map build时候的UV2通道的数据进行了,在最小的纹理的尺寸中,以最大的容量为基准的自动排序。
用Unity3d5压缩的Light Map,质量很不好。

特别是压缩到4bit的移动设备专用的exr的HDR材质等等,发生了严重的褪色。. – 不是Final Gather现象,而是每一个区块都发生了褪色现象。

没有压缩的Light map
Quarter View的情况下,因为背景和玩家的视角近乎呈直角关系,所以应该尽可能地减少因Light map的压缩引起的褪色。
因此,最好不要制作与压缩后容量差距太大的Light Map。
这时,不应只考虑Light Map的容量问题,应该在架构游戏的时候就全面考虑到,应该减少哪一部分的纹理,应如何进行压缩等问题。
下面通过一个例子,来看一下相关的设置

在Cornel Room使用的烘培后的light map。