9. Radiosity(进行中)

发表在 章节介绍 | 留下评论

反向路径采样在MLT算法中的运用

今年的SIGGRAPH还是蛮有趣的,以下介绍可能是有史以来SIGGRAPH同一年同时出现三篇思路非常类似的论文:

Reversible Jump Metropolis Light Transport using Inverse Mappings
Fusing State Spaces for Markov Chain Monte Carlo Rendering
Charted Metropolis Light Transport

故事要从PSSMLT和MMLT讲起。自从1997年Eric Veach的MLT(Metropolis Light Transport)算法发表以来,这个被称为影响20世纪科技发展最重要的马尔可夫蒙特卡洛方法(MCMC,Markov Chain Monte Carlo)算法被引入到渲染领域,与传统的蒙特卡洛方法(例如路径追踪)不同的是,它通过利用样本之间的相关性来更好地探索一个分布函数,使得一些非常困难的路径可以更轻易被采样到,然而MLT算法依赖于非常好的突变策略,原始的MLT算法依赖于完全的随机采样,根本无法了解场景的一些几何信息,突变路径的接受概率极低,使得MLT算法在相当一段时间并没有太大进展。

时间到了2002年,Csaba Kelemen提出了PSSMLT算法(Simple and Robust Mutation Strategy for Metropolis Light Transport Algorithm),如下图所示,考虑到路径采样其实就是以增量的方式从每个顶点的BSDF分布从采样得到一个方向,然后使用光线投射找到该方向与表面的交点,重复迭代直到一条路径连接光源和摄像机,这个采样的过程实际上是对多个[0,1]的随机数的采样过程,这些[0,1]随机数构成一个高维的单位超立方体(unit-hypercube),这称为原采样空间(Primary sample space),所以如果直接对该空间采样,也能够得到一条路径。于是PSSMLT(Primary sample space Metropolis light Transport)算法转而对该原采样空间进行突变,这带来一些好处,例如状态转移是对称的,另外最重要的是因为使用重要性采样,原采样空间的被积函数为f/p接近为一个常数,这使得原采样空间的被积函数更平坦,采样的方差更低,考虑传统的MLT算法并没有使用重要性采样。

然而PSSMLT也是有缺点的,其中最重要的一点是它将“路径采样”当做一个黑盒子:它直观给你一些随机数,不管你使用什么方法给我一条路径就可以,例如可以使用路径追踪或者光子映射来产生一条突变路径,这种原采样空间和原始路径空间的隔离关系使得原采样空间并不会估计路径空间的特征,例如原采样空间给定一个10个[0,1]随机数,路径采样器用到第2个时发现路径以及偏离种子路径很远了,如下图所示,这种结果称为涟漪效应( ripple e ects),因为基于出射方向采样的路径追踪无法预测后续顶点的分布,某个顶点一个微小的突变可能导致后续路径发生较大的变换,从而使种子路径和突变路径差异太大而丧失相关性,进而接受率变低。由此,PSSMLT算法在将近10年间并无太大进展。

MLT算法被提出来后最重大的一个进展要数2014年Toshiya Hachisuka提出的MMLT算法(Multiplexed Metropolis Light Transport),表面上看,MMLT只是将重要性采样引入到原采样空间,例如下图左边包含三个原采样空间,每个原采样空间对应一种特定的采样技术,技术路径采样的长度,这使得可以实现这样的功能:当有些路径突变长时间无法被接受时,我们有可能通过改变采样技术太快速找到突破的路径。在下图中,路径除了在每个原采样空间内部执行突变,还可以在不同采样技术之间执行突变。

但从知识理论角度来讲,MMLT的重要意义在于它将统计中的模拟回火(simulated tempering)的思路引入到了MLT算法中,特定地,这里使用的思路主要来自序列回火(serial tempering),回火的思路源自于模拟退火(simulated annealing),模拟退火本来用于解决最优质问题,由于物体加温之后分子状态之间的转移更活跃,因此状态更易于在全局转移,而随着温度逐渐降低,状态之间的转移就逐渐减弱。所以为了求最优值,如下图中的最大值,我们首先将温度升高,然后让其慢慢冷却,在其过程中不断寻找最大值,随着温度降低,最终将停留在最大值处。

模拟回火则是借鉴了模拟退火的思路,实际上它们并无太大联系(除了名字),模拟回火就是将模拟退火中的温度看成一个离散的函数,不同的离散温度值对应着整个状态空间的一种划分,这样状态可以在每个子状态内部转移,也可以在不同状态(即温度)之间转移。在MMLT算法中,温度即是采样技术,不同的采样技术将原采样空间划分为多个子空间。

