Intro
阅读之前最好对光线追踪, 光照方程, 辐照度量学等有一定的了解, 且本文只对光子映射做粗浅的介绍.
光子映射 Photon Mapping 和光线追踪一样是真实感渲染领域的一种渲染方法. 他能够很好的解决光线追踪类方法相对难以处理的 Caustics 等现象. 并且一般情况下能以一定的内存空间为代价, 获得更高的效率.
另外与使用 Monte Carlo 的各种光线追踪方法相比, 当算法出现 Artifact(瑕疵) 的时候, 光线追踪方法一般呈现高频信号, 很容易被人眼察觉. 光子映射产生的 Artifact 则多为低频信号, 相对不容易被人眼发现.(在图像上的高频信号意味着小范围内颜色上剧烈的变化)
算法核心
光子映射是一个 Two-pass 的方法, 第一个 pass 为光子追踪, 第二个 pass 进行渲染
- 光子追踪(Photon Tracing Pass): 从光源像场景发射携带能量的光子, 光子在场景中与物体表面进行交互(反射或折射), 并在非光泽表面物体相交时记录, 最后将这些光子存储在一个全局的光子图(Photon Map)中.
- 渲染(Rendering Pass): 使用传统的路径追踪技术从摄像机通过屏幕向场景中发射光线并在场景中传输, 当光线与物体表面相交时