A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019

talker: Sjoerd De Jong (SR.ENGINE EVANGELIST)

ue4.22加入了raytracing,GDC2019上,Epic的工程师用一个简单的场景延时了下raytracing的一些效果。视频在油管UnrealEngine的频道已经放出来了,除了光追,还包括其它包括物理,声音动画的分享。

原视频地址:https://www.youtube.com/watch?v=EekCn4wed1E&list=PLZlv_N0_O1gYrzsn-fTzsrJq4sQPlAiqb&index=13&t=0s

原文标题是 hands-on look ,翻译成人人都能看懂不过分把(滑稽

0. Intro

全文 主要从 软阴影,反射,半透明,AO/GI,性能分析 几个方面介绍ue4.22中加入的raytracing。

演示场景是一个地铁的环境,会包括水面反射,瓷砖,镜子,车灯等效果

4.22 支持了全灯关类型的软阴影(天光,点光,范围光)的raytracing,反射,AO,GI,

还有一些没有支持上的,未来会支持上的

ue4中怎么开

开raytracing,要你有张RTX的卡,windows版本在1809之上, ue4启动的时候加上 -DX12,ue4的project setting 里面开启 raytracing
也可以参考这个视频 RealTime Raytracing Arrives

1.Shadows

首先从阴影开始,介绍下不同光源产生阴影,传统做法和光追的区别。包括天光,点光,平行光,矩形光,还有光追效果和普通效果混合的。

进入一个地铁场景,里面很多光源,注意看人物的影子,开启cast raytraced shadow之后,人物的影子柔和了很多,可以通过改变光源的source radus调整软阴影的边缘,0话的就最硬。

注意看,通过ratraced生成的阴影,越靠近脚部的地方越硬,人上半身的影子边缘梯度下降的就很明显,这是传统PCF做软阴影达不到的。


4.18 就加入了rect light,但是4.22加入raytracing之后,算是完善了rect light。

rectlight在环境中可以产生了很棒的灯光效果,可以像rect一样,调整rect的width,height

比较有意思的是还可以调整ban door angle和length,类似灯的厚度(这样理解不知道准不准确)。

还可以加一张贴图,达到特殊形状rect light的效果,像天花板上的2根灯管。

还有这个rect light 的source texture 在反射中也是有效果的。


下面是一辆地铁通过时候,开启raytracing和不开的比较。可以在命令行里输r.RayTracing.Shadows 0 关闭。没开的话,影子特别的锐利


刚才是在indoor环境的,现在展示下outdoor的,很多茶壶,一盏平行光。上面的是没有用raytracing,用的传统CSM(Cascade Shadow maps)动态阴影,跑了52 fps。

同样的场景,同样的视角,Ray tracing 跑了73 fps,可以看出光追在动态阴影表现卓越。

其实可能确定室外,大环境更适合用raytracing,现在主机常见的室外做法是,太阳光产生 动态阴影,环境中可能有多盏点光源不产生阴影,共同作用达到动态阴影的效果。

之前地铁的场景可以在epic的商城里免费拿到

2.Reflection

反射这部分,主要讲反射过后的软阴影,光线的弹射次数,性能问题(后面性能分析会提到)

接下来看看反射的东西,镜子里raytracing的反射效果特别好,如果你移动的话,还会看到一部分 noisy

这里的墙面瓷砖光线是只进行了一次反弹,当然ue4也支持多次。

下面是开1次bounces 的效果,和开3次的效果。开了3次之后隧道墙面的灯光明显更亮了一点。帧率也是明显下降了从 90帧降到了30帧。


还有镜子里的阴影,你会发现,镜子中的影子和现实世界不一样,因为为了性能优化,ray tracing reflect的 shaodws,提供了hard shadows,Area shadows,

3. Translucency

半透明物体

半透明物体,例子是地铁的玻璃,透过玻璃看外面墙面上的led灯。

type可以选Raster或者RayTracing。

第二张图是ray tracing的效果虽然只做了一次bounce,但是玻璃里受环境影响的黑色的效果也比光栅化的效果好很多,黑色更纯粹。


4. AmbientOcclusion

这一部分演讲者,说了下因为演示场景是在室内,地下,黑色比较多,AO和GI的效果不明显,为了性能,他没有开启,别的环境可以尝试,说是效果很好。

5. Optimiazation and Performance

性能优化,主要从阴影,反射,半透明,AO/GI 这几个方面

反射是游戏里面最耗的,用GPU profiler工具可以看到刚才那个场景RayTracingReflections 占到了2/3。

老黄的Nsight也是非常好的Profiler工具, DXR也提供了一套Profiler的工具。(为啥不安利一波宇宙第一RenderDoc呢?)

反射性能主要受到这几个东西的影响:

  • Screen Percentage 反射的质量
  • Distance 光追的距离,或者说bounce的次数(追的越远越耗,弹的次数越多约耗)
  • Material Roughness 材质的粗糙度(pbr微表面原理,不同Roughness的材质,对光线的吸收是不一样的,光滑和不反射的材质都是不怎么耗的)

5.1 Material

材质不同,光追的复杂度也会不同,可以通过关闭r.RayTracing.EnableMaterial 0 来关闭,遮罩材质很慢!

演讲者做了这样的一个debug工具(上一节最后一张图),可以看不同材质ray tracing 的时候的消耗,yellow是发生100%反射,近似镜面反射的;green是不发生反射的,光线直接被吸收掉的;
2者交界处,褐色的部分是交界处,材质较为复杂,发生了漫反射,当ray过来的时候,并不是直接镜面反射走掉,而是diffuse向四面八方,这就要大量的计算,朝不同方向,计算ray的bounces,这非常耗。

还有就是混合材质,混合材质意味着更复杂的反射折射,这也会更耗。

Mask Material也很耗,因为他要去算材质表面那个位置是0还是1,可见和不可见又要分别处理。

5.2 Geometry

不同几何体,性能消耗也会不一样。

  • 空间中特别小的物体,很耗。(如树叶,栅栏等)
  • 不透明的固体会比较快(因为不会发生 scatter 散射)
  • 室外会比室内快(室内空间小,光线可能发生多次弹射,室外直接弹走了)
  • 所以更适合raytracing的环境是室外城市,没有树叶那种

以上是全部的内容,

转载于:https://www.cnblogs.com/SeekHit/p/10780743.html

A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019相关推荐

  1. 总结《Ray Tracing from the Ground Up》

    之前已经学习过<Ray Tracing in One Weekend>和<An Introduction to Ray Tracing>的一些内容,相关总结文档链接如下: 总结 ...

  2. Ray Tracing,Ray Casting,Path Tracing,Ray Marching 的区别?

    作者:洛城 链接:https://www.zhihu.com/question/29863225/answer/70728387 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  3. 《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐...

    <Ray Tracing in One Weekend> 优点: 相对简单易懂 渲染效果相当好 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起 ...

  4. 【Ray Tracing The Next Week 超详解】 光线追踪2-6 Cornell box

    Chapter 6:Rectangles and Lights 今天,我们来学习长方形区域光照  先看效果 light 首先我们需要设计一个发光的材质 /// light.hpp// -------- ...

  5. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction ONB

     Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...

  6. Codeforces 724 C. Ray Tracing

    Codeforces 724 C. Ray Tracing 题目来源 codeforces 题意: 有一些传感器按输入坐标分布在图上,有一道光从(0,0)沿45°角出射,遇到边按反射法则反射,遇到角落 ...

  7. 【Ray Tracing The Next Week 超详解】 光线追踪2-4 Perlin noise

     Preface 为了得到更好的纹理,很多人采用各种形式的柏林噪声(该命名来自于发明人 Ken Perlin) 柏林噪声是一种比较模糊的白噪声的东西:(引用书中一张图) 柏林噪声是用来生成一些看似杂乱 ...

  8. 《 Ray Tracing from the Ground Up》官方代码的潜在的纹理映射问题

    最近,小编在< Ray Tracing from the Ground Up>的基础上尝试实现BART的动画.写过一篇博文来总结初期实现的结果: "在< Ray Traci ...

  9. 【长文】在《 Ray Tracing from the Ground Up》的基础上实现BART的动画

    第一部分:前言 本文是介绍在<Ray Tracing from the Ground Up>的那套代码的基础上怎么做出和BART官网上提供的视频差不多的动画. 大概一年前,小编写过一篇汇总 ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图(垂直堆叠组合)、并为组合后的图像添加图形的注释信息(标题,副标题,坐标轴,字体,颜色等)
  2. [分享]千万数量级分页存储过程(效果演示)
  3. php 压缩js css文件,PHP实现动态压缩js与css文件的方法
  4. [转] Figuring out why my SVCHOST.EXE is at 100% CPU without complicated tools in Windows 7
  5. smartcar_body.urdf.xacro
  6. 安装Jenkins教程(wind版)
  7. js中 json对象与json字符串相互转换的几种方式
  8. CMMI认证难度大吗?
  9. Git廖雪峰 常用命令总结
  10. 小公司代理记账报税常见问题
  11. Python爬虫自学系列(四)
  12. matlab 跳步循环,足球训练:每天10分钟挑战7天球感训练
  13. 【架构思维】:设计服务降级的思路与方法
  14. 我们的宇宙,在某种意义上,是最好的一个
  15. kali使用笔记本自带无线网卡_不会选无线网卡看过来!再也不花冤枉钱了.........
  16. 神经内科临床带教中CBL教学模式的应用效果
  17. PHP输出一段励志的话,100句关于励志的话,青春励志的话,写得好的励志句子
  18. Python调用谷歌翻译接口
  19. Vue中的插件小练习
  20. 排队论的计算机模拟,排队论模型(八):Matlab 生成随机数、排队模型的计算机模拟...

热门文章

  1. 2013\Province_Java_A\2.振兴中华
  2. 一入爬虫深似海,反爬技术你知多少?
  3. 小姐姐教我的 sklearn 逻辑回归
  4. bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
  5. 【机器视觉】 assign算子
  6. 【MFC】利用MFC向导生成单文档应用程序框架
  7. 【STM32】系统配置控制器相关函数和类型
  8. 【Linux系统编程】Linux 可执行文件结构与进程结构
  9. 电脑时钟不准_电脑维修第三课:常见故障判断(上)
  10. geany搭建python环境_第一章:搭建Python的开发环境