至此,MMLT算法中路径空间和原采样空间仍然是相对隔离的,虽然MMLT算法中可以在原采样控制路径使用的采样技术,但是仅限于此。也由于这种隔离,另一个问题来了,即采样技术之间的突变也可能导致涟漪效果,如下图所示,当由摄像机向光源方向的单向路径采样转变为由光源向摄像机方向的路径采样时,由于桌子的遮挡,其突变路径将产生非常大的差异,从而很难被接受。

于是,我们本文的主角出现了。在上述情况中,当采样技术发生改变时,虽然所有的[0,1]随机数并没有发生变化,但是由于使用了不同的采样技术,这些随机数被使用的方式也完全不同了,从而到时路径发生了很大的变化。因此,理想情况下,我们希望在改变采样技术时,能够保持路径不变。因此, Benedikt Bitterli于今年提出的RJMCMC(Reversible Jump Metropolis Light Transport using Inverse Mappings)使用一个反向映射方法,当从采样技术1向采样技术2转移时,它将状态1对应的原采样空间的路径在对应路径空间中的形式,通过一个反向映射转换到采样技术2对应的原采样空间,这个过程是决定性(deterministic)计算的,不含任何采样的结果,由于它们在各自的原采样空间虽然具有不同的值,但是在路径空间它们的值是相同的,因此在计算MLT算法中的接受率时,所有项被约掉,接受率变为1。由此,我们通过一个确定性的方法产生了一个不同状态之间的转移,并且它完全被接受,这种采样技术之间的转移太高效了。

而今年的另一篇论文, Jacopo Pantaleon的CMLT(Charted Metropolis Light Transport)几乎也与上述思路类似,但是强调更泛化的概念,即将原采样空间按某种标准划分成多个不同的子空间,然后在不同子空间之间进行转移,在转移的过程中使用反射映射来保持路径不变。

HISANARI OTSU的Fusing State Spaces for Markov Chain Monte Carlo Rendering在算法上稍微不同于上述两篇论文,但是其使用的核心概念,即由路径空间向原采样空间的反向映射是一致的。HISANARI OTSU的核心思路在于组合路径空间和原采样空间的优势,例如对于路径空间的Manifold Exploration,其由于探索路径的局部流形空间的特征,因此突变路径的采样效率很高,然而它却不能有效考虑路径的全局特征,例如该路径使用的采样技术的权重。因此HISANARI OTSU将当前路径的状态保存在原采样空间,这包括路径使用采样技术的权重,但是它并不直接对原采样空间执行突变,而是使用流形探索对路径执行突变,但是与流行探索直接使用突变路径不同,HISANARI OTSU将突变的结果通过反向映射转换会原采样空间,然后提取其权重值,使得可以按全局对路径的采样结果给予评估,同时兼顾局部和全局特征。

今年这几篇论文质量还是可以的,并且更是有Wojciech Jarosz,Wenzel Jakob, Carsten Dachsbacher, Anton S. Kaplanyan等这些保驾护航。

发表在 Global Illumination | 标签为 , , , | 留下评论

确定性的路径采样 – 微分流形在MLT算法中的运用

介绍一篇路径采样的论文,作者Wenzel Jakob是PBRT的作者之一,他2016年获得Eurographics Young Researcher Award多半是因为这篇论文,该奖项每年仅有2个名额,用于奖励过去在相关领域做出重大贡献的人(敬礼)。

Manifold Exploration: A Markov Chain Monte Carlo Technique for Rendering Scenes with Difficult Specular Transport,以及后续的相关论文:The Natural-Constraint Representation of the Path Space for Efficient Light Transport Simulation

先总结一下,这两篇论文的本质是将传统的完全随机的路径采样转变为使用微分几何确定性地计算出一条“相似”路径,这种思路在路径采样中算是一种小小的变革吧,表现在两个方面:

  1. 从路径采样方法来讲,传统的无论是基于MC的(BD)PT还是基于MCMC的MLT,PSSMLT或MMLT等,本质上每条路径的采样都是使用Ray Tracing的方式从每个顶点的BRDF函数中对方向进行随机地(randomly)采样并连接起来形成一个路径,而Manifold Exploration是确定性地(deterministic)计算出一条路径。
  2. 从光照积分公式方面看,它从欧几里得空间转变到了流形上进行研究。

