A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019
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的环境是室外城市,没有树叶那种
以上是全部的内容,
A Hands-on Look at Using Ray Tracing in Games with UE 4.22 GDC 2019的更多相关文章
- OpenCascade Ray Tracing Rendering
OpenCascade Ray Tracing Rendering eryar@163.com 摘要Abstract:OpenCascade6.7.0中引入了光线跟踪算法的实现.使用光线跟踪算法可实现 ...
- 开始研究Ray tracing
几个月前面试时Boss问过我一个问题--"除了scanline渲染方法,你还知道什么其他渲染方式?",我没答出来,至今记忆犹新. 前段时间摆弄Intel VTune时看了它的示例代 ...
- Ray Tracing
Ray Tracing 题目链接:http://codeforces.com/problemset/problem/724/C 拓展欧几里得 //为什么这次C题这么难啊=.= 可以观察到,光线在矩形中 ...
- 《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐
<Ray Tracing in One Weekend> 优点: 相对简单易懂 渲染效果相当好 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起 ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-7 任意长方体 && 场景案例
上一篇比较简单,很久才发是因为做了一些好玩的场景,后来发现这一章是专门写场景例子的,所以就安排到了这一篇 Preface 这一篇要介绍的内容有: 1. 自己做的光照例子 2. Cornell box画 ...
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-7 混合概率密度
Preface 注:鉴于很多网站随意爬取数据,可能导致内容残缺以及引用失效等问题,影响阅读,请认准原创网址: https://www.cnblogs.com/lv-anchoret/category ...
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction & ONB
Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-4 基于重要性采样的材质初探
Preface 我们今天来把第三本书从开局到现在讲的一大堆理论运用到我们的框架中,那么今天我们首先将原始的材质改为基于重要性采样原理的材质 这一篇是代码工程中进行MC理论应用的初步尝试篇 Read ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-9
我们来整理一下项目的代码 目录 ----include --hit --texture --material ----RTdef.hpp ----ray.hpp ----camera.hpp ---- ...
随机推荐
- 记录下为了玩 docker 安装 CentOS 7 最简化版后遇到的一些问题
今天我的腾讯云服务器在使用docker安装ElasticSearch和Kibana的时候内存不够,安装完直接卡死.所以无奈只能在本地上跑VMWare安装CentOS7来运行测试. 从阿里云镜像地址:h ...
- nodejs nvm npm常用命令
---恢复内容开始--- 一行命令搞定node.js 版本升级 node有一个模块叫n(这名字可够短的...),是专门用来管理node.js的版本的. 首先安装n模块: npm install -g ...
- svn clean up
1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db3.将sqlite3.exe放到.svn的同级目录4.启动cmd执行sqlite3 .svn/wc.db " ...
- Oracle数据库应用系统结构
在安装.部署oracle数据库软件时,需要根据不同应用结构(即硬件平台.操作系统平台)采用不同的方法(基本安装.高级安装),下面介绍几种常见的应用结构. 1.应用系统的数据接口 客户端应用程序或应用服 ...
- 1.3.4 Fork/Join框架
package com.study.forkjoin; import java.util.ArrayList; import java.util.List; import java.util.conc ...
- git太慢用码云
克隆完之后,我们要对这个仓库进行下修改,将仓库地址修改为git的那个 git remote set-url origin xxxx.git 经过以上操作,这个仓库就和从github上克隆下来的一模一样
- Block Breaker HDU - 6699(深搜,水,写下涨涨记性)
Problem Description Given a rectangle frame of size n×m. Initially, the frame is strewn with n×m squ ...
- 树链剖分 树剖求lca 学习笔记
树链剖分 顾名思义,就是把一课时分成若干条链,使得它可以用数据结构(例如线段树)来维护 一些定义: 重儿子:子树最大的儿子 轻儿子:除了重儿子以外的儿子 重边:父节点与重儿子组成的边 轻边:除重边以外 ...
- MS SQL 2012表分区
最近开发一个手机用户统计平台,因为涉及到数据庞大,不得不以一周为单位对统计报表进行分区,所以记录一下,方便以后查看 第一步创建文件分组 对于文件分组共创建了14个,从 xy_group_2014102 ...
- MongoDB环境搭建
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...