实时光线追踪 1

Real-Time Ray Tracing

  • 体积,散射,皮肤,毛发,将会在离线渲染的课上教

RTX

  • 光线追踪实质上是做场景的 BVH 树的遍历

  • RTX 专门遍历树,GPU 遍历树较慢

  • 100 亿跟光线每秒,约等于每帧每像素一条光线

SPP 光路样本

sample per pixel,最基本的 spp 是两次弹射,四条光路

image-20220309184452095
  • 光路样本

    1. 1 rasterization primary

    2. 1 ray primary visibility

    3. 1 ray secondary bounce

    4. 1 ray secondary visibility

  • 最基本的两次弹射光路

  • 第一条 primary 等价于光栅化

  • 1 SPP 看作 3 条光线对场景求交

Key technology 核心技术

  • 实时光追也是使用 path Tracing,出现是因为 GPU RTX 架构

  • 硬件的突破造成光追的广泛应用

  • 降噪技术是配合光追的重要技术

Denoising 降噪

goads

实时光追目标

  • 不模糊,没 Bug,具有细节,速度快

  • 当前方法都不可能在短时间内实现

image-20230328183541498

Temporal

  • 时间上的滤波,时间上的复用

  • 认为前一帧已经滤波完毕

  • 利用帧之间的连续性,认为前一帧的颜色输出可以对当前帧做重大贡献

Back projection 方法求 motion vector

image-20230328183824124
  1. 取像素点的屏幕坐标

  2. 求像素点的世界坐标

  3. 取对应物体上一帧的变换矩阵

  4. 求像素点在上一帧的世界坐标

  5. 求像素点在上一帧的屏幕坐标

  6. 计算位移向量

  • motion vector 是准确的,不像深度学习的光流,只有图像信息,没有物体信息

  • 也可以通过 z-buffer 里的深度信息求像素点的世界坐标

Temporal Accum Denoising

  1. 当前帧自己的降噪

  2. 和上一帧的输出 Color Buffer 线性混合

  3. 上一帧的权重为 80% ~ 90%

image-20230328184223325

滤波效果

  • 降噪前图片看起来暗

  • 因为噪点亮度超过显示范围

  • 整体图片的亮度期望降噪前后应当是相同的

  • 对比真实图片,降噪会亮化 AO 信息

Temporal Failure 时间方法的缺陷

  • 画面巨变,需要预热 burn-in period

    • 换场景

    • 镜头切换

  • 屏幕外信息

    • 看前方,倒着走

  • 出现原本被遮挡的位置

    • 容易出现残影(拖影、鬼影)

  • 阴影出现滞后情况

  • 反射也会出现滞后情况

    • 任何与环境光相关的着色改变,都会出现滞后

    • 因为在物体与环境光相对移动后,上一帧的像素着色和当前帧的输入已经是不同了,没有对当前帧贡献的意义

Adjustments to temporal failure

  • 提高当前帧权重

  • 是否应当废弃该位移向量

最后更新于

这有帮助吗?