传统的路径采样是完全随机的,这里的随机可以理解为采样器不会考虑任何关于场景的几何特征而“盲目的”在路径空间行走;因此,对于那些存在于很小的区域,但是被积函数的贡献值非常大的“困难”路径,往往会由于采样概率非常低而使其估计不精确;虽然MLT算法引入了路径之间的相关性,但是本质上它只是通过限制一条突变路径各个顶点的取值在欧几里得空间的某个范围内,其使用的路径采样(例如双向路径采样)仍然是盲目的,其效率仍然非常低;然而MLT算法提供了一种绝对的优势,即一旦找到一条重要路径,我们可以更小心地探索该路径附近也可能具有同样重要性的路径。

很显然,要想有效地探索这些困难路径,我们必须了解并利用路径的一些局部几何信息,这是前面流形探索以及本节半矢量空间光照传输的核心内容。然而,要想让路径采样器(这里的路径采样器是指传统的根据光线追踪的路径采样,它几乎也是目前我们介绍的以及离线渲染中使用的唯一的路径采样器)直接能够感知整个场景中的几何信息显然是不可能的,要知道,光线追踪依赖于首先随机选择一个方向,然后对该方向使用光线投射来寻找其与表面的交点并取得几何数据,而不是先根据某种场景的几何特征选择一个方向。

这种不可能事先知道场景几何特征的采样方法,使得我们转向另一种思路:即首先通过传统的路径追踪得到一条随机的合法路径,然后提取出该路径的几何特征,进而利用这些几何特征来寻找一条该路径离开附近的路径。这种思路依赖于一条已知路径,显然它不能成为一种独立的路径采样方法,然而它却正好可以用在MLT算法中,因为MLT算法寻找一条相对于当前路径的突变路径。然而需要注意的是,局部特征的表述的精确性往往被限定在很小的局部范围(如前面镜面流形表述所描述的那样),因此这些算法必须很好地保证全局遍历性的要求。

那么,应该怎样提取一条合法路径的局部几何信息呢,费马定理提供了答案。1657年,费马提出著名的最小时间原理,即自然界的行为永远以路程最短为原则。按照这个原理,光永远是选这样一条路走,以使它在最短时间内抵达目的地,这就是费马定理(Fermat principle)。费马定理描述了光照传输的特征,如果已知一条合法的光线路径,它当然满足费马原理,因此可以从中提取与光照交互有关表面的几何信息。

然而费马原理是全局的,它用于描述一条完全的路径,直接推导出这种全路径与多个表面交互的关系是非常困难的。幸运的是,局部的反射定律和折射定理与费马定理是完全等效的,局部的反射和折射定理提供了路径顶点及方向关于这些顶点局部几何信息(如位置,法线以及这些量的导数)的关系,从而我们能够从一条已知路径推导出该路径的局部几何信息。

然后,已知了一条路径的局部几何信息了,该如何利用它们来产生一条“相似”路径呢,这时牛顿方法提供了答案。我们已知的顶点局部信息是关于对应表面在该顶点处的位置和法线关于局部坐标系的导数,导数能够被运用于一阶泰勒近似中用来表述局部的函数分布,然而这种近似不能直接用来作为采样值,我们需要精确值,而牛顿方法正式利用一阶导数用迭代的方式逼近某个设定的真实函数值。

于是我们能够通过一条已知路径获得一条“相似”或“近邻”路径,这条路径在MLT算法中具有较高的接受率,因为它探索了路径的局部几何特征。更为重要的是,上述的采样过程是确定性的:给定一条当前路径,我们没有依赖任何随机过程,而是使用微分几何相关的知识直接计算出一条“相似”路径,这种由随机向确定性的转变,提升了MLT算法的效率。

这里提到两篇论文Manifold Exploration和Half Vector Light Transport正式使用了上述思路,它们都是借助费马定理将一条已知路径和其对应的局部几何信息建立起了联系,然后利用微分几何以及牛顿迭代法确定性地计算一条”相似“路径,只不过这里Manifold Exploration通过降维的方式将路径空间转变到镜面流形上,而Half Vector Light Transport将其转换到半矢量空间。

其实就是什么意思呢,如上视频所示,给定一条初始路径,它能够不需要任何随机过程直接计算出所有满足初始路径类似的几何配置,并自动满足每个顶点处反射折射定理的相邻相似路径,而这正是MLT算法非常需要的。

发表在 Ray Tracing | 标签为 , , , , | 留下评论

8. Metropolis Light Transport(已完成)

80页,一些名词:

