告别抖动:相机光线计算的数值陷阱
Computing Camera Rays
在光线追踪与光栅化共存的过渡期,我们需要从 view-projection matrix 推导相机光线。看似简单的计算——取近裁剪面和远裁剪面的点相减——却隐藏着致命的数值陷阱。当相机远离原点时,浮点运算中的灾难性抵消会导致光线方向计算精度丢失,让平滑的镜头运动变成令人抓狂的抖动。本文深入剖析了这一现象,并给出了一个基于平面定义的更稳健的替代方案,确保在 Direct3D、OpenGL 和 Vulkan 等不同 API 下都能获得精确的 world space 光线,无需针对特定相机模型进行额外调整。
一个缓慢、连续的相机运动,由于光线方向向量计算中的舍入误差,变成了一场抖动的混乱。