投稿
  • 动态
  • 文章
  • 视频
  • 音乐
  • 帖子
    • 中文
    • English
  • 注册
  • 查看作者
    • 探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      大家好

      超久不见


      这次跟大家聊一下

      瞬间能渲完效果图这事


      过去

      像下面那样高精度的一张图

      假如分辨率是2560*1924

      小时为单位是不过分的

      下图截自VRay官方画廊

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      现在

      几秒钟就能完成一张高品质渲染图

      和我刚接触VRay半小时渲一个茶壶那会儿

      显然已经不是一个时代

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      画面越来越好的Lumion

      NVIDIA的RTX实时光线跟踪等等

      都让渲染时间大幅缩短

      甚至诞生了新的交互方式

      下图截自

      链接

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      虽然我现在的工作内容

      已经与渲染的关系不大

      但依旧非常热爱渲染


      在工作之余

      加上某些机缘巧合

      受到一些文章的启发

      磕碰地写了几百行蹩脚代码

      经过几番尝试


      终于在Unity3D里

      实现了简单的实时光线跟踪

      模拟了天空光太阳光一次反弹

      并没有用RTX,因为女朋友不让买RTX显卡

      我们先看效果

      再看实现思路


      1080p每秒达到了60帧以上

      平均每张图只需0.016秒

      确实有点瞬间完事的意思

      动图不流畅和有噪点是gif压缩带来的,静帧就好多了

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      如果是Unity的默认效果

      光照效果扁平,不真实

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      文章封面也是用了这个方法渲染

      每帧每像素256条射线(256spp)

      画面几乎没什么噪点

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      无需任何预计算

      模型能任意移动,缩放,新建和删除

      灯光能随意修改


      如果能在SketchUp里呈现这效果

      想想还是超爽的

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      为了检验蹩脚代码的可靠性

      VRay渲染同样的场景作为参考


      场景里摆放一个太阳光和一个天空光

      GI反弹次数设置成一次

      两者结果还是非常接近的

      忽略两张图后处理不同而带来的差别

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      如果放在UE4

      在动态不烘焙的情况下

      效果也没法看


      基于UE4做的可视化软件

      如果宣称能出高品质效果图秒天秒地带来革命

      除非有自己专门的解决方案

      否则就是骗钱糊弄人

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      烘焙后效果会好很多

      但和实时光线跟踪比还是各有胜负

      例如UV接缝会带来光照错误

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料


      实现实时光线跟踪

      需要极高的效率

      我参考了论文

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      关于用球面斐波那契点集改善光线跟踪的文章

      下图截自上述论文

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      不需要看完整篇论文

      直接使用文中的公式生成点

      这分布方式能让渲染更平滑

      相当于提升了速度

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      在画面每个像素的法线方向上半球

      根据上面的分布方式发射射线

      如下图

      红色的部分是没被遮挡的射线

      没被遮挡意味着能看到天空

      看到天空意味着能被天空照亮

      所以

      红线比例越大的像素会越亮

      这样就能算出天空光的效果

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      太阳光的反弹也同理

      如下图

      红色的射线

      是能“看到”被太阳直接照亮区域的射线

      所以

      红线比例越大的像素一般会越亮

      这样就能算出太阳光的一次反弹

      之所以说一般,是因为还需要考虑光通量

      物体表面的法线方向会影响被太阳照亮的程度

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      至于

      为什么这么快?

      是因为这一切都是在

      像素着色器里完成的

      我把场景的包围盒数据传递到shader里

      用粗暴的数学方法做射线求交


      每个像素只要负责自己的几十根光线

      计算量其实跟高精度的模糊差别不大

      这种模糊不是连手机界面都有吗

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      每帧之间的采样方向加了抖动

      还加上能混合多帧的TemporalAA

      在采样不多的情况下就很平滑了

      不就变相减少了采样的数量

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      还有太阳光的一次反弹

      方法与离线渲染器不同


      在第一次射出的射线和场景相交后

      不会在交点处再次射出射线

      而是比较交点位置阳光shadowmap的关系

      从而推算出交点有没有被阳光直接照射到

      这样可以大幅减少射线求交计算

      效率得到大幅提升

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      虽然最终得到的效果还是不错的

      但是局限还有很多

      例如只能和AABB求交

      多帧积累也没有好好做

      也没有用BVH加速求交

      ……


      所以还不能应用到实际

      只能算是一个粗糙的尝试

      但至少给大家展示了一些有趣的可能性

      也请图形大神轻喷

      代码就不贴出来了,放公众号显得臃肿



      相比我这个业余粗糙的尝试

      有团队早已做成产品级的应用

      他们攻破了重重难关

      在实时渲染里完成间接光等复杂的计算


      有请今天的主角


      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料


      一款能提供高质量实时渲染的软件

      是可视化软件里冉冉升起的新星


      看用户作品就能感受到它有多强

      感兴趣的可以去官网找高清大图

      因为它确实经得起考验

      下面多图截自Enscape官方画廊和论坛

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      例图品质确实很高

      ! 甚至强大到像在骗人!

      曾有不少小伙伴提出质疑

      还有人被某些产品欺骗过

      花了钱才知道被坑

      下图截自Enscape官方画廊

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      凭什么VRay要花一小时的图

      Enscape能几秒就完事呢?


      因为他们作弊了

      他们想尽一切办法

      加入各种奇葩巧妙的技术

      让短时间的质量逼近离线渲染

      可谓用心良苦

      下图截自Enscape官方论坛用户aekarat

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料


      让我来解释下

      他们到底如何“作弊”


      要知道

      光线跟踪计算量是庞大的

      所以慢


      计算一根“射线”和场景的交点

      不是一个简单的过程

      需要射线和每个三角面求交

      一个常规的室内效果图场景可能有500万面

      想想就知道很慢

      当然,这是在没有任何加速手段的极限情况

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      为了让画面平滑

      每个像素需要很多射线


      只有射线足够多

      才能清楚知道周围对这个像素的影响

      才能清楚知道这个像素里有什么内容

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      所以

      一张图里像素那么多

      而每个像素又需要很多射线

      每根射线又要和很多三角形求交

      简直就是慢上加慢


      但想要有好的画面

      又少不了光线跟踪

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      为了有真实的画面

      同时有很快的速度


      机智的Enscape团队

      结合了光栅化光线跟踪各自的优点

      还在GTC 2017上分享了他们的技术


      Deferred Path Tracing

      下图截自Enscape在GTC2017分享的演示文稿

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      光栅化速度很快

      但有很多元素没法计算

      例如面光源阴影,间接光等

      所以

      Enscape把能用光栅化计算的部分

      都用光栅化计算

      例如阴影贴图,漫反射颜色、法线方向等等

      下图截自Enscape在GTC2017分享的演示文稿

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      光栅化实在计算不了的

      就交给光线跟踪


      例如在镜子的反射里看到了茶壶的金色背面

      但是画面里不能直接看到

      只能通过背后的镜子间接看见

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      但又由于光线跟踪很昂贵

      所以

      只要是能在画面里直接看到的部分

      都采用基于屏幕空间计算


      例如茶壶的银色正面能直接被看见

      所以能像手绘一样

      “画”出茶壶下面镜子的反射

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      不仅是反射

      间接光、折射等

      都用这样的方式去计算

      下图截自Enscape在GTC2017分享的演示文稿

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      最终把两者合在一起

      下图原图截自Enscape在GTC2017分享的演示文稿

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料这套方案

      让高品质的实时渲染成为可能

      像下图那样的天空光照明

      以往只能在离线渲染器里出现

      下图截自Enscape官方论坛用户HDD

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      为了进一步改善

      Enscape还有很多

      很用心的功能和细节

      例如渲染太阳光的反弹光时

      计算射线交点和阳光阴影贴图的关系

      这样能节省很多性能

      我蹩脚代码的阳光渲染也是从这里学到的

      下图截自

      链接

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      在采样时

      为了保证采样足够多

      同时保证画面流畅不卡顿

      Enscape把采样分布到多帧

      这样每帧需要的样本就很少

      画面就很流畅

      下图截自

      链接

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      Enscape的雾浓度

      会直接影响丁达尔效应

      很讲道理

      用户完全不需要操心复杂的参数


      因为有常识的人都知道

      雾浓了才会出上帝之光

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      Enscape自带天空系统

      能模拟较真实的日照变化

      也能导入外部天空贴图

      下面俩1080p视频平均每张图渲染时间才0.2秒

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      还有

      Enscape默认就有屏幕空间接触阴影

      解决因阴影贴图分辨率不足带来的浮空

      在用户感知到问题之前就已经解决问题


      Enscape有Revit,Rhino,Sketchup插件

      视口能和建模软件同步更新

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      能把项目打包成独立运行的exe

      放在任意电脑上观看

      还能上传到网上

      直接在网页上查看项目

      可见Enscape团队还对webGL做了专门的优化

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      还支持VR观看

      支持全景图输出

      支持视频输出

      ……

      等等



      虽然还有一些问题

      从刚面世到现在

      Enscape进步巨大

      功能越来越完善

      画面也越来越好


      尽管画面还比不上离线渲染器

      但Enscape在速度上远超它们

      非常适合快速预览设计


      Enscape用自己的技术方案

      真真正正地缩短了可视化流程

      非常有追求

      期待以后的进步


      在RTX实时光线跟踪出来之前

      他们早已经做到了

      高品质的实时渲染

      可见是个技术过硬的团队

      绝不是忽悠人的

      如果集成RTX

      只会更强




      现在有RTX了

      光线跟踪效率有很大提升

      实时画面变得更好


      最近GDC就有不少劲爆的演示

      例如Quixel用UE4制作的实时短片Rebirth

      非常推荐去看4k原片

      下图截自

      链接

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      还有Unity的实时短片The Heretic

      1440p30Fps运行在一台消费级电脑

      非常惊艳

      下图截自

      链接

      探索秒出渲染图的可能 | 到底是弄虚作假,还是真材实料

      前阵子还听说

      有国产可视化软件集成了RTX

      能实时呈现逼真画面


      而且RTX也即将支持老显卡

      大伙可以享受新技术带来的便利


      我相信

      只要是有技术有追求的团队

      肯定能带来真正有用的工具


      如果本文有技术性错误

      还请各位神仙指点小弟


      其实本文应该早两个月推送

      无奈真的没时间




      文中Enscape测试图均用Enscape2.4试用版输出


      参考资料和论文

      链接


      链接


      链接

    • 0
    • 0
    • 0
    • 18
    • 请登录之后再进行评论

      登录
      • 大版主
      • 小版主

      暂没有数据

      暂没有数据

      申请版主
    • 发表内容
    • 实时动态
    • 偏好设置
    • 到底部
    • 单栏布局 侧栏位置: