sample per pixel 单像素采样
一次SPP光线追踪等于初级光栅化+初级可见光线+二级弹射光线+二级可见光线


RTRT最关键的在于降噪。
我们的目标是无过度模糊、无伪影、保留所有细节,保证速度
我们可以采用时间上的滤波方法。
假设前一帧已经降噪并重用来给这一帧降噪,使用运动向量再找到之前的位置

G-Buffers几何缓冲
渲染过程中免费获取的辅助信息,包括直接光照信息、法线信息、漫反射颜色信息,分别保存在一张屏幕空间二维缓冲中。

Back Projection 后退投影

采用MVP和视口变换的逆变换,带上深度信息。
![]()
然后运用运动变换的逆变换:
![]()
最后再运用MVP和视口变换得到上一帧的位置
![]()
滤波一般采用线性的混合:

滤波不可能让有噪声的图变暗后者变亮,看起来原图像暗是因为噪点亮度超出显示器能显示的高度
失败原因:前面几帧信息通常不是可获取的,镜头和场景可能快速变换。倒退走会出现新物体。
被遮挡的物体可能出现,这个时候会出现拖影。
我们可以给物体一个编号然后记录前面一帧每一个像素点对应物体编号来判断是否取了正确的物体,这样解决了拖影,但是重新引入了噪声。
这样也会有阴影的拖尾现象,以及反射拖尾,实际显示跟不上运动

这个时域积累降噪的方法和TAA几乎等同,都是时域上的超采样。
Implementing a spatial filter 实施空间滤波器
使用一个滤波核K对有噪点的图像进行滤波。

Bilateral Filtering 双边滤波
高斯滤波会糊掉,我们要保证边界还是锐利的。
边界就是颜色急剧变化的位置,如果相邻像素颜色差别特别大,就不让它们起到贡献,于是修稿高斯滤波公式为:

但考虑到噪声也可能使得颜色差别大,我们可以使用G-buffer,因为G-buffer是没有噪声的。
高斯也不是唯一选择

不同边界可以采用不同判断,例如:


Implementing Large Filters 实现大的滤波
对于解决一个大kernel,一种解决方法是在一个方向上做滤波再再另一个方向上滤波


二维的高斯函数本来就等于一维高斯函数乘积:
![]()
![]()
对于不是高斯滤波的核,也可以进行近似拆分
第二种解决方法是分成几步,每一步都是一个小kernel


对于椒盐噪声,我们,采用周围均值的附近的范围几倍方差:
![]()
大于的clamp到范围内。
对于上一帧的结果我们也要相应的clamp

897

被折叠的 条评论
为什么被折叠?



