找回密码
 立即注册
查看: 1971|回复: 20

为什么虚幻4的渲染要比unity强,强在哪里了,想知道底层原理解释?

[复制链接]
发表于 2020-12-31 16:04 | 显示全部楼层 |阅读模式
为什么虚幻4的渲染要比unity强,强在哪里了,想知道底层原理解释?
发表于 2020-12-31 16:07 | 显示全部楼层
作为一个白天整Unity,晚上学习UE4  KlayGE等引擎的业余选手路过(其实我还弄过cocos2d-x,不过这玩意儿对我来说都是毫无收获的记忆...从 @叛逆者 龚大那边学到了非常多东西,咳咳顺便打个小广告)


其实很多点都是前面的大大都提到了,从我最大的感受来说:两个引擎的定位就不一样。
Unity是一个更加侧重于通用的引擎,UE4是一个更加偏重于真实感 FPS类的引擎。Unity更多侧重的是灵活性,小团队爱咋整咋整;UE4有一套成熟的方法链和工作流,你在它的架子里干的很爽但是想自己倒腾点东西就比较麻烦。
ps. 我之前写过一段时间UE4的Plugin,那个C++ Hot Load完全无效...我猜测是因为启动引擎的时候就handler注册进去了,最后导致我改一点就要重启一下Editor。Unity用C#写Plugin就非常的爽,它那套序列化机制能基本满足我所有的需求(对我这里就不吐槽UE4的编译速度了...毕竟我穷)


就题目所说的『渲染』哪家强,这里先提一个容易误解的地方是:一个引擎的效果,一方面是这个引擎能提供的功能,也就是上限;另一方面是对应的美术资源的质量,也就是下限。很多时候容易把美术资源的质量与引擎的效果等价了,这样就容易沦为比较纯画面比较党了...
举个栗子: 以前菊总做了一个3D场景,然后有人问这个效果图里的GI这么牛逼,啥引擎整的?菊总表示我只不过是打了很多的点光源补光而已hhhh


ok回到题目,纯粹功能上来说,其实这两家的覆盖都差不多,该有的都有。之前我试过把UE4的模型、贴图、shader和GI搞到Unity里,其实是能复现的七七八八(这里没考虑后处理)

所以结论是只要你足够蛋疼哦不肯下功夫,都可以搞;但是说实话,很多细节处理上我发现Unity是被碾压了...当然了Unity确实也在飞速追赶,包括但不限于(其实里面有些东西Unity已经实现了,但是我试了下还是存在一定的差距...)
    linear colorspacesigned distance shadowPBR相关的,譬如物理光照强度、一些BRDF模型等post process stack (github上Unity官方放出来那个我看了,但还是推荐看一下UE4有一个叫Next-gen Mobile Rendering的分享)
很多细节累计起来就造成了不少的差距...
ps. 还有一点想吐槽的是,UE4的门槛高一些,而且流程相对固定;而U3D的易上手+灵活导致一些开发者会滥用,然后把锅甩给引擎。那个,我再举个栗子就是譬如什么泰坦什么陨落什么6...可以参考挖坑不填的 @Vinjn张静 的完爆四路泰坦的《仙剑奇侠传六》技术评测(一)


话说技术上的话,这个是纯个人感觉 貌似UE4的老司机还是多一些;U3D最近貌似砸钱招了不少,今年还发了两篇SIGGRAPH感觉好羡慕 Unity Labs | Articles. 感觉就像一方是自成一系工程经验贼丰富的老司机;另一方是刚从野路子转出来然后有点学院派混搭风....


