这周末,我参与录制了罗登导演(知乎: @Nordenbox)主持的《硬影像》播客节目,《硬影像》由 IPN 出品,由罗登主持,是一个关注影像之一切的播客。谈论影像背后的技术,历史和哲理。我们用比较通俗的方式讨论了渲染相关的许多话题和内容,大家可以访问以下链接进行收听。
另外,由于实际说话的时候可能由于紧张,口误等原因,口述的内容可能没有文字的构句那么严谨,这里我也提供一个整理的文字版本,其中大部分内容是跟谈话内容相关的,但是注意这里不是访谈的文字版本,而是重新的描述。此外,这里可能并没有包含访谈的全部内容,而文字版本也可能稍微加了一点其它的内容。
什么是渲染?
渲染主要是指将一个用数字的方式描述的场景,转化为一副可视数字图像的过程。生成一副数字图像包括许多程序和步骤,例如物体的建模,场景的设置,游戏和影视中还包括物理模拟,动画控制,AI等等,其中渲染处于整个流程的最后一步,当前面所有流程结束之后,我们得到一个静态的场景描述,例如每个物体的3D位置,模型数据,贴图,摄像机位置和角度,光源设置等,然后渲染器执行渲染的过程将其生成一副2D的由像素组成的数字图像。由此也可以看出,渲染的流程相对比较独立于其它数字内容的制作流程,我们甚至可以很容易地针对不同(例如时间)需求对同样的场景使用或切换不同的渲染算法或渲染器。
形象的说就是,当每一时刻演员的动作完成之后,并且摄影师的镜头位置和方向确定后,摄像机要得到当前时刻整个可视场景的图像信息的过程。这个过程其实就是光照从光源发出,经过与场景的各个物体的反射或折射之后进入摄像机的传输过程,在术语上,渲染和光照传输其实就是等同的概念。当然这个例子有一点区别就是摄影的过程其实不是一个特定“时刻”而是一小段时间内接收光子的过程,也就是曝光时间,所以真实摄像机可以通过调节曝光时间来捕捉一些运动特征,如运动模糊(motion blur),然后数字摄像机则只能针对特定时刻进行计算,所以对于这种运动特征通常需要特别的方式来处理,例如在实时渲染中通过跟踪一个运动矢量(motion vector)来计算运动模糊效果,当然在离线渲染中我可以将光照传输函数加入进一个时间的维度,使得每个路径样本同时包含对时间的采样,来实现对所谓曝光时间参数的模拟。
渲染中最重要的技术要点是什么?
要回答这个问题,我们需要首先了解渲染器是怎样解决或者说计算上述的光照传输过程,传统解决光照传输最经典的方法是光线追踪,理解了光线追踪的思路,我们就可以很自然地看到光照传输的困难,进而明白渲染中最主要的一些技术要点。
首先什么是光线追踪?
为了在数字计算机中模拟光照传输,我们需要从光学中了解光的一些特征。我们看到的物体表面上每一个点的颜色,是来自于这个点所在的平面上空整个半球180度范围所有方向的光照的结果,因此当我们需要计算最终图像上特定一个像素的颜色时,它的过程类似这样:首先从摄像机沿这个像素的方向发射一条光线,然后光线会在半球空间发散成无数的光线,这些每条光线在空气中沿直线传播,直到遇到另一个物体时发生上述相似的发散过程,最后直到光线击中一个发光体而终止。同样的光照传输过程也可以反过来从光源向摄像机方向进行描述。
这个过程就称为光线追踪,其中每个由光源到摄像机(或者由摄像机到光源)的过程中所有直线的光线段连接起来就构成一条路径。因此为了模拟光照传输,显然每一个静态帧都需要产生大量的光线,这些光线的数量理论上是无穷的,实践中复杂的场景起码都是亿级别的。
那么实际上在程序算法上怎样解决这个问题呢?
在数学上,上述的光线追踪过程实际上是个高维积分,很难求解,一般使用的是称为蒙特卡洛(Monte Carlo method)的近似方法,该方法就是针对一定的概率密度函数每次产生一个随机的路径,这称为路径采样,然后计算这条路径的光照贡献值,最后把所有路径平均起来就得到每个像素的颜色值。这样的方法也称为路径追踪(Path tracing)。光线追踪算法的困难点其实有很多,例如焦散效果,体积渲染,间接漫反射光照等,以下挑选几个比较显著的。
首先是噪点比较严重
由于这些路径是随机产生的,因此有些路径产生的几率非常小,这就会导致比较大的噪点,所谓噪点就是由于这种随机性使得某些区域在早期得到更多的样本而使得这些区域内的颜色值过大,表现为那种比较白的亮点。在数学中,大数定律是能够保证在无穷的样本数量下,这些噪点最终是可以被完全消除的,但是这样的计算量和计算时间也是非常昂贵的;改善采样方法是可以减少噪点,所以当前离线渲染很多努力都是在开发一些更有效的采样方法,例如双向路径追踪,梅特波利斯算法,光子映射等。

