内容简介:这是侑虎科技第488篇文章,感谢作者CG-Bull供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群793972859)作者主页:Maya里面处理好模型和2UV即可导入Unity环境下,材质均使用自带的Standard。因为是分享UnityLighting自然用ArchViz来展示是最适合不过的了。同时也可以测试一下Unity的全局光照精度的极限。
这是侑虎科技第488篇文章,感谢作者CG-Bull供稿。欢迎转发分享,未经作者授权请勿转载。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群793972859)
作者主页: https://www.zhihu.com/people/flashbull/activities ,作者也是U Sparkle活动参与者,UWA欢迎更多开发朋友加入U Sparkle开发者计划,这个舞台有你更精彩!
今天笔者主要分享的是Unity的Enlighten全局光照,如果大家不清楚这个东西可以戳以下链接查看详情:
http://forum.china.unity3d.com/thread-22888-1-22.html同时,我们不妨先看看以下效果:
今天分享的文章也是为了方便大家在Unity里面做出高质量画面渲染,以下图片供大家参考:
Maya里面处理好模型和2UV即可导入Unity环境下,材质均使用自带的Standard。因为是分享UnityLighting自然用ArchViz来展示是最适合不过的了。同时也可以测试一下Unity的全局光照精度的极限。
Unity一直以来被诟病的基本都是画面差,市面上大部分Unity产品或者游戏看着也确实没有Unreal和Frosbite系列的游戏那么有次世代的感觉。考虑到全世界都是一种类型大同小异的PBR,排除渲染方程导致的差异,那么效果不够好的主要原因或许就是因为没有一个比较真实的全局光照(GI)系统和没有比较全面的后期处理(PostProcess)系统。但实际上是Frosbite和Unity基本都是一套Enlighten的全局光照系统。那么Unity到底能不能做真实的渲染效果呢?这里先打个问号。
当场景素材摆放好后大概是下面的样子:
可以看到画面效果非常"真实"。之后第一步则是制作一个光照环境,自古好看来自日出日落。所以在这儿也选择了一个日落的时间点。这里提醒一下,我见过的美术大部分都不喜欢用HDRI去做环境光而是去在窗户上放聚光灯阵列或者面光源去模拟,这样的话会失去环境颜色的DirectionLight,所以这里我的搭配则是DirectionLight和EnvironmentLight。既然日落自然也需要一个日落的HDRI。将这些设置好后就可以设置光照烘焙内容了。
太阳光这里使用了ShadowMaks,因为考虑到室内可能会有动态物体,比如:角色在里面走,也是为了能够产生太阳的高光点,如果使用Bake的话,烘焙完后场景就等于没有这个灯光了,那么太阳的高光也会随之消失。ShadowAngle则是为了产生自然的软阴影效果。
随即进行Bake,完成之后则会得到如下图所示,可以看到Enlighten还是能产生比较好的全局光照(GI)效果的。
然后我们看到虽然有了挺不错的全局光照(GI)效果但是画面感却很死寂,里面的金属也都是黑色的。主要原因是Enlighten只能Bake出Diffuse的全局光照(GI)而不能产生Speculer的全局光照(GI)。好在Unity和其他引擎一样也提供了其他的解决方案就是反射探测器(ReflectionPrbes),(吐槽一下,这个反射探测器居然只能做Box的视差矫正而且还不能旋转。不过新的HDRP里面测试到时可以旋转了,同时也有了Sphere的视差矫正),然后我们在场景中放上反射探测器 (ReflectionPrbes)。因为这个室内刚好是比较规则的正方形分布,所以只需要用Box的探测器去覆盖到场景即可。
然后将反射球里面的参数调整好随机点击Bake,即可产生反射用的Cubemap数据。因为场景目前没有什么动态需要,所以更新模式用Bake即可。如果你使用的是实时光照环境且光照可互动,那切换到Dynamic模式或许是个不错的选择。随机效果如下:
可以看到场景的金属不再黑了,看起来的效果也没之前那么死寂。
但是感觉好像还是有什么不对劲。没错!Unity的内置渲染管线默认是不带后期处理(PostProcess)的,这也是为什么Unreal转Unity的大部分会感觉Unity效果很一般的主要原因吧。好在官方也很努力跟进出了PostProcessStack。这里使用GitHub最新的UnityPostProcessStackV2,不知道的可以去下面的链接下载:
https://lab.uwa4d.com/lab/5b55f46dd7f10a201fd77c3b大家可以根据自己的画面喜好去调整参数。这里给出我的参数,效果感觉还不错。
最后即可得到如开头的图片那样的光照场景。
可以看到瞬间画面就高大上了,但是还有一种很不对劲的感觉,那是因为场景里面反射不正确,实时渲染里面的反射主流的除了IBR另外就是SSR了。
可以看到在加入了之前说过的StochasticSSR之后画面瞬间就好了不少,特别是地板和阳台的金属框。下面放上SSR的地址:
https://lab.uwa4d.com/lab/5b55f122d7f10a201fd76cc5进行到这儿可以看到还是很难区分是Unity还是Unreal的,也侧面反映了Unity的Enlighten还是能够做到不错的全局光照(GI)效果的。而后说一下Unity新出的ProgressiveLightmap。
经过上面的分享和测试可以看到Enlighten是可以得到3A级的GI效果的,那为什么Unity还要出一个ProgrssiveLightmap呢?再经过上面场景制作之前的多次光照测试得到的总结就是:Enlighten虽然可以产生很棒的全局光照效果,但是精细程度并不够。举个例子,如图:
可以看到椅子的腿下面产生了很自然的环境光阴影,而桌子腿因为太细导致这个很漂亮的阴影直接消失。
为了解决这个问题,我测试了Enlighten的极限。在IndirectResolution为10和LightingProfile里的Resolution为5的情况下可以产生一些这种极致的细节阴影,但是Bake时间会蹭大道原来的几十倍。因此测试了一下ProgrsssiveLightmap(设置都一样只需要在Lighting界面把Enlighten换成Progrssive重新Bake即可)。
Enlighten的可以看到椅子腿基本没阴影了
Progrssive的可以看到椅子腿有明显的接触阴影效果
或许因为速度和精度考虑,Unity官方才出了Progrssive来替代Enlighten做高质量的LightingBake。但是就目前测试来看Progrssive的速度也是很堪忧,上图在i9上Bake了近乎7小时,而Enlighten则只用了30分钟不到。鉴于2018.3也推出了GPUProgrssive的预览版,官方表示速度快10X,具体不详。各位有兴趣可以试试!
以下是这个分享之前的测试图:
ProgrssiveLightmap
Enlighten:注意看左边书桌上的阴影细节
实时的Enlighten环境光测试
实时的Enlighten直射光测试
实时的Enlighten自发光测试
一段Enlighten的测试
总结 : 就目前阶段Unity里Enlighten还是速度和质量的平衡者,效果也是能大幅度接近Unreal的。Progrssive虽然精度高但是速度是真的太慢了,而GPU版本还处于预览版。可见未来很长一段时间还是得开Enlighten。
文末,再次感谢GC Bull的分享,如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:465082844)。
也欢迎大家来积极参与U Sparkle开发者计划,简称“US”,代表你和我,代表UWA和开发者在一起!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- OpenGL 光照系列之环境光
- OpenGL ES 入门之旅 -- GLSL光照计算
- OpenGL(十一) 可编程管线 基础光照 的实现
- 改进的阴影抑制用于光照鲁棒的人脸识别
- CSharpGL(54)用基于图像的光照(IBL)来计算PBR的Specular部分
- 全局变量,静态全局变量,局部变量,静态局部变量
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
公众号运营实战手册
中信出版社 / 2018-11 / 58
作者粥左罗在刚入行做新媒体的一年时间里,就写了100篇阅读量10万+的公众号文章,但是在此之前,他足足花了两个月的时间研究公众号运营和爆款文章的逻辑和打法。 这本书就是他总结和归纳自己公众号写作和运营的全部秘诀和技巧,是一本行之有效的实战指南。 从如何注册一个公号,给公号起什么名字? 多长时间更新一次为好? 到如何找选题,如何积累爆款素材? 如何编辑内容,如何做版面设......一起来看看 《公众号运营实战手册》 这本书的介绍吧!