Games202-6 Real-time Ray-Tracing
a). Introduction
Real-time Ray-Tracing vs. Ray-Tracing:
Real-time Ray-Tracing == 1/few sample per pixel(SPP)
Key technology: Denoising(降噪)
一个光路样本(1 SPP path tracing):
第一步是Rasterization,而不是Ray的原因: 从摄影机发出经过各个像素的光线,即等同于进行一次光栅化,找到Primary hitpoint
第一步如做光线求交,则为光线投射(Ray Casting)。而光线投射和光栅化没有本质区别(都是渲染一点的DI,只不过相当于深度测试被光线求交替代了)
Ray Casting. 注意和光线追踪的区别,Ray Casting基本只求交一次,而不迭代追踪 ↩
- 传统的降噪方式不是效果不好,就是太慢或不靠谱
b). Temporal denoising(时域降噪)
Key idea:
- 复用前面已经降噪过的一帧;
- 使用motion vector来找到先前的位置;
- 本质上是提高采样率;
b.1). G-Buffer
b.2). Back Projection
- Key idea:不同帧之间相同的点,意味着有着相同的世界位置(如不移动)或模型空间位置;
How:
- 如果世界坐标 $s$ 存在于G-Buffer中,即可直接使用;
- 否则,$s = M^{-1}V^{-1}P^{-1}E^{-1}x$ ($E$ 为视口变换,即NDF到Viewport/Screen)
- 运动(Motion)情况已知,$s’ = T^{-1} s$,$s’$ 为运动前的位置,$T$ 为运动的矩阵
- 在 $i-1$ 帧,$s$ 对应的屏幕空间位置为 $x’=P’V’M’s’$