总结:刨除美术资源带来的影响之外,Unity为了适配灵活损失了不少表现空间,同时在细节上也有很多需要提高的地方
利益相关:Unity开发者 (啊哈哈哈黑了半天还是因为爱之深对不对,不管你信不信反正我信了)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:10 | 显示全部楼层
有人主动要求打脸
还全世界范围都没见过 所以 啥也不说了 我觉得对于这么白的人不用太客气
@mac mico

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:20 | 显示全部楼层
Unity因为更多的时间花在了如何跨平台上,开发者往往会将就低端平台,写一份在哪里都用。这样高端平台发挥不出来。
另一方面是性能。比如我曾经在KlayGE里实现了一个皮肤渲染。 @钱康来 想在Unity里实现一下。发现性能差4倍。原因在于当时Unity没法那样自由控制stencil buffer,必须全屏处理。比起我先用stencil buffer把皮肤的区域标出来,再光处理皮肤,性能肯定要低了。
所以其实好好做的话,不见得有太多画质上的区别,性能可能有区别。
发表于 2020-12-31 16:24 | 显示全部楼层
渲染这一概念太大了,大到需要一个人至一个团队持续多年的去研究、去踩坑才能有所建树。所以下面的都是一些个人对这两个引擎的一些拙见:
首先,两家公司的起点或者说最初的定位不同:
Epic首先是一家游戏公司,而且曾经是做真实场景FPS向游戏的公司,UE是他们做游戏的时候提炼出的一个游戏引擎。自然而然,其基因里面带有Epic那一套成熟的渲染流程。而且他们公司在开发游戏时用到的新技术也会及时反哺给UnrealEngine上来。
反观Unity是一家通用引擎公司,更加注重的是引擎的通用性和跨平台,特别是在前期抢占手机市场的时候,Unity首先满足的是很多低性能设备是否能够跑的起来,那么自然渲染效果也是兼顾了低端设备。
其次是使用这两个引擎的“用户”,也就是使用引擎的团队往往有很大区别:
使用Unreal引擎的团队规模普遍都在使用Unity引擎的团队之上,而且不少都是有很多年开发经验或者游戏经验的人。
而Unity的易用性和易上手性,以及考虑到前几年手游爆发带来的从业人员激增和人员素养参差不齐,也让大部分从业人员被挡在“渲染”这个高门槛之外了。
最后,Unity开发者只要花时间潜心打磨画质,是可以做到与UE4没太多差别。
有人做过Unity2018和UE4.19两个引擎版本的对比测试,结论是耗费相同的工作量,两个引擎都可以达到同样好的渲染效果。链接:
Unity与UE4画质对比(unity2018.1.7/UE4.19.2) - Deveuper的博客 - CSDN博客市场上也有使用Unity的游戏达到极高渲染效果的游戏,比如《逃离塔科夫》。而且Unity2019正式推出的可编程渲染管线,让Unity也能利用高清渲染管线,从而充分发掘电脑独显、PS4等高端平台的性能。
所以,使用Unity引擎的开发商只要能使用同样高素质的从业人员(精通渲染的技术人员,精通次世代开发的美术人员),然后花费同样的研发时间(也意味着经费),效果一样可以达到足够高的水平。
发表于 2020-12-31 16:29 | 显示全部楼层
安利一波我们的专栏:
Unity Graphics我们在体积散射,皮肤渲染,屏幕空间反射等特效中,无论是性能还是效果,都已经达到甚至远超UE4官方内置的效果。未来我们还将(已经开始)在Unity中自研渲染管线,并定制基于物理的多种光照模型着色器,以及大地型开放世界等。
等我们完成这一系列工作,再来回答这个问题,留个坑占个位。
更新一波:
论画质:
Ground Truth Ambient Occlusion + Stochastic SSR加持后的渲染效果。单纯论这两项渲染技术,UE自带是都没有的,再论GI,使用超高精度的Progressive Lightmap与实时的Shadowmask实时光照,既能保留实时光源的高光,也能受益于光照贴图的烘焙。配合Unity刚刚支持的稳定版本Vulkan API,Drawcall多线程提交效率能达到DX11的135%以上甚至更多。
另外,已经具有超大地形绘制能力的GPU Driven Pipeline即将支持Virtual Texture和多材质,多光源,以及上图所示的屏幕后处理,毕竟没有超大地形绘制能力也不好意思说自己“性能很高”。
之前完成的文章:
MaxwellGeng:GPU Driven Pipeline — 工具链与进阶渲染

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:39 | 显示全部楼层
用过两年Unity和两天Unreal的小彩笔过来强答一波。
几个月前,Unity的人(据说是刚从Unreal跳槽过来的,暂无确切证据)来我司做分享,旨在说明Unity的渲染不比Unreal差。仿佛言外之意是“不是引擎不行,而是人不行”。这固然有利益相关的因素在里面,但是多少有些道理。


首先说引擎因素:
Unity是一个比较紧跟风头的引擎,最近几年,接连跟了手游、VR、AI的风头,但是毕竟公司能量有限(貌似现在非常有钱,到处挖人),难免顾此失彼。这也是我一贯的观点:凡是一揽子解决方案,那么多数都会沦为中庸的方案。而Unity已经不满足于将自己定位为一个游戏引擎,而是通用的商业引擎(参考:Unity已不再是我们眼中的那个“游戏”引擎)。
按照我同事的说法,Epic公司本身自己就是做游戏的,做游戏的同时顺带做个商业引擎出来,所以比较了解实际开发中用到了什么,而且会更快的引入新的技术,毕竟是针对PC端和Console的引擎,所以性能压力不会很大。而Unity的出发点就是做一个商业引擎,在人力有限的情况下,市场上需求不大的功能,我尽量不做。众所周知,Unity是借着手游的一波浪潮,站在了引擎市场的鳌头之上。就在前两年,满大街也找不到几个OpenGL ES 3.0+的手机,为什么要做GPU Instancing、GPU Particle System这样的东西?而这两年OpenGL ES 3.0+的手机开始得到普及,自然Unity也更新了相关的功能。


