您需要 登录 才可以下载或查看,没有账号?注册
x
38.what is ray tracing实时光线追踪本期话题:
什么是光线追踪? 光线追踪与光栅化有何不同? 混合渲染-什么很好的使用虚幻光线线追踪的阴影,环境遮挡,反射,全局照明
简短的回答: 追踪光线进入场景,看看它们击中了什么 光线是具有 原点和方向的假想直线 如果光线击中场景中的某物 我们可以使用击中对象的击中位置和表面属性 来帮助我们对场景进行阴影和照明
什么是光线追踪 对于屏幕上的每个像素 从相机里追踪一条光线,穿过那个像素,看看它击中了什么。 当它碰到什么东西时,找出它的颜色。 光线的像素变成了这种颜色。
我们从相机投射一条光线,穿过该像素并进入场景 如果光线与对象相交我们会计算出该点的颜色 如果光线击中 该颜色然后变成屏幕上像素的颜色,则需要进行大量数学运算来检测,大多数游戏引擎使用称为光栅化渲染技术,光栅化从3d对象开始它将对象三角形从3d空间投影到屏幕的2d空间然后使用光线追踪将这些三角形分割成像素这是另一种方式。
我们从像素开始,并通过将光线投射到场景中来计算它们的颜色,然后查看它们击中的内容光栅化渲染速度非常快,但另一方面由于涉及多少数学不太真实的光线追踪很慢,但结果可能是超逼真的。 光栅化使用诸如反射体积烘焙照明级联阴影贴图和屏幕空间环境AO之类的技巧包含来模仿光线的外观而光线追踪可以模拟真实的光线基本上只需要转动 混合渲染 - 光线追踪很昂贵,所以我们只在真正需要的地方使用它
- 漫射照明是通过光栅化完成的。
- 模糊反射是通过光栅化完成的。平滑反射追踪。
- 环境遮挡可以在屏幕空间或光线追踪中完成
- 可以对阴影进行光线追踪 - 但仅限于最重要的光线
- 全局照明可以进行光线追踪,但前提是我们关闭其他光线追踪效果。
光线追踪与栅格化有何不同 光栅化 从物体和三角形开始 非常快的渲染,但不太真实 模拟真实的光行为 打开它看起来很逼真
光线跟踪 从像素和光线开始 渲染缓慢,但非常真实。 使用黑客来模仿轻行为 需要开发者付出巨大的努力去创造真实的场景
混合渲染流水线 光线跟踪阴影很容易,我们只需从我们正在渲染的表面向光源投射一条光线
如果光线碰到它之前的某些东西到达光线 我们知道我们的原始位置在阴影中,如果光线根本没有击中任何物体表面完全点亮,如果光源是一个体积稍微复杂一点,我们必须向光线投射多条光线,如果一些光线到达光线但其他光线击中物体表面部分处于计算环境遮挡有点像计算阴影但整个世界,都是我们在当前渲染点周围的半球中投射光线的光源 如果所有光线都没有击中任何物体则表面被遮挡的百分比为零
如果所有光线击中某物表面是100% 被遮挡的但是如果只有一些光线击中某个物体那么因为光线太多而被遮挡 由于此过程需要大量光线 该技术通常会使用时间累积其中 每帧随机发送几条光线,因此该表面会被部分遮挡方向然后结果随着时间的推移累积 以创建反射眼睛矢量光线在命中位置击中物体我们计算反射矢量然后在该方向投射阵列 如果它击中物体 我们在击中位置捕获颜色然后变成反射颜色 如果表面粗糙反射向量变成圆锥 我们必须追踪多条光线来,在粗糙表面上追踪反射的光线越多这真的很昂贵,因为它击中的表面的颜色这对于光线追踪来说非常昂贵。我们可以使用阈值来控制此费用在特定粗糙度以下我们切换到标准光栅化反射,而不是使用光线追踪我将在未来的视频中展示如何在虚幻中做到这一点 全局照明之类的游戏中使用计算光线如何,通过未直接照亮的场景区域反射仍然接收一些光线。因为在每次反弹,反弹中光会损失一些能量并呈现它击中的表面的颜色这对于光线追踪来说非常昂贵 08:28展示动态实时照明
39.ray tracing setup光线跟踪设置在今天的视频中我们讨论在虚幻引擎中运行光线追踪所需的一切
我们将讨论您需要的硬件以及您需要如何设置的驱动程序 您需要在虚幻引擎内部进行的初始设置以开启光线追踪功能 首先有一块正确的显卡 我也有这个路径跟踪条目因此这些功能具有在虚幻中启用这向我表明光线跟踪功能已打开并且现在正在工作
为我将向您展示如何在此场景中设置光线追踪,并解决性能问题以及诸如此类的问题。因此在接下来的几周内我们将使用环境光遮蔽进行光线追踪阴影,光线追踪反射的光线追踪 最后是全局照明的光线追踪,我们将完成关于性能优化的光线追踪系列的最后一个视频 光线追踪可能非常繁重因此重要的是请确保设置尽可能最佳
40.ray tracing ambient occlusion在今天的教程中, 我们将讨论光线追踪环境光遮蔽, 我们将讨论如何打开它以及哪些设置可用于在虚幻中调整效果的外观和性能,然后再讨论---什么是环境遮挡 ---它是怎么计算出来的 ---什么是SSAO ---ssao有什么缺点 ---光线追踪环境闭塞在虚幻
环境闭塞: 环境光被阻挡的量的亮度被一个物体和它的周围所包围!
周围的物体即使在没有直射光的情况下场景收到一些环境光,因为光反弹然而周围的一些地区的场景如因为光线会在周围反射光线被阻挡或 遮挡 遮挡可能是由物体,自身遮挡或由周围环境遮挡的其他物体引起的。 可以通过在远离该点的半球投射光线来计算任何给定点,如果没有光线击中任何物体则无遮挡 如果所有光线都击中某物则无遮挡 如果只有一部分光线击中某物该点被部分遮挡则认为该点被完全遮挡,因此击中某物的光线百分比决定了该点的遮挡程度是您发出的光线越多准确的计算。 这里是一些环境遮挡看起来像的例子,注意角落裂缝和狭窄 空间比平坦和开放区域更暗该数据可以与场景中的环境光相乘以创建更逼真的照明, 就像您现在可能想象一下,这种计算可能会非常昂贵, 尤其是在支持光线 tr 的硬件之前有大量光线因为根本不可能做到这一点,
游戏开发人员创建了一种称为屏幕空间环境遮挡或SSAO的技术来粗略地近似环境遮挡。 SSAO使用 屏幕上每个像素的深度缓冲区重建场景,它对屏幕上的深度缓冲区进行采样周围的像素来尝试确定当前像素是否应该被遮挡 如果相邻像素更接近观察者他们被认为是遮挡物,这种技术在现代图形硬件上计算相对较快,但在人工制品中存在几个问题深度缓冲区记录每个像素与相机的距离, 但它不知道前景物体和后面的物体之间是否有空白空间,因此它通常认为一个物体被另一个物体遮挡, 而实际上该物体就在前面
另一个物体上方,下方的物体应该被遮挡,但这经常被SSAO忽略 (视频06分讲解)
所以我要做的第一件事是单击启用复选框并将 其打开,您可以立即看到 数值越小,性能越好。55cm比较合适位置 像素强度1秒
这个座位,你可以看到座位下面发生了一些很好的遮挡,那是因为通过光线追踪,我不只是使用深度缓冲区来渲染环境遮挡,我实际上是在将光线追踪到场景中 ,它们被允许反弹并击中我不知道的东西,这些东西在屏幕上实际上是不可见的,所以这真的很酷,有一个非常好的优势为了使用光线追踪进行环境遮挡。
41.实时光线追踪反射在今天的视频中 我们将在开始之前讨论光线追踪
我们将讨论光线跟踪反射如何修复其他方法的弱点最后我们将讨论 控制光线跟踪反射的每个设置我们将讨论什么它们会如何影响场景的视觉质量和性能 目前的反射方法、现有方法的缺点、启用光线追踪反射、RT反射解决了这个问题 在Unreal中的RT设置
展示我们今天要讨论的一些关于反射的原则,所以我们要讨论反射探测。这是向场景添加反射的第一种方法反射探针,现在这些您放置到场景中的点并且从该特定点捕获立方体贴图然后将该立方体贴图用作反射 开启反射探针 关闭反射探针
反射探针的范围对场景的影响
探针的缺点:
01.捕获它的特定位置准确,即使球体位于不同的位置每个球体中的反射看起来也 完全相同 02.花费很多时间,并找出这些探头中的每一个的准确位置以及每个探针的半径因。 03.而这些反射探针的第三个弱点 是它们是静态的这些立方体贴图需要烘烤因此任何时候我改变了我的场景我将不得不重新烘烤探测器所以我花了很多时间
屏幕空间光线追踪这里发生的事情,基本上游戏会获取屏幕并根据深度缓冲区重建场景。 然后将反射光线,射入立方体贴图中探测器实际上将光线射入它由屏幕构成的重建场景。 所以你可以在这里看到我有反射,就像这里的这个球体正在反射它的从场景反射这里的座位,所以我可以看到任何东西,屏幕也可以包含在反射中。这是一种光线追踪形式但它大大简化了。 因为它只能包含屏幕上的内容,屏幕外的东西的任何区域都会回落到光探头,这里中心的区域将被替换将反射,我身后的东西正在使用立方体映射光探头和边缘周围的任何可以捕获屏幕反射的东西,正在使用屏幕空间反射或屏幕空间光线追踪,所以屏幕空间光线追踪很棒。因为它是动态的它可以捕捉移动的物体,而且它也不必像光探头一样被烘焙,屏幕空间光线追踪是动态的它是实时发生的但它确实如此有它自己的一系列问题因为选择屏幕空间或光线追踪这两种方法是相互排斥的所以我将选择光线追踪而不是屏幕空间。
光线追踪反射也非常酷因为它们是动态生成 的场景中移动的任何东西都会在反射中被捕获例如 如果有一个玩家角色我可以看到
最后因为光线跟踪反射没有被烘焙 它们是完全动态的你可以看到我是否抓住一个球体并 在这些反射周围移动它实时更新 不涉及烘焙所以我不必做各种工作来 放置光探针体积或在场景改变时重新烘焙它们 这些反射在场景中实时渲染它们只是工作
后处理调整光线跟踪
设置我想要的第一件事 要检查 的是最大粗糙度 因此右侧的球体的粗糙度为零 或完美的镜子该反射体的粗糙度 为 0.1 0.2 0.3 和 0.4因此您可以 看到粗糙度随着我从右向左移动而增加 这个最大粗糙度设置的作用是
它设置为0.2这意味着如果我的粗糙度为 0.2 或更低 我只会看到光线追踪反射所以你可以 看到我在右侧的球体和此处的球体上获得了光线跟踪反射 但从这里开始(中间的球开始)我实际上正在后退现在只 使用立方体贴图反射这是一个非常好的性能优化。我们得到的模糊反射或表面越粗糙就越难判断实际反射的准确程度所以我不知道你是否能分辨出(视频13分)
想描述一下为什么 因为这些非常模糊的反射用超清晰的反射来计算要贵得多我只需要向 场景中投射一束光线来捕捉反射的 样子但反射模糊实际上我的反射角度 变成锥体而不是单条射线它 变成锥体表面越粗糙
所以如果你想提高 场景的性能尽量保持这个最大粗糙度值(0.2左右合适) 尽可能低
这是最明显的地方反射,实际上是真实的当我们可以摆脱它时我们 希望不使用光线跟踪反射而是 使用光探针立方体贴图反射 相反 这就是我们的最大粗糙度
下一个设置最大反弹 如果我们在这里看这个点你可以 看到 这个镀铬球体反映在那个镀铬球体上 我们可以看到反射的,如果我们进一步增加最大反弹你会看到 这两个黑点消失所以如果我把它设置为三个 呃 所以我们开始得到一种无限的镜面效果光线在这两个镀铬球体之间来回弹跳但是我建议你不 要这样做并且你将最大弹跳保留为1因为
我把这个数字设置得越高 效果就会变得越平滑而且质量会越来越高我只是要把 它设置为 32和 这完全会影响我的 表现但它也会让我的 反射变得漂亮和平滑你可以每秒得到一两帧 每像素采样数为 32 所以我肯定 不想这样做 我要离开它我要再次将其设置为1 通过降低粗糙度使表面平滑
最后一个设置阴影 Shadows
这意味着当光线被 投射出去时它们会撞击表面并 在该表面上反射 设置硬阴影 area shows (为了节省性能禁用阴影) 反射设置为光线追踪 ray tirking 粗糙度设置0.2 最大反弹设置为1 每个像素样本设置为1 阴影禁用 对我们投射的光线数量 要非常保守注意不要浪费任何资源
一些关于光线追踪的东西:我们谈到了屏幕空间 反射我们谈到了光探测器立方体贴图反射我们谈到了光线追踪如何解决这两种 反射方法引入的所有这些问题但是光线追踪确实是有代价的 所以我们必须相当保守如果我们打开它进行反射我们将设置 显着降低 42.光线跟踪阴影
在打开光线追踪之前讨论光线追踪阴影我想 向您展示在虚幻中创建阴影的传统方法并解释它的一些弱点
我将向您展示如何 通过光线跟踪解决这些弱点最后我们将介绍 光线跟踪阴影可用的设置,开启关闭区别 在虚幻中控制光线追踪阴影的行为首先我们看到是左图关闭效果和右图打开效果,你可以控制每个光源真的很好实际上我 建议你离开 对于所有 没有遇到这种彼得平移效果并且 不需要软阴影的光源这基本上 是光线追踪为阴影提供的两个功能,在关闭光线追踪的情况下渲染场景要快得多但是如果您确实想要获得漂亮的软 阴影衰减您可以在此处打开光线追踪
此设置在此处影响光线追踪 反射控制您是否希望 阴影为光线 追踪到反射这也是 我建议关闭的设置除非你真的需要它 因为它使光线追踪反射更昂贵 然后在这里只是相同的效果, 全局照明中的阴影如果您不是绝对需要它我 建议您将其关闭
现在还有一个设置 没有很多对回扫阴影的控制,这是控制每像素采样数的设置。那么每像素的样本越高或每像素设置越高让它变得更平滑现在阴影会变得更平滑
43.光线跟踪全局照明
我们将讨论光线追踪全局照明或简称 rtgi
首先我们将讨论照明是什么, 然后我将向您展示如何打开实时光线追踪向您展示它可以做的一些事情,然后我们将简短讨论何时应该使用它 最后我将向您展示您可以采取的一系列步骤以使其 在您的系统中运行得更快 所以什么是全局照明全局照明 是一个模拟在没有全局照明区域的情况下,光在你的场景中跳跃你的场景在阴影或不直接在光变暗因为地球照明的光不会反射在场景周围反弹 因此当光反弹时过去黑暗的区域被出它击中物体的漫反射颜色例如当光击中它并反弹时这面红墙可以看到红色 溢出到场景的其余部分 所以直接照明只是照亮被 来自光源的光直接击中的物体 直接照亮的物体然后反弹并击中其他物体这会导致整个 场景充满光而不仅仅是直接被光源击中的物体
通常全局照明是通过光烘焙在虚幻中完成的所以在这里 虚幻 如果您在构建菜单下进行构建您可以 选择构建照明其作用使用计算机中的主处理器使用 CPU 离线追踪全局照明然后将其存储在光照贴图中 并应用它 到你的物体表面
我们今天要看到的是实时光线追踪全局照明 这意味着这些事情是在实时完成的这是一件很酷的事情 开启灯光的光线追踪 后处理
墙面给一个红色反弹到地面和对面墙上
帧率变低
这是实时光线追踪可以做的最昂贵的事情你必须非常小心因为它有可能真正 损害你的游戏性能,你应该使用实时光线追踪 全局照明它真正擅长的事情是当你移动时 物体和 移动光源如果您的光源没有移动您 应该将光照烘焙到静态 物体中并使用烘焙光因为它 看起来与实时光线跟踪全局照明一样好甚至更好。
我们关闭全局照明将其设置为禁用,当你有移动物体时的光源如果你有静态物体和静态光源你应该完全关闭它,并只烘烤你的灯光 但是如果你的场景有移动的光就像太阳在白天穿过天空的昼夜系统 在这种情况下您可能需要考虑使用 实时光线追踪全局照明
优化
关闭光线跟踪 找方法代替有两种不同的方法 可用于进行实时光线跟踪全局照明 第二种方法修改后达到36针
全局光照命令50 25
为光线追踪每像素执行四个样本 减少采样
另一个命令 样本设置 2 或1
44.光线追踪反射性能的五种方法01.首先我们将讨论材质优化或创建专门设计,用于在反射中查看的特殊材质
02.然后我们将讨论粗糙度累积即随着反射光线的反弹而增加粗糙度, 03.然后我们将讨论最大光线距离这是一种限制反射光线可以发出的距离的方法,这可以改善通过限制测试反射的对象数量来提高性能 04.屏幕百分比这是一种降低整体反射成本的方法 05.然后我们将讨论混合ssr这是一种混合方式光线追踪和屏幕空间光线追踪之间的反射。 如果你坚持到最后 我们将添加一种额外的方法而不是为了提高性能,但实际上是为了改善反射的外观并使一切看起来更好。
看看我们的光线跟踪反射 帧速率每秒20针帧这是一个 很好的 糟糕的表现所以
最开始反弹设置为2 现在降低为1获得一些良好性能,这样会有一些大黑块我们把bou调节成2。接下来切换到主材料和基础材料在这里
混合光线跟踪 如果你使用这种混合方法那现在是一个非常好的性能胜利
45.gpu 性能优化和性能ctrl+shift+,打开
光线跟踪要记住的重要事情之一是它真的很昂贵你可以用光线追踪做很多不同的事情你可以做 环境遮挡你可以做全局照明你可以 做反射 可以做半透明但做所有这些事情可能不是一个好主意尤其是在这样的场景中,光源是静态的并且 所有网格都是静态的做 全局照明可能不是一个好主意所以,我们要做的第一个性能优化 是我们将在这个特定场景 中选择我们只想做光线跟踪反射 我们不想做光线 追踪
46.透明物体的光线跟踪今天我们将研究透明物体上的光线跟踪
折射方法我今天将向您展示如何使用光线追踪以便在有折射作用的玻璃上获得更逼真的效果。光线追踪折射所以这种材料被称为雕像玻璃我只是要切换到这里的材料
但是当你进行光线追踪时你 想要打开两侧这样你可以获得更多 逼真的结果 好的现在我们只是从上到下
原帖地址:什么是光线追踪!如何设置?光线追踪反射/SSAO/反射探针/全局照明等内容 (qq.com)
|