games202笔记-实时光线追踪

author author     2023-04-15     669

关键词:

参考技术A

RTX是一种硬件架构,能够更方便的追踪光线。 每秒能处理10G的光线(指一个像素的样本,sample per pixel),但并不是全程算力都在处理光线,还会做降噪等工作。 所以在RTRT中,我们只能做到1SPP的光追精度。
RTRT在做什么:阴影、反射和镜面反射、环境光遮蔽、全局光照(光线追踪适合做的事)
RTX处理的反射情况非常多,因为glossy的表面更容易做RTRT,diffuse倒更复杂

路径追踪是基于蒙特卡洛积分的方法,本身会产生噪声,采样的样本越多噪声越小,RTRT使用了1SPP的方法,会产生非常大的噪声。所以 RTRT的核心技术是降噪 ,如何从噪声图生成清晰的图。
降噪目的是:在1SPP的前提下,进行降噪,达到画面质量要求(没有过模糊,没有artifacts,保留了所有细节),并高效处理。
使用切边滤波系列(SF,AAF,FSF,MAAF)、离线滤波方法(IPP,BM3D,APR)、深度学习,等降噪方法对RTRT降噪不可能。

G-buffer
G-buffer:几何缓冲区:在渲染的过程中获得的免费的 屏幕空间 信息,比如逐像素深度、法线、世界坐标、直接光照结果、反照率kd等等。是屏幕空间的信息。也可以都各自保存进gbuffer中,方便后续使用。

是工业界常用的解决方法。关键思路: 假设前一帧被降噪完毕,并假设帧与帧间的连续性 。使用 motion vector 寻找前一帧的位置,将前一帧的结果复用。相当于增加了SPP。
motion vector:描述了屏幕空间中的物体在帧与帧之间运动的相对位置(上一帧像素对应的片元,与下一帧该片元对应的像素位置的相对移动)

Back Projection
要找到当前帧某一像素的内容,对应上一帧哪个像素,Back Projection就是求解motion vector的方法。

时域滤波的问题:

解决方法:主要是clamping和detection。

上文介绍了如何实现时域滤波,在时域滤波前我们会对1SPP的图像进行一次空间域的滤波,这次空间与的滤波可以有效地把原图降噪。

空间域滤波最常用的方法是使用 基于距离的高斯滤波核 进行滤波。这种滤波考虑的部分大概是 范围内对中心像素有贡献。

我们在对原图进行滤波时,要首先明确: 不是所有的高频信息就全是噪声 ,当然 也不是低频信息中就没有噪声 。于是我们需要保留有用的高频信息。

双边滤波基于一个观察: 当此处颜色变化非常剧烈,我们认为是边界
所以双边滤波的思路是: 找到一个保留边界的方法 ——如果像素 与像素 的颜色差异非常大,就让像素 贡献少一些;仅仅向滤波核添加一些控制的方法就可得到。

我们可以看到:高斯滤波提出了一个滤波标准,即两像素之间的距离;双边滤波提出了两个滤波标准,即像素位置距离和颜色距离;那么我们也可以使用更多的特征来帮助滤波。由此而提出的联合双边滤波是非常适用于RTRT下的滤波。

使用G-buffer,作为新的标准帮助滤波 。因为G-buffer是 完全没有噪声 的,G-buffer在光栅化过程中生成,和光线多次弹射无关。联合双边滤波还可以考虑其他的标准,每一个标准的σ和μ都可以单独考虑,滤波的阈值(多大距离算大)也可以主观设置

例如下图中:AB之间深度差距过大,BC间法线差距过大,DE间颜色差距过大

还有一个问题:我们滤波过程中所用的滤波核是NxN大小的,对于每个着色点的滤波都要遍历它NxN范围内的邻居,开销很大。对于小滤波核来说可以接受,但是对于大滤波核,开销巨大。

对于大滤波核有两种 加速滤波的办法

由于outlier的亮度会非常大,导致滤波后它的亮度会贡献到周围点,形成块状亮斑,所以要在滤波前将outlier检测并剔除。但是由于outlier的结果也是合理的, 剔除outlier导致能量不守恒 ,但是RTRT领域为了效率只能这样做。

在讲述高斯滤波和双边滤波时提到,我们需要判断高频信息属于噪声还是图像信息,保留有用的高频信息。
SVGF与在时空上降噪的方法差不多,SVGF增加了偏差分析和其他的技巧。
主要思想: SVGF是一种联合双边滤波
它通过三个因素指导滤波:

通过循环神经网络在时域上,基于Gbuffer和1SPP的渲染图,从而计算降噪的渲染图。

ogre3d 集成(快速但非实时)光线追踪

】ogre3d集成(快速但非实时)光线追踪【英文标题】:ogre3dintegrate(fastbutnotrealtime)raytracing【发布时间】:2013-03-0108:28:19【问题描述】:我在实时应用程序(C++)中使用Ogre3D。应用程序必须在尽可能多的平台上运行:没有强大显卡的... 查看详情

dxr实时光线追踪技术概览

长久以来“光栅化(rasterization)”一直统治着实时渲染领域,其实并不是说这种渲染方式有多么的好,主要是因为它更便于实现硬件加速。光栅化渲染的基本算法很简单,但是要想达到好的渲染效果,就... 查看详情

如何在现代 OpenGL 中进行光线追踪?