然后说人的因素:
Unity最大的优势在于,易上手。易上手就意味着门槛低,门槛低也就意味着从业人员素质参差不齐。前两年,因为手游行业爆发式的扩张,从业人员供不应求,但是偏偏Unity是个易上手的游戏引擎,所以很多项目对人员的要求并不高。当然渲染方面是有一些门槛的,但随着大量新手教程的出现,这个门槛也就不那么高了,因为一些项目不过是想要一个“会写shader的人”,毕竟那些主程/制作人/老板认为shader不过是另外一种语言罢了(手动滑稽)。没学过图形学,没看过RTR,没参考过Gems,靠着Lambert和Blinn Phong就顺利的当上了技美/图程,渲染出来的效果能好吗?引用我的男神郭德纲的一句话:“你都没见过好角,你能成为好角吗?”
对于有能力的项目组,有优秀的图形人才,即使是使用Unity,也能做出比较好的画面。比如说……emmmmmmmmmm,算了。


话说回来,我也是靠着一波手游浪潮才有机会进入游戏行业,学渲染也不过是从2016年开始的,也没什么天赋,现在还是萌新状态。信口开河说了几句,各位勿怪。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:49 | 显示全部楼层
2018-12-31更新

经过将近一年的Unity项目支持,终于把一个unity4.x的项目升级到了2017 LTS,同时也发现Unity版本迭代速度很快。。。
到目前这个时间点,Unity HDRP的画质可以说和UE4不相上下了,当然高质量的角色渲染Unity还要加吧劲,从目前Unity HDRP的源码来看,继承了不少寒霜3的痕迹(参考Move Frostbite to PBR3.0),官方后处理管线(Post processing stack)也引入了电影ACES流程,光源也引入了物理光照单位,在基础材质和光源渲染效果上可以基本和UE4打平。
下面粗略的列了一下Unreal 4.21和Unity 2018的渲染对比:
写实的渲染开发目标较为明确,一般直接和现实场景(摄影测量)或者离线渲染结果做像素对比来改善算法提升画质,在可预见的未来,两家引擎在写实方面会趋向一致,剩下来就是内容生产效率和运行时效率的差异了。
再补充一部分生产力对比
由于笔者经验有限,欢迎大家补充。。。。
2017-11-30更新

看哪方面吧,画质表现以及适配性还有对GPU的压榨上来看,unreal更强。 unreal 强的地方在于: 1. 电影级的渲染管线,ue4一开始就是为工业化的3A制作流程的项目打造的;而那时候的unity更多是为低成本项目服务的,初期不会投入更多精力去做渲染。UE4的材质模型是基于物理渲染的(近似的实现),包括布料、头发等;皮肤的渲染模式也支持多种模式,包括不限于屏幕空间的方法;它的deferred renderer也支持forward rendering框架;支持PCF/PCSS阴影以及级联阴影,支持静态全局光和动态全局光照,还支持高级3A标配的后处理特效,比如bokeh景深、HDR等。 但正是这样,他的管线灵活性被牺牲掉了,今年的GDC上寒霜提出了基于FrameGraph的下一代渲染框架,更加灵活的管理渲染资源和管线组装。 2. 多核的优化和高GPU利用率。在DX12级别的API下,UE4的RHI支持多线程的GPU命令提交,有效地提高了GPU利用率。目前看,unity也部分支持这个特性了。
总之,随行业发展,两者在画质上的差距会越来越小的。 最后吐槽几点: UE4的C++源码以及Uber Shader/材质的编译过程比较耗时了,准备用16个框框来镇压.. 项目打包过程存储消耗比较大…内存的泄漏以及崩溃不容易定位,可能会耗费很多时间。 不知道unity怎么样……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:54 | 显示全部楼层
我感觉效果还是可以的。。。布料用的1886的InverseGGX,皮肤是SSSSS,普通PBR是自带的Standard。阴影是实时阴影加Enlighten RealTime Gi。用的Unity的PostProcessStack。。





































本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-31 16:59 | 显示全部楼层
强答一发,有一次和公司的渲染大牛讨论问题,他提到一个观点我非常赞同:
“Unreal的做法是给了你一套他定义的不可改变的规则,例如Skeleton Mesh,又如渲染管线,而Unity的做法是兼容各种平台各种规则的最大公约数,进行比较基本的封装再给你,再往上就是靠你自己制定规则了——你可以自定义渲染管线,也可以自定义Skinning”。
“但是其实不只是针对于游戏开发,针对于世界上的很多事情也一样——如果有了严格的规则,那么能力比较高的人会感到束手束脚,有些定制化的东西很难实现;而如果没有严格的规则,那么就会强迫很多新手或者那些不懂怎么制定规则的人去制定规则,也会有很多人不讲规则。”
放在这里也一样,如果是渲染大神来操刀,那么相信在他手下两个引擎的渲染效果不会相差太多;但如果是新手,那么显然是有严格规则的Unreal更加友好……
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 01:12 , Processed in 0.099858 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表