MLT,PSSMLT,MMLT,MEMLT,HSLT,Simulated/serial/parallel tempering,replica exchange,AMCMCVCM/UPS,Adaptive MCMC,Manifold Exploration,deferential geometry,Reversible jump,reverse path sampling…

发表在 章节介绍 | 留下评论

7. Photon Mapping(已完成)

第7章总计100多页,一些关键词:

backward ray tracing, two-pass methods, Russian roulette, k-d tree, density estimate, kNN, photon map, caustics, SDS light path, reverse photon mapping, radius reduction, Progressive photon mapping, stochastic progressive photon mapping, probabilistic progressive photon mapping, adaptive bandwidth selection, photon tracing, MIS, vertex connection and merging, unified path sampling, participating media, volumetric photon mapping, radiative transfer equation, ray maps, photon beams, beam radiance estimate, unified points, beams and paths, Woodcock tracking, delta tracking, free-path sampling, transmittance estimate, ray marching, ratio tracking, residual tracking, null-collision, inverse method, rejection method, medium operation, control variates, higher-dimensional photon samples…

发表在 章节介绍 | 留下评论

UE4新书推荐:《大象无形:虚幻引擎程序设计浅析》

今天给大家推荐一本Unreal Engine 4的新书:《大象无形:虚幻引擎程序设计浅析》。

这本书主要是从编程的角度讨论虚幻引擎的使用,分为三个部分,其中第一部分讲用ue4的C++做游戏,第二部分讲ue4本身的一些核心机制(底层、反射、渲染系统、蓝图虚拟机)的源码实现,第三部分讲解插件开发和扩展虚幻引擎的一些方法。我们QQ群内的很多朋友都阅读过该书的样本,从我的角度,我觉得两位作者还是很用心的,没有去大段引述官方文档之类的,而是从自己理解的角度去系统地描述了虚幻引擎关于编程方面的基础知识及其关键点,是一本很好的基础读物,还是值得一阅的。

本书目前开始接受预定,预计5月可以发货,请感兴趣的朋友多多支持。

预定地址:http://product.china-pub.com/5591590

发表在 Book, Unreal Engine 4 | 留下评论

THEGIBOOK在摩点网发起众筹[已结束]

《全局光照技术:从离线到实时渲染》于2017年3月21日开始在摩点网发起众筹,在这次众筹期间读者可以购买前半本书(约400页)的纸质书稿,以及作者在准备期间总结的一本约300页的包含全书内容的英文草稿,参与众筹的每位读者将额外赠送新书折扣卷,它可以用于新书正式出版后早于任何渠道以7折购买成书。

本次众筹的目的是为了扩大试读范围,以使能够在写作阶段获取更多的反馈来帮助提高最终成书的质量。这次众筹参与者将能得到:

  • A. 列入本站专门的众筹感谢名单页面
  • B. 本书1-6章约400页的纸质书稿
  • C. 本书写作期间总结的关于书中所有全局光照技术的约300页的英文草稿书一本
  • D. 一张7折优惠券用于发布时早于任何渠道在本站以7折购书

多谢大家的支持!
众筹项目地址:http://t.cn/RiBogFq
众筹结束时间:2017年5月1日

发表在 Book | 留下评论

关于离线渲染有哪些资料可以推荐的?

这是回答知乎上的一个问题,贴在这里做个记录。

关于离线渲染最近最全面的Survey可能是Per H. Christensen和Wojciech Jarosz 2016年的:https://www.cs.dartmouth.edu/~wjarosz/publications/christensen16path.html

我针对其中的一些重要内容做点说明,同时考虑到这篇Survey是偏工业运用的,我再补充一点处于研究性质的一些热点新技术。由于这方面资料几乎都是论文为主,我说些相应概念和技术名称,可以对照阅读相关主题的论文。分两个部分:

