问个问题,Light中Realpc 访问time capsule和Baked的区别

今天看啥 热点:
Unity 5 全局光照GI与新的烘焙系统初探,unitygi
Realtime GI,实时全局光照,听上去就是一个非常高大上的词,但是越高大上就越令人心生敬畏,因为世上没有免费的午餐,越好的效果意味着越多的消耗,对于移动平台来说,这样的消耗受不受的起呢?首先来说说GI是干啥的,非常粗略的来描述下,如果说我们以前的光照系统就是由光源 - 物体 - 视点组成的话,那么全局光照系统就是由光源 - n多环境反射光 - 物体 - 视点。就是说GI额外包括了环境反射光的计算,它可以使得渲染出来的场景物体间的光影交互更为真实。
如果是离线烘焙的话,n多的环境反射光就是通过辐射度算法或者是光线追踪算法一点点计算出来的,但是实时渲染没有这么多的时间。为了实现实时的GI,简单的说来,Unity(Enlighten GI)需要预计算一些信息,这些信息大概包括场景间物体之间的位置、反射关系,以及一个环境反射树(这些都是我瞎猜的),在实时渲染时,利用这些信息Unity会动态生成一张间接光照贴图,像原先的Lightmap一样只不过上面记录的是物体表面受到间接光的信息,这样在实时渲染时就会看到物体受到反射光的影响了。
因此Unity GI有了如下特点:
而GI产生的开销主要包括:
GI与Lightmap
看的出来GI的额外性能消耗是可以接受的,我在手机上进行测试,即使是很大很复杂的场景跑起来也完全没有问题(当然也是因为我是在iPhone6上测的)。不过多数情况下如果说你的场景中不存在光线变化或是动态的自发光材质,还是固定镜头的话(没错,我说的就是RPG),GI对于游戏来说仍然是没有用处的,所有GI能做到的事情用简单的Lightmap就能达到同样的效果。现在问题来了,Unity配合GI又搞了一个新的烘焙系统,这个系统要怎么玩儿呢。
首先,现在当你说烘焙时一定要弄明白你想烘焙的是Realtime GI所使用的间接光照图和场景树信息还是Static Lightmap,然后以此决定使用光源的类型是Realtime/Mixed/还是Baked。首先来说烘焙的方式,在Lighting面板中Precomputed Realtime GI 与Baked GI分别对应Realtime GI与Static Lightmap的烘焙。
组合起来就是三种(跟我说你啥都不烘的可以走了):
关闭Baked GI或者场景中的全部光源类型设置为Realtime。这意味着没有任何光照颜色会被预先烘焙计算,引擎在烘焙时只是存储场景内静态物体间的关系,当烘焙完成后你可以自由的调整光源或物体材质,并实时地看到效果。
此时在Scene中观察Baked结果可以看到没有任何静态颜色被烘焙出来。
在仅使用RealtimeGI时,光源应该选择Realtime类型。烘焙选项Realtime Resolution对应前文所说的间接光照图,值越高间接光的效果就越明显(其实应该是越准确,当分辨率太低时间接光会因像素过滤而变弱)
Realtime Resolution = 10
Realtime Resolution = 1
只烘焙Static Lightmap
取消Precomputed Realtime GI的勾选即为同原来一样的纯静态光照图烘焙。光源的选择则同原来一样,Realtime的灯光不参与烘焙,但同时作用于动态与静态物体上;Mixed光源参与烘焙,实时运行时仅作用于非静态物体;Baked光源仅作用于光照烘焙,不参与实时光照计算。
再次观察SceneView可以看到烘焙出来的颜色。
在Lighting面板中的Lightmaps页签中也可以看到烘焙出来的光照图。咦?怎么有两张,稍后解释
如果使用纯Static Lightmap烘焙时会有一个Indirection Resolution的设置,这个设置就对应于Precomputed Realtime GI中的Realtime Resolution,同样是控制间接光的影响,产生的效果是一样的。
如果同时烘焙Static Lightmap与RealtimeGI会发生什么事情呢?首先光源产生的光照以及物体间的二次反射光线都会被直接烘焙在静态光照贴图上,因此前文所提使用GI可以自由实时调整光源或是物体材质的效果在这种烘焙模式下都是没有用的,但是自发光材质以及天空光产生的辐射光线在这种模式下仍然是可以实时变化并叠加作用于已烘焙的颜色上。
光照烘焙颜色信息
辐射度信息
最终合成颜色
辐射度信息图中除了自发光的红色外还有一点点靛青色,这是天空盒产生的颜色,在Environment Lighting中调整Ambient Intensity可以控制天空盒对场景整体明暗的影响。总的来说主体颜色还是静态烘焙出来的Lightmap控制,但是增加了GI中的动态天空光和自发光。总的来说不建议使用这种方式进行场景渲染,又消耗了静态Lightmap和GI所需的内存,又消耗了GI的计算资源,效果还没单个使用的好。
在我看来GI最大的好处是可以让美术实时的看到使用Lightmap烘焙后的场景效果,也就是说首先关闭Baked GI仅烘焙一些Precomputed Realtime GI,随后美术就可以随意的调整光源、物体材质、天空盒等数值并实时观察到场景的最终效果,最后当一切都满意后关闭Precomputed Realtime GI使用Baked GI进行光照贴图的烘焙即可。
Lightmap的其他设置(坑)
这里有大坑,我先挖会儿以后填
相关搜索:
相关阅读:
相关频道:
Android教程最近更新Unity引擎架构设计(6)
上篇给大家解答了:为什么场景烘焙出来的lightmap上有Realitime灯光的颜色?和为什么在Unity
5中动态更换lightmap没有作用?&这两个问题。今天,我们继续给大家解答Unity 5 全局光照系统Enlighten中的其他常见问题。
为什么烘焙的point灯光会有一圈圈的色阶变化?
& &大家在烘焙lightmap的时候可能会发现类似下图的奇怪效果。
& &图中我们使用了一盏Baked的point light,烘焙之后发现光照效果会出现一圈圈的色阶突变。
& &原因是我们使用的是压缩版本的lightmap。如下图Lighting窗口中选项所示:
& &这个压缩虽然可以帮助我们减少游戏最后的打包体积,但是对场景的光照效果也会产生影响,所以对于要追求最好的光照效果的场景建议不要勾选此选项。
& &最后我们来看看去掉此选项后的效果,现在,色阶变化不存在了。
为什么在Realtime灯光下的效果和改为Baked烘焙的效果差别很大?
& & 这个的问题美术同学会经常遇见。美术同学一般在烘焙场景之前会先把灯光都设为Realtime,来实时查看调整灯光参数后的效果。调整到较满意的效果之后,就把灯光类型改为Baked然后进行烘焙。
& &在Unity 4中这样做一般可以达到烘焙之后的效果与实时灯光的效果比较接近,但是在Unity 5中可能会发现差别很大。究其原因主要有二点。
& &1、在上面我们已经提到,新的灯光参数Bounce Intensity,这个参数的调整会影响最终烘焙效果中间接光分量的比例。
& &2、Unity 5中对Gamma和Linear颜色空间的实现做了调整以更符合真实情况,但这也导致实时灯光效果与烘焙效果在两种颜色空间中存在差异。
& &所以,建议美工同学在Linear颜色空间中进行Realtime灯光的调整。因为在Linear颜色空间下,实时灯光与烘焙效果最为接近。不过由于目前移动平台并不支持颜色空间切换,我们可以让项目在PC平台下切换为Linear颜色空间。该选项在Player
Settings中的Other Settings里,如下图所示:
& &另外,为了让Bounce Intensity参数的调整也能反映在Realtime灯光中,建议美术同学在实时调整灯光参数的时候在Lighting窗口中勾选Precomputed Realtime GI,如下图所示:
当然Precomputed Realtime GI也是需要在场景静态物体的位置固定之后烘焙一次的,所以如果怕会忘记烘焙的话也可以勾选Build旁边的Auto选框。
& & 最后,在调整好灯光效果之后我们把灯光类型改为Baked(或Mixed),取消勾选Precomputed Realtime GI,并勾选Baked GI,然后进行烘焙。
下面展示了两种颜色空间下Realtime灯光与烘焙效果的对比:
& & 我们可以看到Linear颜色空间下两种光照方式的效果是最为接近的。
& & 另外还有朋友曾经咨询:项目的场景在手机上的烘焙效果与Editor中看到的实时灯光的差异非常的大,已经远远比上面对比图中的差别要大了。
& &&&如果大家也有这样的问题,那么请注意:不同的屏幕对于同一种颜色的表现都会有或多或少的差别,要对比手机与电脑上看到的颜色差别不能直接进行对比,而应该让两个效果在同一个屏幕中对比。一个简单的办法是在手机中截屏然后传到电脑中进行对比。感兴趣的同学可以尝试,保证你一定会为手机与电脑屏幕的颜色解析差异感到惊讶。
怎么让不同物体占用不同数量的lightmap像素?
& &这个问题经常会有开发者遇见。主要目的是为了最大限度缩减lightmap的大小,通过让场景中次要物体的lightmap效果粗糙一点来节省游戏的空间。
& &其实做法非常简单,我们可以通过lighting窗口中Object页面里的Scale
In Lightmap来设定某个选定的Object在lightmap中占用像素的多少,默认是1对于重要的物体通过提高这个数值来增加此物体使用的lightmap像素,反之我们可以把这个值设为0到1之间来减少此物体所使用的lightmap像素。选项如下图所示:
为大家解答的Unity 5 全局光照系统Enlighten问题就到这里了,如果大家还有其他问题希望和我们的技术工程师直接进行交流,欢迎大家访问中文官方论坛进行提问:&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:164234次
积分:2754
积分:2754
排名:第14120名
原创:69篇
转载:293篇
评论:18条
(1)(13)(17)(4)(13)(5)(12)(21)(96)(36)(19)(13)(17)(41)(32)(23)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Unity5 新功能解析--GI(全局光) - CSDN博客
Unity5 新功能解析--GI(全局光)
Unity5带来的最大的改变就是全新的GI,在烘焙引擎上抛弃了4的beast,使用了虚幻采用的Enlighten,引入了实时的全局光。这里对UNITY5的新的光照系统做一总结.
新加入了一种只用于烘焙的光照类型 Area Light
& & & & & & & 面积光的光源有形状,是一个矩形区域,有位置,有方向,方向是超矩形的一面,矩形的背面没有光,并且随距离衰减直到没有。它用于模拟大量的光源和在一起的效果,如街道,但是因为计算复杂,所以只用于烘焙
构成 : 可实时更新的lightmap + 可实时更新的光照探头(light probe)+ 可实时更新的cubemap(Reflection probe)
实时全局光只实时计算物体之间的bounce light(物体之间来回反射的光)
实时全局光的实现:静态物体之间的bounce light可以在预先计算阶段搞定(light map)
& & & & & & & & & & & & & & & & & & &被静态物体照射到的动态物体,通过实时更新的光照探头搞定
& & & & & & & & & & & & & & & & & & & 被动态物体照射到的物体,还不支持
相比UNITY4来讲,多出来的实时全局光部分应该是多出了lightmap 光照探头这些可以实时更新 而不是定死的
如下图在光源变化下,静态物体的对地板的反射绿色光也在跟着变化
此外UNITY5里面的标准材质的自发光在全局光计算中可以当做光源,即可以照亮周围物体并产生阴影,这是一个很屌的效果!,如下图,
,可以调节emission的GI模式,
自发光的GI效果如图
这可以表现一个很真实的发光体,相信看到这美术同学应该有点小激动吧~
& & Unity5 的全局光照除了新引入的实时GI之外,也有过去的离线烘焙的方式,或者也可以选择二者合用的方式(不过这不是一个省效率的方式)
& & 将light的Baking设为Baked,标记那些static的物体,在Lighting window中的Baked GI对应的就是烘焙的实时光,所以这是要把Precomputed Reatime GI关闭
& &将light的baking设为realtime,标记那些static的物体,在lighting window中将Baked GI关闭,将Precomputed Realtime GI开启,注意默认Precomputed Realtime GI的resolution并不高,如果想得到比较不错的效果,可以将它调高。在运行时就可以看到实时的GI效果
3 烘焙GI加实时的局部光照
& & & 这可能是更加主要的做法,即static的物件采用离线的烘焙GI,而非static的物件使用实时的局部光照,这需要将light调为mixed,然后将lightmap里面开启baked gi,而将realtime gi 关闭。
4 烘焙的GI叠加实时的GI,这种做法基本没什么好处,而且效率也很低,这种组合是将light设为mixed,然后将light setting里面的baked gi和 relatime gi全开启
通用的GI设置
& & & &通常为了提升间接光照的质量,可以将light里面的Bounce Intensity提高,和lightsetting 里面 general gi的indirect intensity也提高。此外还可以在light setting里面设置天空盒和环境光。
& & & Unity5的scene视图里面有多提供了一个视图Irradiance 来查看动态物体间的间接光照
光照探头,unity5的关照探头是为了使动态物体能偶受静态物体的gi影响,比UNITY4多了光照探头的信息可以实时更新的,其余的使用设置同4基本是一样的
& & & &这是UNITY5的实时GI新增的一部分,我们可以在场景的某个区域创建一个Reflection Probe,这点的环境映射信息就会被保存下来,当有动态物体进入的时候,就可以被贴上这个cubemap。如下图是一个球进入了这个区域感受到了这个点处的环境映射。
本文已收录于以下专栏:
相关文章推荐
物理渲染是UNITY5最大的亮点之一,物理渲染的采用绝对是下一个世代游戏的热点,UNITY5的大范围使用是一个可喜可贺的事情,关于什么是物理渲染,本人曾经写过一篇博客专门讨论,详见http://blo...
GI是啥Realtime GI,实时全局光照,听上去就是一个非常高大上的词,但是越高大上就越令人心生敬畏,因为世上没有免费的午餐,越好的效果意味着越多的消耗,对于移动平台来说,这样的消耗受不受的起呢?...
/Manual/LightmappingInDepth.html
If you are about to lightmap your first sce...
本文整理自Unity全球官方网站,原文:UNITY
5 - LIGHTING AND RENDERING
(文章较长,请耐心阅读)
全局光照,简称GI,是一个用来模拟光的互动和反弹...
书上的原话是:visualize the normals with a color map,但是代码实现的是光线撞上球,然后色彩表(RGB)可视化“撞点”的法向量。
开章第一句是“First, le...
这篇文章主要讲全局光照,在看教程的时候就有一个点不是很理解,就是作者开启物体的static这个选项。在网上查找一些资料,有的说”static表示物体时静态的,多用于静止不动的物体,此外static有多...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 pc 访问time capsule 的文章

 

随机推荐