lightmapping方式的比较


1.single lightmaps

 

该类型是最简单的一种lightmmaping方式,对性能及空间的消耗相对较小,可以很好的表现大多数静态场景的光影效果,但是在作用在游戏对象时不会考虑到使用bump/specshader类型的材质,这是应对该类型的材质需要在实时光源照射下才会起作用,另外,所烘焙出来的光照贴图不做作用于场景中动态物体,比如动态物体在阴影时,不会吧这个动态物体变的暗些,当然添加light probes是解决这个问题的一种方法,同时会产生双重阴影,

 

single lightmaps烘焙时考虑到是bump/specshader类型的材质,但也是把静态的凹凸效果烘焙在lightmap中,注意.只有在resolution值足够大时,或者说使用lightmap尺寸足够大时,才能表现这些凹凸细节,这样会导致需要的用到的更多张lightmap,因此他不能作为一种通用方案,只能用在少时物体上,如果想在使用光照贴图的同时为静态物体增加凹凸效果,那么可以使用directional lightmaps

 

2.dual lightlmaps

如果用户希望在大的游戏场景中表现更多的光影细节,同时多一些实时光影,是动态的物体和静态的物体的光影融合的更加协调一些且不会场景过大而没有足够的性能来完成这些工作,dual lightmaping 是满足这一要求的理想方案.

 

通过duallightmaps,j将渲染区域分为实时和非实时区域,并烘焙远近两种光影贴图,离摄像机远的区域为静态光影区域,不用表现太多的细节,直接用光照图来照亮,而近的区域这需要实时生成的阴影,进行实时光照和bump/spec 映射,同时还融合了near光照贴图中烘焙出来的颜色反射效果,

 

在远近距离的临界区域会做出平滑的差值过渡,这样一来,即丰富了大场景中的光影效果和近距离的光影细节,有不会浪费太多的性能和空间生产大量的实时光影,

 

要使用duallightmaps 那么需要设置camera属性中的rending path 为DeferredLighting,将需要在近区域实时光源的lightmaping 属性设置为auto ,此外,远近区域的划分使用的是shadow distance(实时阴影距离)

 

dual lightmaps 最终会生成两种光照图,一个是远处使用的far光照图,一个是在近处使用的near光照图,far光照图和single Lihgtmaps生成的far光照图内容一致,即所有非实时光源的光照信息,在near光照图中保存的只是实时渲染时一些没有的或无法实时计算的信息,比如bakedonly光源的光照信息,auto光源的间接光源以及天空光

 

3.directional  lightmaps

 

directional lightmaps 可以是静态物体在利用光光照贴图进行光照的同时混合bump/spec 映射的效果,从而丰富了整个游戏场景的光影细节,让整个场景更加生动逼真,它和dual lightmaps的区别是:directional lightmaps 是作用在整个场景的,不受距离限制,而且在没有实时光源的条件下生成实时bump/spec映射,这是因为光源的信息已经保存到了scale光影图中,

 

directional lightmaps 和single lightmaps一样,会在与动态的物体交互的地方产生双重阴影

 

你可能感兴趣的:(Unity3D,内置)