光线追踪算法对处理器架构不友好
现代处理器使用的是一种多级缓存的架构,这些缓存的分级是根据访问速度来划分的,越快的缓存成本越昂贵,所以其容量非比较小,例如在一般的架构中,最靠近处理器的一级缓存,它的读取速度大约为1-3个时钟周期,但是其大小只有如32KB;二级缓存可以达到2MB,但是其读取速度却需要30个时钟周期,然后主存可以达到8GB,其读取速度为220多个时钟周期。这就好比说你在书桌上处理一件事情,你可能需要查询一些数据,让后你会在书桌上放一本或几本相关图书,需要的时候随时比较快的翻阅,但是可能有时候这几本书的内容是不够的,所以你需要起身到书房内的书架上查找另一些书籍,这就需要更多的时间,因为你需要起身行走的时间;然后如果你家里没有,你不得不去图书馆查询,这就需要更多时间;这里的书桌,书架和图书馆就好比一二三级缓存结构,书桌旁的书获取很快,但是只能放几本书,而图书馆的容量很大,但是需要花很多时间获取。而且除了容量,你每次携带的图书数量也是有限的,这称为带宽(bandwidth),也就是你每个时间只能携带多少数据。
因此,鉴于这种情况,理想的算法是,你的每个处理只涉及到同一本书,直到处理完同一本书才会需要其它书,也就是对书的需求不会出现交叉的情况。而缓存的情况也会自动获取相邻的内容数据,你在使用一级缓存的时候,二级缓存就会自动把这些数据附近的数据读取进来,这称为预取(pre-fetching)技术,如果你的数据访问是连续的,那么理论上你不需要更多时间等待。
然而在光线追踪中,光线在场景中随机穿行,因此对场景数据的访问完全是随机的,比如每次从内存中读取进来一个模型数据,可能只做一条光线的访问就没用了,然后下一条光线有需要访问另外的数据,这样整个场景的数据的大部分时间都停留在“运输”上,处理器大量时间处于等待状态。因此迪士尼自家渲染器Hyperion的最大特点就是对光线在执行相交计算之前按方向进行排序,这样使得每一束光线尽可能与相邻的物体相交,这些一次读取进缓存的数据可以被充分利用,减少运输成本。
什么是全局光照?
其实这是一个更主要是针对实时渲染的名词,由于离线的光线追踪算法的成本很高,所以实时渲染通常不计算完整的路径,而是只直接计算所谓的直接光照(direct lighting),即光线从光源出发,经过与场景中表面的一次交互之后,然后就进入摄像机,即是只计算摄像机直接能够看到的那些表面的光照,这样的直接光照能够被GPU的光栅化技术快速处理,实际上现代图形处理器最早就是为了加速对直接光照的处理而诞生,光栅化主要是对全部物体遍历一次,然后对每个点执行一次光照计算,其实也就是循环所有光源,看这个点能不能被光照照射,即有没有被其它物体遮挡,有照射则直接计算反射光照,没有就忽略。这样的直接光照又称为局部光照(local Illumination)。早期的游戏都是只有直接光照的,然而这样的光照结果显然不能满足要求,所以才引出全局光照(Global Illumination)这个名词,简称GI,由于多次反弹的光照计算成本很高,因此GI的实现很复杂,通常都是使用一些近似技术,我们后面再讨论。而对于离线渲染,它本身主要都是考虑完整路径的光照的,所以离线渲染中的光照传输其实天生就是全局光照。当然,早期的离线渲染器由于当期处理器的限制,其实算法跟现在的实时渲染差不多,所以在早期的离线渲染器中也有这样的区分。
什么是RenderMan RIS?
这是一个完全基于路径追踪的新版本,以取代基于Reyes的旧版本,Reyes是一种非常古老的近似方法,它还要起源于1987年Robert Cook提出的Reyes算法,它使用类似现代实时渲染的一些方法进行渲染,它不是基于物理的渲染,并且流程比较复杂,比如不同的效果需要使用不同的shader来实现,美术需要控制很多渲染相关的参数,修改起来非常麻烦,渲染器的修改往往需要美术人员学习新的技术。但是Reyes的架构还是非常稳健,高效的,所以直到去年的《魔兽世界》都还是使用基于Reyes的RenderMan版本。
也正是由于Reyes的稳健和高效,使Pixar放慢了对基于物理的更真实和高质量的路径追踪算法的开发和使用。基于路径追踪的渲染算法最早在1998年已经被蓝天工作室(Blue Sky Studios)使用于制作了短片《Bunny》,好像内地时光网上翻译为《棕兔夫人》,然后于2006年被用于制作第一步动画长片《怪兽屋》(Monster House),渲染器是Arnold。
使用RIS的流程则会更加简单,可以更集中于内容创作,编辑期的预览反馈更真实和实时。Pixar自家的《Finding Dory》及其后续Pixar自家电影都使用RIS,第三方电影更慢一些,例如《Tomorrowland》,《Doctor Strange》等都是基于Reyes的版本,《Warcraft》是工业光魔最后一部使用Reyes渲染的电影,《Rogue One》则是第一部工业光魔开始使用RIS版本的电影。RenderMan RIS比迪士尼自家的Hyperion都还晚,Hyperion的第一部电影是2014年的《超能陆战队》。
这是不是意味着RenderMan已经落于后于其它较早拥抱路径追踪的商业渲染器了?
这个问题当然不能简单地以拥抱路径追踪算法的早晚来定论,这是外行人的观点。我们以下从两个方面来说明,一个是RenderMan的技术架构,当然后面我们还会举例一些技术进行分析,其二是Pixar的技术团队的实力。
RenderMan RIS的技术架构
首先一句话描述,RenderMan RIS使用的几乎是目前世界上基于路径追踪渲染算法的最好的渲染器架构。路径追踪算法只是一种基本思路,实际每个渲染器的实现差异是非常大的,涉及的内容也非常多,很多渲染器都会针对自己已有的一些制作经验和流程对其中的某些部分进行特别优化,例如很多渲染器会将一些并行性比较高的计算转移到GPU去执行,或者对某些效果进行特别处理,例如将头发,布料,体积渲染,次表面散射等交给特别的渲染通道去执行,这些渲染通道可以使用一些(可能不是完全基于路径追踪的)近似方法。
上述这些改进和优化表面上看起来提高了渲染器的效率,然而却损害了路径追踪算法的整体架构,因为很多发表的论文都是针对一个特定的方面,而且大多都是在某种程度上的近似,这些方法跟路径追踪的思路反而是相悖的,因为路径追踪算法其实是一种很暴力(brute force)的方法,它保证最高的质量,但是却抵制近似,因此如果一个渲染器要加入某种近似,一定是需要对渲染器相应的方面进行特殊处理或对路径采样方法做出一些限制,例如Hyperion的光线排序虽然很厉害,但是它基本上只适用于单向路径追踪算法,而不能使用更高效的双向路径追踪算法以及其它更高级的如梅特波利斯算法,光子映射等,当然它们总是可以对渲染器进行修改以适应新的算法,但问题是这种改动量往往是非常大的,每次添加一个新功能都需要修改很多地方,甚至对美术制作流程做出影响。
RenderMan是怎样处理这个问题的呢?RenderMan更重视渲染器的底层系统架构,而将渲染器性能的优先级置于系统架构之后,RenderMan会很谨慎地随便加入一些上层局部的优化,它基本上只会考虑哪些最基础级别的重大的算法改进。它最初基于PBRT渲染器建立而来,PBRT是众所周知的非常好的路径追踪算法基本架构,拥有非常优秀和灵活的架构,它已经有十几年的历史,并且获得过2014年的奥斯卡科学与技术成就奖。RenderMan一直保持着这个基础架构,不会轻易加入影响这个架构的一些局部优化的内容,但是它在基础级别加入了最近几年比较重大的一些基础级别的新技术,例如VCM,UPBP(后面讨论)等,正是由于RenderMan维持比较稳固的基础架构,它才能以最小的改动成本加入这种基础级别的改进,反过来这种基础级别的算法改进对渲染器整体提升是非常重大的,而其它渲染器由于在上层做太多优化,使得要兼容新的基础算法不太容易,这不仅改动较大,可能影响整个美术制作流程,因此渲染器的发展反而会受到限制。
另一个方面是为什么RenderMan一直保持只使用CPU渲染,表面上看起来GPU能高效地做很多事情,但是其实路径追踪算法天然是对CPU更友好的,所谓的GPU渲染不过是需要花很多时间将渲染算法中可以并行的部分提取出来交给GPU处理的,但是这种提取工作非常繁琐,而且一旦基础算法改动,这些工作都要重来。当然RenderMan准备在22版本之后加入CPU+GPU的混合模式,称为XPU,这是因为现阶段基础算法发展已经比较完善了,这个时机开始做GPU的提取比较合
RenderMan的“技术团队”实力
放眼当今世界,在视效与动画领域,没有任何一家公司的研究实力能够超过迪士尼,迪士尼总共有5个比较主要的研究中心:皮克斯,工业光魔(ILM),迪士尼(瑞士)苏黎世(Zurich)研究中心,迪士尼动画以及卡耐基梅隆大学实验室。这五大研究中心的成果都是共享的,并且为了提高研究质量,这五个中心的研究工作甚至会交叉形成竞争,最后优胜出的技术被采用,而所有这些成果都是通过皮克斯的RenderMan这个出口进入到工业当中。所以可以看到几乎Hyperion具有的先进技术,都同时也被运用到RenderMan当中,例如发丝,布料,次表面散射,体积渲染等,同时由于前面说过RenderMan具有更稳健的基础架构,所以它甚至比Hyperion更容易采用最新具有重大意义的基础架构级别的成果,例如VCM技术,基于光束采样的UPBP体积渲染技术(后面会讨论)。
适应性采样
适应性采样在RenderMan中大量使用,例如一个1920 x 911 分辨率的静态帧有174 9210个像素,每个像素会发射上千条路径,传统的做法是对每个像素都发射固定数量的路径,然而根据图像的颜色分布不同,有些区域颜色变化比较小,因此随机路径出现的误差较小,这些区域可以使用更少的路径即可达到很好的效果,而另一些区域如物体的边缘或阴影边界,这些区域颜色变化比较大,随机数更容易产生更大的误差,因此可以对这些像素区域放置更多的路径样本,这种技术称为适应性采样(adaptive sampling),它能够根据图像分布自适应地调整每个区域路径样本的数量。
这样的适应性采样同样适用于巨量点光源场景中的光源选择,例如《寻梦环游记》电影当中的死亡之地(land of the dead)整个场景具有826 5557个点光源,也就是对于每条路径都需要遍历这800多万个光源,显然计算量非常高,如果我们在对光源的采样迭代过程中不断根据前面样本的误差分布对每个区域的采样分布进行适应性调整,即可以以比较少的光源样本选择达到比较好的光照结果。
降噪处理
对于路径追踪算法,当路径样本数量较少时,始终会有噪点,更多的路径样本数量可以减少噪点,增强图像的质量,但是这会花费更多的渲染时间,理论上需要无限的样本数量才能完全消除噪点。为了节省渲染时间,降噪技术(denoising)被引入渲染器中用于对使用较少路径样本渲染的图像结果进行降噪处理。降噪处理的思路类似而对图片进行滤镜处理,使图片变得更加平滑,但是离线渲染中的降噪还是要复杂得多,它使用的平滑的依据是局部区域内样本误差的大小,并根据误差分布来决定平滑的范围,其它一些像素信息如深度,法线等也被引入降噪技术以帮助更好地降噪。
降噪是近几年离线渲染领域的热点,也是光线追踪算法向实时渲染转换的关键技术之一,因为实时的光线追踪会使用更少的路径样本。
毛发渲染
毛发渲染是迪士尼和皮克斯的关键技术之一,2003年Marschner提出了渲染毛发的著名的Marschner模型,该模型将一根毛发描述为一个圆柱形的并在圆面上具有一定鳞片结构的线状结构,并描述了光在毛发内部的传播行为,遵循Marschner模型的毛发渲染能够呈现出比较真实的毛发效果,皮克斯在此基础上进一步发现使用椭圆形而不是圆截面的毛发丝更接近物理真实,因此提出改进的皮克斯Marschner毛发模型。
在Marschner模型中,一根毛发可以使用一个纹理当中的一条线段表述,该纹理被贴到一个曲面网格上,网格可以接受物理影响而使发丝跟随移动,而纹理上的每个线段只提供毛发的位置,它的尺寸和实际光照均由Marschner模型进行计算,该模型根据一个观察方向和入射光计算出毛发的真实光照颜色。
在很多渲染器中,毛发,次表面散射,布料等特殊效果都是使用独立于其它表面渲染的一个通道,也即是说在渲染完所有表面之后再对这些特殊效果使用单独的渲染流程进行特殊处理,这往往会使制作流程变得更加复杂,渲染算法架构也会更加复杂,而RenderMan现在可以将所有这些特殊效果融入到表面的着色计算当中,也就是说场景中所有渲染计算都是使用一个统一的路径追踪通道完成,这大大简化了制作流程,这也是得益于前面介绍的比较稳固的渲染架构。例如在渐进式的交互式阅览中,这些特殊效果能够跟其它表面渲染同步展现,而不需要等表面渲染完毕才开始渲染这些特殊效果,这大大节省了设计时间及提高了效率,在设计阶段预览的技术也称为live rendering。
体积渲染
体积渲染是RenderMan的另一个重要技术,所谓体积(Volume)是相对于表面(surface)的一个概念,比如在表面上光照只在每个表面位置处发射反射或折射,而在体积中,例如烟雾,云等环绕的环境中,由于空气中不再是真空,而是到处都充满着粒子,所以光在这样的环境传播时,会与分布于整个空间中的粒子发射碰撞而发射散射,因此体积中每个位置都需要计算光照交互,我们也称体积为参与介质(participate media),因为整个体积都是参与光照交互。
这样的计算量显然是非常大的,传统的方法就是对于一束穿过一个体积的光束,在该光束上执行光线步进(ray marching)算法,也就是随机选择该光束上的一些点执行光照计算,然后将所有采样点的光照累加起来,这样的技术也称为基于点采样(point sampling)的技术。
然而由于点采样满足不了体积内处处发生交互的这样一种连续的交互方式,所以渲染效果比较差,计算时需要使用大量密集的点采样,才能使光照效果看起来比较真实。于是,迪士尼苏黎世研究中心的Wojciech Jarosz(目前已经离开迪士尼任英国达特茅斯(Dartmouth)大学的助理教授)提出了具有革新意义的基于光束采样(beam sampling)的体积渲染技术,该技术使用一种特殊的方式直接计算体积中的一条光束(而不是一系列点)的光照,不仅大大提升了计算效率,而且提高了渲染质量,是离线渲染领域体积渲染的重要里程碑。
什么是实时渲染,它与离线渲染有哪些差别?
实时渲染是对渲染加了一个时间限制,即要求整个光照传输的过程在比如1/60秒之内完成,而在实时图像程序中,整个运行时的计算还要处理其它如动画,AI等其它工作,实际上留给渲染的时间更是只有几百毫秒。所以显然目前实时渲染不能使用上述离线渲染的光照传输方法,因为上述方法需要数分钟甚至数小时的时间来处理一帧的图像。
实时渲染算法与离线渲染算法的差异较大,主要表现为实时渲染通常将光照传输的过程分成两个方面,即直接光照和间接光照,直接光照是指光子从光源发射出后只与表面进行一次反弹即进入摄像机,而间接光照就是在所有需要经历2次及以上反弹的光照,后者又称为全局光照。
怎样计算直接光照,或者说渲染管线的基本流程
直接光照的处理通常是借用现代专用图形处理器(GPU)的光栅化流程来处理的,图形处理器的渲染管线循环遍历场景中的每个物体的每个顶点一次,并使用光栅化程序对这些顶点进行插值以计算表面上每个像素位置处的颜色,在计算每个像素的颜色时,我们直接计算来自光源的光照,即循环所有场景中的光源看是否每个光源对该像素形成光照,其可见性或者是否被遮挡由一个阴影贴图来判定,阴影贴图中存储的是每个光源所能看到的表面像素位置,它是通过向摄像机置于光源位置处,然后渲染一个全场景的图,并记录那些所有直接可见的表面像素位置。最后,像素之间的远近关系通过一个深度缓存来判断,深度缓存记录了当前已处理的图像上每个像素位置的深度值,在遍历后面的像素表面时,它将当前位置与深度缓存中已有的位置的深度值进行比较,如果当前位置更靠近摄像机,则丢掉深度缓存中之前存储的像素并用当前像素代替,同时存储当前像素的深度值至深度缓存中供后面比较使用。上述的流程是高度并行化的,得益于现代图形处理器的并行架构特征,所以能够被高效计算。
怎样计算间接光照,或者说常用的实时全局光照技术
间接光照的计算复杂度要远远高于直接光照,当前几乎没有任何方法能够实时完整的计算全部光照传输过程,所有方法都是基于一定的假设作出的一些近似处理。例如漫反射光照是与观察方向无关的,所以对于静态物体,其漫反射光照可以被预计算出来并存储在一个贴图中,然后在实时运行时就只有一个贴图操作而不需要执行光照计算;例如对于来自较远的环境的间接光照(如来自天空的光照),由于表面的位置相对于表面与这些环境的距离可以忽略不计,所以整个环境光只与方向相关,从而可以将整个环境的间接光照保存在一个环境贴图,在渲染的时候只需要计算出入射方向就可以从环境贴图中查询到一个光照值进行计算;对于动态物体,如人物角色,它的间接光照看起来无法预存,但是考虑到间接光照的变化频率是非常小的,所以我们可以在角色会经过的空间范围内存储一些比较稀疏的光照分布,类似于将间接光转换为一些“点”光源,然后当角色经过时可以使用附近的这些光源进行插值计算;几乎所有现代大型高质量游戏的渲染都涉及到很多这样的预处理计算。当然在实时渲染中还有很多对不同方面的一些近似方法。
现在实时渲染看起来非常逼真,那这样的实时渲染画质与离线渲染的差异到底在哪里?
上述的描述看起来实时渲染跟离线渲染的差异还是很大的,那为什么现代很多游戏的画质看起来感觉跟影视的画质差不多呢?其实我们之所以有这样的疑问,是因为我们的眼睛根本无法分辨精确的颜色,研究人眼识别周围环境光照的学科称为视觉感知(visual perception),所谓感知并不是一种精确度量,我们无法拥有对两个图像的真实差异进行分辨的能力,我们能分辨的误差具有一定的范围,例如人眼对于物体的边缘形状感知是非常明显的,如果没有阴影就没有立体的感觉,消除边缘部分的锯齿等措施就可以使眼睛的不适大大减小;例如对于任意一张图片,我们无法分辨这张图片中2%以下的误差,因此我们就可以忽略对这部分误差范围内计算。这些因素加上上述的一些高质量的预处理计算,所以我们会觉得一些实时渲染游戏作品的画质很高。
实时渲染有哪些应用场景?
现在人们开始越来越把目光投向实时渲染,例如很多动画短片都大量采用实时渲染来进行计算。另外,例如VR等应用场景对任意视角的渲染要求,也使得实时渲染的需求大大提升,可以预计实时渲染技术会对于很多需要对数字可视化的场景,例如医学成像,物理定律的可视化模拟,化学微观结构的可视化演示,军事化的模拟训练等等发挥较大的作用。
但是,目前实时渲染的结果只是对人眼是“正确的”,并不是对计算机是正确的,所以那些需要得到精密渲染结果而不是仅仅用于人眼观察的场景是不应该使用实时渲染技术的。
另外,在离线和实时的时间要求之间,还有一个交互式(interactive)的时间要求,例如很多3D软件中的需求,也就是在某种程序的编辑阶段,而不是最终的运行时阶段,我们可能不需要完全实时的程序,但是需要在几秒或者很短的时间内得到编辑结果的反馈,例如游戏和影视场景的编辑,在这种需求下,当前的实时渲染并不是一种很好的选择,因为他的最终结果需要依赖于大量时间的预计算;相反,基于光线追踪的技术,虽然得到最终高质量的渲染结果需要大量的时间,但是却可以在较短时间内使用少量的样本得到整个编辑的反馈,并且由于更多的时间花在后面对更小误差的处理上,实际上得到一个快速能够反馈编辑结果的时间是很快的,这方面一些离线渲染技术反而是更好的选择。
电影渲染是非实时渲染,以后会不会用到实时渲染中
毫无疑问,未来的实时渲染一定是光线追踪,这不仅是因为它的渲染结果是更物理真实的,还因为它简洁一致的光照传输模型,当前的实时渲染融入了太多繁杂的近似计算,这些近似处理并不是必须的,而是受限于硬件限制,但是这使得工程师要去了解非常多各种各样的近似技术。人类科技的发展是趋向于高度简洁和抽象化的,因为这也是人更易于理解的,光线追踪就符合这样的特征。
但另一方面,光线追踪的实时化并不仅仅是硬件发展的要求,路径采样基础算法架构的改进也是非常重要的,我们仍然还需要再算法层面做很多改进工作,甚至也有可能发现全新的光照算法。
怎么样,听/看完上述内容,是不是很想买一本《全局光照技术》来读一读呢?本书正在摩点网火爆众筹预购哦,已经超过12万的预定量,很多小伙伴已经在你前面踏上进军图形学的轨道上,此次众筹也是全宇宙最快最优先获取《全局光照技术》图书的途径,快去看看吧!
预购地址:https://zhongchou.modian.com/item/9055.html
https://www.fxguide.com/featured/pixar-deep-dive-on-sss-siggraph-preview/
https://renderman.pixar.com/news/presentations-renderman-art-and-science-fair-2017
https://www.fxguide.com/featured/rendermanris-and-the-start-of-next-25-years/
https://rmanwiki.pixar.com/display/REN/Sampling+Modes
https://rmanwiki.pixar.com/display/REN/PxrMarschnerHair
https://www.fxguide.com/featured/beam-rendering-extended-at-siggraph-2014/
Sorted Deferred Shading For Production Path Tracing
http://graphics.pixar.com/library/Reyes/
http://pbrt.org