首先,工业运用中的主流技术,这方面包括Pixar的RenderMan,Disney的Hyperion以及Weta的Manuka等渲染器,主流当然还是CPU渲染,几个比较突出的技术包括:

  • VCM/UPS:由于BPT的缺点是不能处理SDS(specular-diffuse-specular)路径,PM的缺点是处理diffuse表面不如BPT,2012年的VCM/UPS(Vertex connection merging/Unified path sampling)算法是一个很大的突破,它开始尝试将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的问题,所以Robust Light Transport Simulation via Metropolized Bidirectional Estimators这篇论文就基于VCM/UPS来使用MLT对light subpath进行采样,这样保证了两个subpath之间的连接更符合最终图像分布。这篇论文也就同时把BPT,PM和MLT三大基础算法组合在了一起! 不过目前MLT方法在工业中运用还不多。
  • 光线排序和连贯性:由于光线传输的随意性使得其并不能利用硬件的指令执行模型以及缓存系统,所以考虑光线的连贯性或者对光线进行排序是能够大大提升路径追踪效率的方法,这方面,基于连贯性(coherence)的路径追踪技术将这些数据分组成一些小的数据包,称为光线包(ray packet),这些数据包包含多个内存相邻的数据,并能能够被同一个指令执行。传统的基于光线包的技术主要是针对主要光线(Primary rays),即摄像机向场景发射出的光线,之后的光线可能向场景随处发射,并且对性能影响更大。2013年,迪斯尼的Christian Eisenacher等在一篇名为《sorted deferred shading for production path tracing》的论文中提出了一种改进方法,这种方法的核心思想是在实际计算之前对光线进行排序,这是Disney的In-house渲染器Hyperion的重要组成部分,这些技术最早用于《超能陆战队》当中。
  • 降噪技术:由于蒙特卡洛方法带来的方差,使得需要增加4倍的采样数量才能换来2倍的方差减少,所以每像素采样数是制约路径渲染器性能的重要因素。然而,光增加采样数量并不能有效的解决噪点问题,因为图像的噪点分部通常是不均匀的,所以我们非常渴望能够在方差更大的区域放置更多的采样,这样能够更有效的减少方差,从而在少量的spp条件下获得非常高的图像质量。降噪技术是目前工业当中非常重要的部分,《疯狂动物城》《海底总动员2》这些没有一部不是严重依赖于降噪技术。降噪技术的核心是适应性采样和适应性重建,这些技术将采样的过程分成过个迭代的过程,每次对采样结果进行误差分析,根据误差分布来得出一个采样分布图,用于在下一迭代中在方差更大的地方放置更多的采样。降噪技术主要有两大类方法:基于路径空间的方法,这类方法直接对路径采样的过程进行跟踪,比如使用频率域分析或者微分分析等,由于计算量比较大,工业中主要使用第二种基于图像空间的方法,这方面的核心人物是Fabrice Rousselle。

其次,处于研究中的一些热点技术:传统的蒙特卡洛方法中每个抽样之间是独立的,它并不能有效辨识这种频率变化特征,要想能够辨识图像的分布特征,我们需要了解每个路径的局部特征,即我们要考虑光线之间的相关性,这可以从多个层面改善路径追踪算法的效率。以下举几种热点技术:

  • 频率域分析:这类技术在光线追踪的过程中,还同时跟踪一条该光线(称为中心光线)对应的一个局部光照场(Local Light Field),这其实是一个像素范围内的空间-方法-时间(spatial-direction-temporal)分布,这个分布会随着光线的传输过程变化,例如表面的BRDF反射,直线传播,阴影遮挡等,如果能够跟踪这个分布的变化,就能够有效地分析图像的一些局部特征。这可以用来实现纹理过滤,适应性采样和适应性重建等很多有用的运用。频率域分析当前比较高效的实现是协方差追踪,它用一个椭圆形的高斯分布来进行这个局部光照场的分布,而这个椭圆形高斯分布可以用该局部光照场的协方差矩阵来表示,这方面的核心人物是Frédo Durand和Laurent Belcour等。
  • 流形/微分几何:流形探索技术的思路是利用费马原理能够非常有效地寻找光泽路径,它主要用于MLT中用于寻找镜面,光泽路径,但是它不能成为一种独立采样算法,因为流形探索依赖于一条已有路径;另外,流形探索在Weta还被用于在漫反射顶点处计算透过光泽的半透明体直达光源的“直接光源”计算,因此渲染焦散效果,层表面散射非常有效。这方面的核心人物是PBRT的作者之一Wenzel Jakob等。
  • 梯度域渲染:梯度域渲染技术也是与具体采样算法相对独立,可以是传统的PT,BPT或MLT,它通过在已有路径上计算梯度来提供图像的高频部分信息,最后通过泊松方程重建图像,传统的蒙特卡洛算法善于对低频部分进行采样,而筛选泊松方程的实质是梯度场充当了高频区域的采样,所以同样同等采样算法和采样数下渲染质量高得多。

以上只是些相对重要和热门的技术,当然不是全部,这些内容都会在THEGIBOOK 中探讨。

发表在 Survey | 标签为 , , , , , , | 留下评论

感谢Epic Games授权将《A Boy and His Kite》动画短片画面用作THEGIBOOK封面图片!

亲爱的读者朋友们:

