今年SIGGRAPH Asia上最感兴趣的莫过于这篇Robust Light Transport Simulation via Metropolized Bidirectional Estimators,看标题就很牛逼:原本比较独立的光线追踪两大经典算法BPT和MLT合体了!这里简要描述下这篇论文的思路:
传统上我们认为光线追踪有三大基础算法:BPT,PM和MLT,它们都是相对比较独立的,因为它们各自采用不同形式的光照公式,例如BPT的路径积分形式,PM的范围估计,MLT则是将整个图像看成一个分布,这些看起来都是完全独立的。然而它们各自都有优缺点,好的想法是能不能把它们组合起来。
例如BPT的缺点是不能处理SDS,PM的缺点是处理diffuse表面不如BPT,MLT由于抽样点的相关性导致处理高光表面很低效,因为Markov chain始终在高频尖锐的部分徘徊,从整个图像上看stratification不够好;
2012年的VCM/UPS算法是一个很大的突破,它开始尝试将BPT和PM结合起来,使用PM对light subpath采样,并且将算法统一到BPT中,这样BPT就可以有效处理SDS。近几年中VCM/UPS几乎成了现在主流的离线渲染解决方案(参见The Path to Path-Traced Movies这篇论文);
然而VCM/UPS的缺点是,因为它仍然是BPT的思路,eye subpath并不知道light subpath的情况,所以尽管它能处理SDS,但是两个subpath连接的时候形成的很多full path由于可见性(尤其对于复杂visibility的场景)而对光照贡献率很低,而MLT则很擅长处理Visibility的问题,所以这篇论文就基于VCM/UPS来使用MLT对light subpath进行采样,这样保证了两个subpath之间的连接更符合最终图像分布。这篇论文也就同时把BPT,PM和MLT三大基础算法组合在了一起!
具体做法就是,首先使用传统MC在图像平面生成eye subpaths,这里不使用MCMC产生eye subpath的原因是MLT在图像平面(image plane)的stratification不好;然后从这些eye subpath的位置开始产生Markov chain来产生light subpath(所以MLT在这里是用来产生一个subpath分布而不是整个图像分布)。这样整个算法能处理高光和复杂Visibility这两大难题的场景。