大家好
超久不见
这次为大家呈现的是
再次进步的D5
这次的进步
可以概括为“开了个开关”
请各位观看视频感受
视频展示的是实时速度
无加速播放处理
无烘焙无预计算
在一块RTX2080上
使用D5 Preview 1.0完成录制
为什么叫“开了个开关”?
前阵子
D5开了个小型线下沙龙
展示了极快的高品质渲染
当天
有公司的CTO居然说
D5团队没做啥
只不过
在UE4.22开了个开关
吓得D5的小伙伴开起了玩笑
工程师差点当场哭晕在厕所
如果在UE4里随手开个开关
D5都能拿到NVIDIA的ISV认证
那照这个逻辑
在UE4里用个反射球
就能上GTC讲俩小时
Are U F**king Kidding?
人家兴许只是开个玩笑而已
UE4本身很优秀
但不是针对可视化开发的
别忘记UE4是个游戏引擎
认真使用过UE4 RTX的同学
都会发现
UE4现阶段的RTX
虽然初步展示出RTX的强大
下图出自UE4官方RTX Demo
但用在逼真的建筑可视化
是远远不够的
无论从算力、算法来看
都不符合建筑可视化的要求
例如可视化可以停下来等几帧
把计算平摊到很多帧
而游戏却不能
又例如一直以来都是难题的
全局照明
下图分别截自UE423和D5视口 分辨率近似 整个场景只有一盏聚光灯 在都有60fps的情况下等待了 3s 再截取 上面UE4的GI结果 若是配上更激进的降噪 可获得平滑的结果 但也因此失去高频信息 物体浮空 只适合在游戏中使用那为何不直接用UE4自带Pathtracing?
目前的Pathtracing
功能非常少
鲁棒性较差
且受制于BruteForce
速度不理想
仅适合在UE4里粗糙的预览
换句话说就是 都这么慢了,为何不直接用别的离线渲染器? 他们有更完善的功能更快的速度 还有更强的兼容性更好的质量 就像下图 默认的Pathtracing不能正确渲染背面直接用UE4的Pathtracing当做渲染器
显然也不合适
所以
这不是开个开关就能解决的
需要专门针对这个的使用情景
深度改造
如果有团队
在UE4上加几个开关
直接调用UE4自带的光线跟踪
就将此变为付费功能
恐怕是想骗钱想疯了
为了打开这个"开关"
D5的团队费了很大劲
看了很多论文、资料
学习渲染理论和算法
下面是他们参考过的部分论文截图
参考了很多优秀的软件
学习他们的实现思路
下图截自各大软件官网
走了很多弯路
从DXR到FallbackLayer
从FallbackLayer到Optix
从暴力采样到离散空间采样
下图截自各种技术的网页
遇到了很多坑
显存爆了
降噪出现漏光
抗锯齿完图层对不上
等等等等
下图bugs截自几个月前的D5
可谓
一把辛酸一把泪
在挣扎的路上
D5小伙伴意识到
不能盲目追求物理真实
每根射线所需时间已知
达到真实所需射线数量已知
稍微一算就知道
暴力计算
比蜗牛还慢
所以
通过美术、数学手段
使得每根射线达到最高性价比
让画面趋近真实
符合人对"真实"的认知
才是王道
1.学习成本极低
无需烘焙
无需手摆反射球
无需分UV
无需反射平面
无需刻意补光
无需用灯光强行打出GI的感觉
......
无需繁琐学习过程
一切皆所见即所得
D5开发的初衷
是做一款又简单、又好的设计工具
隐藏繁琐的技术细节
给用户留下最简单、最直觉的体验
你所看到的效果
没经过一丝奇技淫巧的处理
绝不像一些无节操厂商那样
使用大量人工处理来掩盖软件缺陷
甚至使用烘焙的场景演示
误导视听
用户拿到手后
发现完全不是同一个东西
2.Gbuffer Raytracing
D5用光栅化代替部分计算
这点没什么好说的
因为UE4自己已经这么做
Enscape也证明了这个方向的可行性
相比传统离线渲染器
一次射线的起点不在摄像机
从Gbuffer获取像素位置和法线
根据具体需求发射射线
能省掉一次射线带来的大量开销
也让光线跟踪更好地融入现有管线
还在原有的延迟管线基础上
绘制更多自定义的buffer
用于各种效果的计算
这个做法奠定了D5渲染开发的大方向
3.高品质天光大幅提升真实度
高频信息给人印象最深
速写也是这个道理
下图是我N年前的写生
在白天的场景里
天光产生的阴影到处可见
其中包含大量的高频信息
如下图箭头标出的地方
这些信息
在游戏里常常被忽略
没有上图那种锐利的阴影
只保留了大关系
显得"游戏感强"
如下图
自从Lumion新增"天光"后
画质让人眼前一亮
很值得学习
下图截自Lumion官方画廊
之前我还曾发文讲过这事
为何Lumion8如此强悍,这应该是一次迟到的飞跃
天光的计算对着色依赖度低
主要计算都在射线求交上
正好RTX最擅长的是
射线求交
所以天光是性价比超高的Feature
于是
D5参考了Lumion的美术思路
引入了天光
D5在UE4天光的基础上
加入第三方的降噪算法
调整了射线方向的策略
修改时域积累的算法以适应抗锯齿
让高品质天光成为可能
在室内、室外场景都有出色的表现
D5可以从外部导入任意的球形HDR
整个场景唯一的光源便是背景HDR 注意那一缕阳光,是由HDR中的亮点提供的效果4.高精度的快速GI
UE4 RTX自带的GI
使用暴力的方法计算
(BruteForce)
由于样本数太少
而样本数多了又会把电脑卡死
所以方差过大
形成肉眼可见的噪点
就算降噪也无力回天
显然
老老实实地算是不行的
就算有RTX加持也不够快
D5小伙伴注意到
Enscape的GI计算速度很快
而且显卡负载不高
翻阅资料
得知Enscape把数据缓存到BVH
以空间换时间
因此节省了很多性能
还研究了VRay的LightCache
发现也是缓存的思路
(下图截自VRay官方文档)
虽然牺牲了多次反弹的高频信息
但换取更低的方差
意味着收敛得更快
于是D5抛弃了UE4自带的GI
引入了缓存GI的思路
使用空间离散采样
让GI更干净平滑
还改良了着色器
降低着色的负担
让GI本身的计算速度更快
如此一来
显卡不发烫了
画面也变流畅了
得益于缓存的低频数据
D5的GI能投射出精准的软阴影
有点VRay的味道
这连现在的Enscape和Lumion也很难做到
下图分别截自D5视口最高质量和Enscape2.6最高质量
两个场景都只有一盏聚光灯
5.高质量自发光照明
得益于上述的GI缓存
以及D5自研的SimpleGI
自发光有极快的速度
和惊人的质量
可以轻松地使用自发光照亮场景
并拥有准确的影子
下图光源有且仅有自发光
UE4在默认情况下
自发光不支持照明
所以我们只能看到发光物体本身
而场景一片漆黑
Enscape则由于过激的降噪
导致各种漏光问题
D5保留了最多的光照细节
可见阴影由硬到软
过渡舒服自然
下图光源有且只有自发光
不妨再看看VRay的结果
上图最接近VRay的当D5莫属
但值得注意的是
D5只用了3秒
6.高质量的反射
高质量反射能大幅提升质感
让真实度倍增
光滑、粗糙反射缺一不可
光滑的反射
因为能清楚地看见被反射的东西
被反射物体的渲染精度不能妥协
UE4自带反射效果不佳
没有渲染GI
为了解决这个问题
D5小伙伴修改反射模块
给反射加入GI
目前反射中GI精度较低,高精度的已经在路上
因为换了缓存GI的做法,请给D5工程师点时间
得益于缓存的GI数据
反射GI计算比早期快了很多倍
因为GI占据绝大部分的计算量
因为每根反射射线中,需要多根GI射线
这个n*m的数学关系想想就很刺激
由于是光线跟踪反射
质量当然是SSR无法媲美的
请忽略那个带有光照的光线跟踪反射演示图
因为D5不能关掉自发光的光照
SSR是从UE4里截取的
研发中的新功能&计划
更好的后处理
有小伙伴抱怨颜色太素
新的调色模块已经在做了
更好的抗锯齿和降噪
现在画面的边缘不够清晰
AI降噪带来的闪烁让动画没法做
D5正在改进降噪算法
让画面清晰平滑
同时稳定不闪烁
引入OptiX API
UE4的光线跟踪基于DXR
让很多显卡没法使用
使用OptiX代替DXR
能让更多的显卡正常运行D5
更快的速度
现在还不够快
需要更快
当然
远不止这些
......
简单意味着什么
一张HDR
就能呈现真实的天光
放一盏灯
就有了精准的间接光
一眨眼间
就有趋近真实的效果
但可能有的小伙伴
还习惯于灯阵、反射平面等做法
这不由得让我想起
过去的玩具总动员没有GI
反弹光全靠艺术家手摆灯光
当GI计算诞生的时候
有人鄙视GI计算慢
坚持“人工GI”的做法
再看看现在
还有人会在VRay里摆灯阵吗
技术越来越先进
体验越来越简单
只会让创作的上限越来越高
虽然D5还不够完美
但他们仍在努力
就算没有D5团队
也会有B5,D6,F16
......
开放的公测
D5是看得见摸得着的
看完演示
感兴趣的各位
可以下载尝试
欢迎给他们提出宝贵建议
https://www.d5techs.com/
结语
能看到这
说明你我真tm有缘分
有朋友问,你为什么替D5写文章?
我虽然在从事游戏制作,但对渲染的热情,依旧没有减退,虽然没时间出作品,但也会抽空看看相关的论文。几个月前,我初次接触D5团队,是因为试用了当时的版本,提了些建议。细聊后发现,这个小团队,有着超出我预期的技术底蕴,虽然算不上顶尖,但在国内可视化工具领域里,这水平绝对是罕见的。言语中,我能强烈地感受到这个团队对技术的尊重,他们非常希望做出一款优秀的产品。D5一路磕磕碰碰,虽然遭受一些误解,甚至有人说之前的演示视频是假的(视频是我亲手录制的),但也得到了很多人的支持,因为,他们确实做出了不一样的东西,解决了不少别人解决不了的技术难题,而非光说不做、鼓吹概念。看到这样的团队,实在忍不住要帮一把D5为什么用UE4改造?
在RTX刚面世不久,UE4还没集成RTX的时候,D5团队已经把RTX功能整合到UE4中,实现了基于DXR的光线跟踪,但功能简陋,效果欠佳。由于D5没有搭建成熟离线渲染器的经验,若是从零开始搭建,需要大量的时间,而UE4有着极为成熟优秀的渲染管线、先进的光照模型,还是开源引擎,能合法获得源代码,如果为了学习,那可以从零开始慢慢研究,但对于一个公司来说,造轮子的做法显然是不可取的。所以D5团队把UE4渲染模块代码单拎出来,在此基础上进行深度改造,让它更适合可视化,而软件别的部分都和UE代码没有关系。因为,使用UE4编辑器代码是违反开发者协议的,如果有公司敢这么做,用户的利益都将受到威胁。
至于为什么我知道D5的技术细节,因为......我就是知道!