我们很高兴地向您宣布:Epic Games已经正式授权将《A Boy and His Kite》动画短片中的画面用作《全局光照技术:从离线到实时渲染》的封面图片!

《A Boy and His Kite》是一部使用Unreal Engine 4制作的实时动画短片,它凭借Unreal Engine 4优秀的渲染技术获得SIGGRAPH 2015 最佳实时图形与交互奖项(BEST REAL-TIME GRAPHICS AND INTERACTIVITY AWARD),如果您还没有欣赏过这部短片,可以从这里获得更多相关信息。

本书选择这张图片作为封面有两个原因:其一是它反映当代优秀的实时图形渲染技术;其二,更主要的是我想透过这张图片传递一个寓意。这个短片展示了一个小男孩非常喜欢他的风筝,在大自然中自由地追随它,在一个无限的世界里畅游。与此相似,在这本书中除了知识以外,我也想传递一种对知识的追求精神,现在很多人看书存在很大功利心理,只求会用,不求理解,因为真正理解一种技术是需要花费很多时间成本,然而没有这种精神,本书就不会呈现出那么多丰富而细致的内容,我希望读者能够从文字中感受到这种精神:我们必须真正喜欢和热爱技术,然后才能真正享受它带来的乐趣;同时我也希望这本书像一片宽阔的草原,读者可以在上面尽情自由地学习,畅游,能够发现和得到足够多这些知识带来的乐趣。

以下是本书的一个封面草图,它不一定是最终版本,但是封面图片是确定的,您也可以帮助我们设计封面,如果您的设计最终被采纳,我将赠送一本签名成书,以及在封面加上您的创作署名,感兴趣的朋友欢迎和我联系。

除此之外,本书作为一本聚焦于全局光照算法的书籍,虽然不会重点围绕一个渲染引擎或者一个渲染引擎相关的特性来展开讨论,但是例如像Unreal Engine 4这样的渲染引擎所具有的大部分渲染特性都会出现在本书的各个部分中。特别地,本书在讨论相关内容时,几乎都是优先使用Unreal Engine 4来进行描述和演示,本书会覆盖Unreal Engine 4的绝大部分渲染相关的内容,希望能够帮助读者更好地掌握和使用Unreal Engine 4游戏引擎。

发表在 Book | 9条评论

聊聊最近几年的路径追踪技术的进展(一)

