2022年elvishray新算法框架.doc
《2022年elvishray新算法框架.doc》由会员分享,可在线阅读,更多相关《2022年elvishray新算法框架.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、elvish ray新算法框架Version 2.0.0.0Len3dCopyright 2007 Len3d.All rights reserved.前言本文描绘了一种渲染器的新算法框架,只是我个人对elvish ray的建议,仅供参考。需求分析mental ray是一个极其优秀的混合渲染器,尤其是它的光线追踪功能,做得特别好,特别智能,尽量用最少的光线获得最好的结果(特别好的采样分布算法和自动减少无效采样),但它仍然是基于传统的光线追踪算法框架开展而来的,按我的使用经历,这带来特别多咨询题。在mental ray中,对不同的光线类型,如eye ray, shadow ray, reflec
2、ted ray, refracted ray, finalgather ray等,都要分别做不同的优化,导致算法特别复杂,而各种光线的表现又不尽一样,导致使用时特别难预测各种光线的行为,也就特别难预测到达的效果与渲染时间,这关于产品级的制造是特别大的烦恼,意味着开支预算变得困难。尽管mental ray尽量让参数的变化直截了当与渲染时间的变化呈线性关系,但关于reflected ray和refracted ray,众所周知,其递归光线追踪的过程构成一颗二叉树方式,称为光线树,如此关于K次反射/折射,R个象素,总供需要计算的光线数目近似于(2k+1-2)R条,这是呈指数增长的,因而递归层数K一深
3、,整个渲染过程立即就慢下来了,更糟糕的是,假如再开启阴影,每个交点处至少发射一条阴影测试光线,更一般的,开启区域阴影时,不妨设每个交点处平均发射m条shadow ray,则所需的光线总数约为(2k+1-2+m(2k-1)R条,这种增长特别可怕,而且不同的特效同时开启时,速度的变慢不是简单的线性组合,而是会互相妨碍,这确实是为什么单独打开mental ray的某一种特效,速度尚可接受,但同时打开几种特效时,速度就慢得让人难以忍耐了,因而想要用mental ray到达特别好的效果和渲染时间的平衡,需要大量的试验和人工参数调整,需要使用者有特别丰富和老道的使用经历,即便如此,调整mental ray
4、诸多的复杂而神奇的参数,仍然是一种痛苦的折磨。总结起来,mental ray在这方面的缺点主要有:1. 基于传统的光线追踪算法框架,各种特效增加的渲染时间与象素(包括自习惯采样产生的子象素)数目成正比。因而,假设你只想增加景物边缘的反走样,而不在乎反射/折射的精细程度,mental ray仍然发射更多的反射/折射光线,忠实的增加渲染时间。2. 各种光线类型的优化方法不统一,算法复杂维护困难,且关于产品级的应用,难以预测渲染时间的开销,难以预测并保证最终效果,总是要求用户试了才明白。3. 不管mental ray如何优化其算法,反射/折射光线,仍然与反射/折射层次数呈指数增长关系。4. 同时开启
5、多种效果时,渲染时间不是单独开启各种效果时渲染时间简单的线性组合,而是会互相妨碍。例如,射/折射层次增加亦会使阴影光线数目呈指数增长。5. 参数复杂而且神奇,难于调整,需要极为丰富的使用经历。想要到达效果和渲染时间的平衡,需要大量反复的调整和试验,妨碍制造效率。针对这些咨询题,我设计了如下这种新算法框架,希望能有助于处理这些咨询题,事实上该架构也特别简单,其核心思想仍然是分而治之的思想,我借鉴了Reyes的思想,并对Reyes与光线追踪算法中各自的一些概念进展了推行,提供了一种统一的架构。算法框架描绘1. 光线类型的推行Reyes算法只处理一种光线类型,确实是mental ray中称为eye
6、ray的光线,它只渲染观察者直截了当可见的景物,Reyes还有一个区别于mental ray这类光线追踪渲染器的主要特点,确实是将Hidden Surface Removal(简称hiding)和shading过程分开,如此的好处是,增加物体边缘的反走样,不会增加多少渲染时间,由于更耗时的shading过程由另一个与象素数目(由采样数目操纵)无关的参数shading rate操纵。我将shading rate的概念由eye ray推行到各种光线类型,reflected ray, refracted ray, shadow ray, finalgather ray等都有各自的shading ra
7、te,且规定它们的shading rate均不小于eye ray的shading rate,如此我们为每块由细分和镶嵌生成的microgrid,匹配一系列分别对应于各种光线类型的irradiance cache(这里借用并推行了irradiance cache的概念),每当一块microgrid被某条光线击中时,便对整张microgrid上的每个顶点进展针对视点的shading(这尽管可能导致浪费一部分shading结果,但是能够充分利用SIMD并行计算加速,甚至能够利用GPU),这就涉及到如何执行用户编写的shader程序的咨询题了。由于我们规定其余各种光线的shading rate总不小于
8、eye ray的shading rate,因而在Reyes针对视点细分生成的microgrid上的每个顶点进展shading总是正确的。然而,以reflected ray为例,对microgrid上的每个顶点都计算反射往往是不必要的,因而我们能够依照reflected ray的shading rate,只对microgrid上的一部分顶点计算反射,这部分顶点通过在microgrid上按相应间隔取隔行和隔列的顶点获得。假设要利用SIMD并行shading,我们需要有RenderMan一样的编译器与SIMD虚拟机,shader代码执行到调用trace_reflect函数的时候,便搜集microgr
9、id上需要计算反射的点(这些点被称为reflected points,相应的有refracted points, shadow points, finalgather points等),利用基于SIMD的并行光线追踪一次性得到计算结果,而关于microgrid上剩余的未计算反射的点,则由microgrid良好的性质能够简单的通过插值相邻的reflected points获得,同样由trace_reflect函数返回插值结果,如此,我们不必为finalgather rays构建特别的基于八叉树或其它特别数据构造的irradiance cache,而将irradiance cache的概念推行到所
10、有光线类型,统一了它们的处理方法,这同时也是对Reyes算法的一种扩展。值得留意的是,irradiance cache的值,对不同的光线类型,可能是view-dependent的,也可能是view-independent的。关于view-dependent的那些,比方reflected irradiance cache, refracted irradiance cache,它们都仅是针对场景中唯一的视点(eye rays)有效,而关于从其它点发射出的光线则是不正确的,因而关于secondary rays与景物相交时的shading,我们则按传统的方法单独为该点计算反射/折射等效果,并不使用i
11、rradiance cache中的值,所以,参考Razor架构的做法,关于shading language的predefined variables中那些view-independent的变量,如N, dPdu, dPdv等(假如我们假设shading总发生在camera space中的话),我们能够像irradiance cache一样一次计算好并储存下来反复使用,而关于其中那些view-dependent的变量,如P, I等,则每次均重新计算。关于那些view-independent的irradiance cache,如shadow irradiance cache, finalgathe
12、r irradiance cache,不管光线从哪个视点发出,都能够使用cache中的值,如此防止了重复计算,同时由于我们只在有光线击中某块microgrid时,才对该microgrid计算光线所需的irradiance cache值,这是lazy evaluation或说deferred shading的思想。2. Russian Roulette方法的推行前述对光线类型的推行,有望在我们前面对mental ray的算法复杂度的分析中,以一定比例减小R这个因子,设有n种光线类型,则相当于将R分解为R1, R2, , Rn的线性组合,且各种光线的Ri因子中,由各自的shading rate决定
13、,但这仍然只是降低了复杂度中的线性因子,而复杂度中更主要也更可怕的真正反映光线追踪特性的递归光线追踪部分的因子,却没有降下来,即2k+1-2+m(2k-1)这部分。回忆Photon Mapping算法中特别重要的Russian Roulette方法,每次获得一个交点时,只是随机的依照光照模型中各项系数因子的大小选择一种光线类型,且只发射一条光线,假如我们借用这种方法(同意类似mental ray通过shader实现),那么递归光线追踪部分的因子就会降为K,整体的复杂度能够近似表示成K(R1+R2+Rn)。然而应留意到,Russian Roulette方法尽管能够通过理论证明是正确的,但当R不够
14、大(超采样缺乏)时,产生的图像会有特别多噪点。为理处理这个咨询题,回忆Photon Mapping中使用Russian Roulette为什么会正确,由于最终渲染时,需要使用density estimation或final gather等技术来可能外表上各点的间接照明值,这实际上能够理解成一种filtering过程,考虑microgrid本身的构造,特别容易进展相邻顶点的irradiance cache中的值的filtering,这能够理解为推行的irradiance filtering技术,这种技术有一个缺陷,由于一个物体特别可能会被分割成多个相对独立的microgrid,对microgri
15、d边界处的顶点进展irradiance filtering会造成瑕疵,所以这能够通过保持microgrid分割边界之间的连接关系来处理,但如此使得各个microgrid不能独立处理,留意到Reyes中计算microgrid边界处的dPdu, dPdv等值时,也会遇到类似的困难,我们能够借用类似的处理方法,比方让每块microgrid略微比实际的大一些即可。另外,关于final gather,由于microgrid本身的良好构造,特别容易实现相邻顶点间的neighbor clamping算法,以消除景物边角处的光亮度瑕疵,而不用设计特别的数据构造。3. Multi-resolution Geom
16、etry Caching与Ray Differentials基于观察,我认为能够得到如此一个事实:近处较大(近大远小的道理)的景物,其被反射的影像在渲染图像中一般也较大,远处较小的景物,其被反射的影像在图像中一般也较小。或者能够阐述成景物的照明属性通常对其四周的景物妨碍最大,而对距之较远的景物妨碍较小,即具有照明属性的部分性,同意粗糙的近似甚至忽略不计。除了一些特别的情况,比方拿一个放大倍率特别高的放大镜,看极远处的一个小景物。因而我们一般能够按Reyes算法对场景中所有景物进展细分(或镶嵌,下同),而关于反射/折射等光线,能够直截了当使用同一份细分几何数据,而不需要另外细分,这通常不会因细分
17、缺乏而在图像上产生瑕疵,而且仅使用一份细分几何数据(称为single geometry cache),同时节约了计算量与内存用量,同时不会产生由于相邻多条光线各自对应的细分层次不一致而在图像上造成裂痕的咨询题,对内存的使用量及细分所需时间的预测也变得容易了一些。留意到Reyes只处理位于视棱域(frustum)内的景物,而光线追踪算法需要处理所有景物,且Reyes的细分是通过将景物透视投影到屏幕空间,依照其包围盒大小与shading rate操纵的,而位于投影平面前的景物,不能特别好的透视投影到该平面上,但又留意到这部分景物往往亦具有前述的照明属性的部分性,其可见部分只能通过妨碍与之相靠近的位
18、于视棱域内的景物而表如今最终渲染图像上,因而我们对其进展到投影平面的平行投影(而非透视投影),以此决定其细分精度,而对位于Z轴另一侧的不直截了当可见的景物,我们利用镜像性质,应用与上述相应的法则进展细分,同样使离视点较近的景物细分得较精细,离视点较远的景物细分得较粗糙,这称为对称细分法。尽管使用single geometry cache一般能够得到较理想的结果,但也存在如前面举例的放大镜咨询题,关于该类咨询题,RenderMan中光线追踪的处理方法是类似MIP-MAP算法,构建同一microgrid的多分辨率细分拷贝(即Multi-resolution Geometry Caching),在渲
19、染时动态的计算ray differentials,按其大小选择适宜的geometry cache拷贝,Razor的方法也特别类似,但它会对相邻的拷贝按ray differentials大小进展插值。不管如何两种方法都十分复杂,同时需要特别处理烦恼的裂缝咨询题,而放大镜这种情况并不常见,我认为更简单更容易操纵的方法是像Reyes一样,同意单独调整某个景物的shading rate,比方在放大镜咨询题中,我们只需适当减小放大镜中能够看到的细分缺乏的景物的shading rate即可,然而在放大镜的放大倍率特别大时,该景物可能会被分割得特别精细,但实际上它在渲染图像中直截了当可见的部分却特别小,因而
20、这对Reyes算法是一种损害,因而我引入了Multi-type Geometry Caching的概念,即对每个物体,都对应每种光线类型持有一份细分拷贝,如此一样类型的光线总与同一份拷贝求交,因而不会产生裂缝。在一般情况下,每个物体只持有一份针对eye ray的eye geometry cache,其它光线类型的geometry cache简单的指向它,而只有在用户手动调整另一种光线类型的shading rate时,才针对该光线类型生成相应的geometry cache(例如针对reflected ray就生成reflected geometry cache),这有利于用户直截了当操纵并预测细
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 elvishray 算法 框架
限制150内