光子跟踪 - 新一代 photo realistic rendering


#1

光子跟踪 - 新一代 photo realistic rendering

事实1

光由大量光子构成。

事实2

光速有限

事实3

光子行为可以使用量子概率波描述——即,用一个光子无限次重复运动一样可以模拟无数光子的行为。

事实4

在一定时间内,场景内的光子总数维持不变——即,不改变光源的情况下,场景的光照强度不会随着时间慢慢变暗,也不会随着时间的慢慢变亮。

通过研究以上的几个事实,可以获得一个重要结论: 通过无限次同时跟踪单个光子在场景里的传播碰撞,可以获得跟踪无数条光线在场景里的碰撞一样的结果。从而避开传统光线跟踪所需要的递归运算。同时通过并发同时跟踪固定数量的光子,可以提高模拟效率。而光速有限的事实,使得每次迭代运行可以重用上一时刻的光子状态,不必每次都从光源开始跟踪光子,大大减少了每帧渲染的计算量。

光子跟踪通过跟踪单个的光子而不是光线来模拟物理世界的光线传播,从而获得接近真实照片的渲染效果。

光子属性: 对任意一个光子,具有3个属性:位置,方向,颜色(波长)。 光子和物体交互(碰撞)后,只有2个行为: 1:吸收 2:重发射 重发射后的光子可以是相同颜色或者不同颜色,可以是相同角度(镜面反射)或者不同角度(漫反射)。 这2个行为可以使用概率波来描述。不同的概率波定义了“材质属性”。

光线传播计算

从光源发射后,经过一段时间的运动,光子最终要么被场景里的物体吸收,要么移动到场景外丢失跟踪,要么最终进入“镜头”并成像于底片上。光子跟踪完成后, 计算单元就可以重新“领取”一个新的光子重复跟踪过程。领取一个新光子的过程,可以认为新的光子以一定的“概率”出现在光源上。领取的新光子出现的位置的概率,正比于相应位置的光源在整个场景里提供的辐射强度。

渲染计算

光子和镜头“碰撞”即进入了渲染步骤。光子被凸透镜折射后撞击底片。 到达底片的光子,经过采样和后处理后,输出为一定分辨率的彩色照片。通过采集一段时间内的光子,模拟快门时间,而后处理时通过提高单个光子的能量值,模拟 ISO 感光度设置。后处理还可以进行白平衡,模拟人眼对颜色的适应。