(注:本文是对《全局光照技术:从离线到实时渲染》一书中路径追踪技术相关内容的一些高度概括和总结,本文仅讨论概念和思路,详细的内容请参考原书相关章节内容,转载请注明源自:http://www.thegibook.com)

路径追踪技术(Path tracing,PT)已经是当下工业中离线渲染使用的主流技术,不管是商业渲染器如皮克斯的RenderMan,Solid Angle的Arnold等,还是迪士尼的in-house渲染器Hyperion以及Weta Digital的Manuka都是基于路径追踪技术。路径追踪算法非常简单,它首先将光照方程表述为面积积分的形式,然后一束光线从光源经过各个物体表面及内部多次交互(反射,折射,散射)后进入图像平面的贡献值(即辐射照度)被转换为这些表面交互点形成的路径的一个积分,其被积函数为这些表面的双向散射系数(BSDF),顶点之间的积分变量变化(change of variables)以及顶点之间可见性的乘积。在统计中,积分可以很简单地使用蒙特卡洛方法进行估计,因此光照传输的问题就转化为对场景进行路径采样,然后对每条路径的贡献值进行平均求和的蒙特卡洛积分计算。

尽管自基本的路径追踪算法被提出以来,各种增强改进的方法被整合进来,然而上述路径追踪技术的“基础架构”几乎没有多少实质性的变化。对于任何行业,工业中主流的技术一般不是当下最先进的技术,而是最成熟可工业化的方案,当前工业中的路径追踪技术优化主要集中在优化算法的执行效率,主要是针对处理器硬件架构进行优化,例如针对缓存系统的优化,增强数据局部性和指令局部性,以及改进光线连贯性(ray coherence)使其能够利用SIMD指令进行高效计算等,这方面比较突出的是迪士尼的Hyperion渲染器,一些渲染器的优化更是几乎能达到某些场景复杂度范围内实时渲染,例如Embree。

然而以上这些内容却不是本文关注的重点(上述内容会在thegibook中详细讨论),本文我们要讨论的是一些路径追踪算法基础架构层面的改进,这些算法还很少出现在当前工业解决方案中,但是确实未来的重要发展趋势。

传统的路径追踪算法是一个单纯的积分问题,因此可以使用蒙特卡洛方法来估计,然而蒙特卡洛方法的每个抽样是独立的,因此很难有效快速对一些比较困难的路径进行采样,一些很难被采样的路径需要巨量的采样数才能达到“令人满意”的结果,这导致非常缓慢的收敛速度。尽管开始的收敛速度非常快(4倍采样数量可以减少1/2的误差),但是越到后面会花费更多倍的时间。传统的方差缩减技术如重要性采样,分层采样,拟蒙特卡洛方法(Quasi-Monte Carlo)仍然不能改变这个收敛速度。

要提升蒙特卡洛估计的收敛速度,直观上,我们需要能够辨识每个图像的分布特征,然后在一些高频变化区域增加采样的密度。然而,传统的蒙特卡洛方法中每个抽样之间是独立的,它并不能有效辨识这种频率变化特征,尽管梅特波利斯光照传输(Metropolis light transport,MLT)通过采样点之间的相关性能够寻找一些困难路径,本质上它仍然并不善于处理和分析频率域特征。要想能够辨识图像的分布特征,我们需要了解每个路径的局部特征,即是我们需要对路径追踪算法引入微分运算。路径的微分涉及路径与附近局部范围内光线的差值,即图像的局部特征,因此它引入了光线之间的相关性,可以从多个层面改善路径追踪算法的效率(也正是如此,我们认为这是近几年路径追踪技术领域的重大进展)。

最近几年路径追踪领域的一些重大进展正是微分几何(differential geometry)的引入,由于微分反应的是流形(manifold)的局部变化,因此非常善于寻找图像分布中的高频部分,目前路径追踪算法中的微分运用主要包括:以通过计算纹理过滤函数实现反走样的光线/路径微分(ray/path differential)和协方差追踪技术(covariance tracing);以通过计算梯度图像用于利用筛选泊松方程(Screened Poisson equation)重建目标图像的梯度域渲染(gradient-domain rendering);以及通过将微分几何结合费马定理(Fermat principle)用来寻找镜面/光泽路径的流形探索(manifold exploration),半矢量空间光照传输(half vector space light transport)等技术;此外,微分还被用于适配性采样(adaptive sampling),成为重要的降噪技术(Denoising)。

以下我们就来从概念和思路上分析上述这些技术,当然我们可以提前知道的这些技术的一个重要共同点就是:这些微分计算通常不需要通过光线追踪引入新的采样点,否则那样的计算成本就很高,这些技术通常都是利用微分几何和某些假设进行单纯的微分计算,这里主要的工具是一阶泰勒展开式(first-order Taylor approximation)和顶点处的切线平面空间(tangent space),因此,这些新技术通常都可以很容易地集成于目前主流的路径追踪技术基础架构之上,更详细的内容请参考thegibook中相关章节。

接下来我们讨论的每一种微分的运用都涉及一个相对比较独立的层面,在阅读这些内容的时候,你首先需要非常清晰的了解的是它用来解决什么问题,因此我会在每一节的开头提出这个问题,然后读者可以围绕这个问题来阅读每一小节,即每一种技术。

光照传输的局部频率域分析

微分反应的是图像的局部特征,因此其在图像渲染中最直观的运用就是用于反走样(anti-aliasing)。光线追踪算法中由于采用不足导致的走样问题可以分为两大类:对路径空间(path space)的采样不足和对纹理空间(texture space)的采样不足,本质上这都是由于路径采样的不足导致的,但是它们通常使用不同的方法来解决。一个像素区域内的光线从屏幕空间发射出去之后,随着光线在表面的各种交互这个面积可能会无限扩散,所以单纯增加路径采样的数量可能也很难弥补纹理走样(texture aliasing)的问题。所以它们分别对应路径追踪算法中两个比较独立的反走样技术:路径空间采样不足主要对应于降噪技术,纹理空间采样不足对应于纹理过滤技术。

目前降噪技术主要的思路是针对图像的分布特征进行适配性采样以及适配性重建,前者对应于在图像的高频区域放置更高的路径采样密度;后者对应于根据图像特征对不同的区域使用不同的重建过滤器(reconstruction filter)。对路径进行适配性采样的方法可以分为两类:第一种直接对光照传输方程进行分析,称为先验方法(a priori method);而第二种只对屏幕空间的图像进行分析,称为后验方法(a posteriori method)即是说与路径采样的方法无关。

光照传输的局部频率域分析可以用于纹理过滤以及作为降噪技术中的先验方法。以下我们讨论局部频率域分析的方法和思路。

路径的局部频率域分析虽然不是源自光线微分(ray differential)技术,但是跟它有很大的联系。光线微分技术的核心思路是随着光线的传播跟踪该光线对应的频率区域一个像素的大小,这称为光线的足迹(footprint),如下图所示,在路径追踪算法中追踪每条路径的时候,同时沿屏幕空间x和y方向分别发射一条一个像素大小的偏移路径,然后对每条基础路径同时跟踪两条偏移路径。路径在每个顶点处的足迹大小则可以通过积分计算出来。当然光线微分技术并没有完全利用微分几何的知识,因为它假设偏移路径和基础路径在每个路径顶点处位于同于平面-即该顶点的正切平面(tangent space)上,所以光线微分的计算大大简化了。

由于假设偏移路径和基础路径和表面的交点位于同一平面,上述光线微分技术仅适用于镜面表面(specular surface),路径微分(path differential)在此基础上将光线微分扩展到了光泽面(glossy surface)和漫反射表面(diffuse surface),它虽然有比较理论的推导,但是实践上主要使用经验方法,即根据表面的粗糙度用来缩放足迹的大小以支持光泽面和漫反射表面。

上述的光线/路径微分技术实际上是光线的一种局部特征,传统的路径追踪算法中每条光线之间的独立的,所以不能够分辨这种局部特征。然而上述方法还是有很多缺点,例如光线经过多次传播之后可能形状非常不规则,而两条偏移路径计算的四边形无法表达这种形状;其次偏移路径可能被阻挡,而光线/路径微分是忽略这种阻挡的;为了更好的追踪光线的局部特征,我们需要更完整的对光线的传输过程进行分析。

目前对光线进行局部分析的方法的思路主要是将光线的局部特征表示为一个空间-方向分布(spatial-angular distribution)的局部光照场(local light field),如下图所示,黄色的中心光线表示基础光线,周围的一些具有不同位置和方法分布的光线是一些虚拟光线,它们共同构成一个局部的空间-方向分布。例如对于摄像机光线,它的局部光照场的分布就是一个像素范围大小的一个过滤器,该过滤器对于每个不同方向和位置处的光线都具有一个不同的权重值,这个过滤器就反映了摄像机路径的局部特征;对于光源路径,如果是面积光,则局部光照场的方向为固定值,而位置分布于面积光源的各个位置。

有了局部光照场的描述,剩下的事情就是计算该光照场随着中心光线的传输。早期的思路是将光线在传输过程中的各种交互过程看做一个操作函数,例如光线的直线传输(transfer),反射,折射,阴影遮挡等,如下图所示,然后在局部光照场函数的频率空间进行交互,这样就可以跟踪局部光照场随中心光线的传播过程。

上述的傅里叶分析过程计算成本相对较高,为了简化局部光照场的传输,协方差追踪(covariance tracing)技术考虑可以将一个4D的空间-方向分布近似为一个椭圆形高斯分布(elliptical Gaussian filter),如下图所示,然后该分布可以使用该4D光照场的协方差来表示,所以局部光照场可以用其协方差矩阵(covariance matrix)来表示。然后这些对局部光照场的传播操作数就转变为矩阵操作,最后在计算足迹的时候再从协方差计算出该4D局部光照场的尺寸,这就可以用来替代上述的光线/路径微分技术用来实现纹理过滤。

协方差追踪不仅用于纹理过滤中计算局部光照场足迹的大小,还被用于适配性采样,如果我们从光源路径方向追踪光源的空间-方向分布至屏幕空间,则我们可以在屏幕空间分析图像的频率分布,进而可以用于适配性采样,如下图所示。下图的局部光照场是一个5D空间,它还包含了时间维度,因此可以用于计算运动模糊(motion blur)效果,在该图中,首先从光源发出光线经过一次表面交互(即直接光)之后投射一个椭圆形分布到屏幕空间,然后根据这些分布就可以计算出图像的频率分布,这些分布特征被用于适配性采样。

除了协方差追踪,光照传输的局部频率域分析还包括其他一些方法,但是目前协方差追踪是更简单和高效的一种技术。当然协方差追踪的限制是它将局部光照场近似为一个椭圆形的分布,实际的局部光照场分布特征可能还需要更负责的形状表述,这也是未来的优化方向。

下一篇我们将讨论梯度域渲染和流形探索或者半矢量空间光照传输。

发表在 Global Illumination, Ray Tracing, Survey | 标签为 , , , , , , | 留下评论