...它应该实现光线追踪(因为理论上,它可能在几年内成为实时图形的理想选择)。但是我从哪里开始呢?假设我从未在旧的OpenGL中做过光照,所以我会直接使用非弃用 查看详情

没有递归光线追踪就不可能实现反射和折射?

...36【问题描述】:我正在使用GLSL计算着色器编写基于GPU的实时光线追踪渲染器。到目前为止,它工作得非常好,但是当涉及同时具有反射和折射时,我偶然发现了一个看似无法解决的问题。我的逻辑告诉我,为了在物体(例如玻... 查看详情

鲁大师光线追踪测试上线:你的显卡可以给“光追”跑分了!

...术的巅峰。RTX20系列显卡在Turing图灵架构的GPU内加入了“实时光线追踪”功能,将光追正式铺开到市场中。NVIDIA光线追踪技术发展了两代产品,AMDRX6000系列也加入其中。  时至 查看详情

光线追踪、光线投射、光线行进和路径追踪有啥区别?

】光线追踪、光线投射、光线行进和路径追踪有啥区别?【英文标题】:Whatisthedifferencebetweenraytracing,raycasting,raymarchingandpathtracing?光线追踪、光线投射、光线行进和路径追踪有什么区别?【发布时间】:2021-07-2413:56:51【问题描述... 查看详情

视频系列:rtx实时射线追踪(上)

视频系列:RTX实时射线追踪(上)VideoSeries:PracticalReal-TimeRayTracingWithRTXRTX在游戏和应用程序中引入了一个令人兴奋的和根本性的转变。在这个视频系列中,NVIDIA工程师MartinKarlLefrancois和PascalGautron帮助您开始实时光线跟踪。您将了... 查看详情

计算机图形学学习笔记——whitted-styleraytracing(games101作业5讲解)(代码片段)

计算机图形学学习笔记——Whitted-StyleRayTracingGAMES101作业5讲解遍历所有的像素生成光线光线与平面求交遍历所有的像素生成光线关于作业五中如何遍历所有的像素,生成光线,Ray-Tracing:GeneratingCameraRays.一文中描述得非常清... 查看详情

games101课程学习笔记—lec14~16:raytracingbrdf渲染方程全局光照路径追踪

GAMES101课程学习笔记—Lec14(2)~16:RayTracing(2)BRDF、渲染方程、全局光照、路径追踪0引入——辐射度量学概述1相关概念1.1RadiantEnergyandFlux(Power)1.2RadiantIntensity1.3Irradiance1.4Radiance1.5Radiance&Irradiance&Intensity... 查看详情

光线追踪:阴影光线输出问题

】光线追踪:阴影光线输出问题【英文标题】:Raytracing:ProblemswithShadowRaysOutput【发布时间】:2018-11-2513:49:30【问题描述】:Beforethisistaggedasaduplicate,Iamhavingtheexactsameproblemastheindividualwhoaskedthisquestion.不幸的是,它根本没有帮助的答... 查看详情

关于光线追踪

关于光线追踪//embreehttps://github.com/embree/embreehttps://blog.csdn.net/qq_37366618/article/details/104271162 查看详情

减少光线追踪时的计算

】减少光线追踪时的计算【英文标题】:ReducecalculationswhileRaytracing【发布时间】:2017-08-1807:45:11【问题描述】:我已经编写了自己的3D游戏引擎(我花了一年时间),我想创建一个在我的CPU(而不是GPU)上运行的光线追踪器!目... 查看详情

光线追踪 - 反射

】光线追踪-反射【英文标题】:RayTracing-Reflection【发布时间】:2014-03-0507:14:20【问题描述】:我现在正在研究光线追踪器,反射部分。我的一切工作正常,包括创建一个带阴影的球体。现在,我正在实现反射部分。但是,我无... 查看详情

提高光线追踪器的性能

】提高光线追踪器的性能【英文标题】:Improvingraytracerperformance【发布时间】:2010-10-2103:36:33【问题描述】:我正在用D(http://dsource.org/projects/stacy)编写一个相对简单的光线追踪器/路径追踪器,但即使经过全面优化,每条光线仍需... 查看详情

C中的光线追踪器,光线平面相交

】C中的光线追踪器,光线平面相交【英文标题】:Ray-tracerinC,Ray-planeintersection【发布时间】:2013-02-2004:49:42【问题描述】:我正在使用C语言开发光线追踪器。我正在尝试找出光线平面交叉点的数学运算。我有d=((Po-Lo)(点)N)/(L(点)N... 查看详情

光线追踪器阴影问题

】光线追踪器阴影问题【英文标题】:RayTracerShadowProblems【发布时间】:2018-12-1821:58:10【问题描述】:我正在研究光线追踪器,但是我被困在阴影部分好几天了。我的影子表现得很奇怪。这是光线追踪器的图像:黑色部分应该是... 查看详情

2追踪光线=》2.1

2.1光线追踪前  我们只看到的最后一节的一个计算机图像科学中的关键问题是为每个像素决定它们的正确颜色,然后唯一方式是平均所有撞击像素的有色光。但是我们如何找到这些光线呢,它们又是什么颜色呢?确实,所谓的... 查看详情

计算机视觉图像处理面试笔试题整理——光线追踪&光线投射&路径追踪

...1.什么是光栅化?2.什么是路径追踪 ?   3.光线追踪算法实现 1.什么是光栅化?    我们屏幕上显示的画都是由像素组成的,而三维物体都是点线面构成的。要让点线面,变成能在屏幕上显示的像... 查看详情