第1页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共10页elvishray新算法框架Version2
0Len3dCopyright©2007Len3d
Allrightsreserved
前言本文描述了一种渲染器的新算法框架,只是我个人对elvishray的建议,仅供参考
需求分析mentalray是一个极其优秀的混合渲染器,尤其是它的光线追踪功能,做得非常好,非常智能,尽量用最少的光线取得最好的结果(很好的采样分布算法和自动减少无效采样)但它依然是基于传统的光线追踪算法框架发展而来的,按我的使用经验,这带来很多问题
在mentalray中,对不同的光线类型,如eyeray,shadowray,reflectedray,refractedray,finalgatherray等,都要分别做不同的优化,导致算法非常复杂,而各种光线的表现又不尽相同,导致使用时很难预测各种光线的行为,也就很难预测达到的效果与渲染时间,这对于产品级的制作是很大的麻烦,意味着开支预算变得困难
虽然mentalray尽量让参数的变化直接与渲染时间的变化呈线性关系,但对于reflectedray和refractedray,众所周知,其递归光线追踪的过程构成一颗二叉树形式,称为光线树,这样对于K次反射/折射,R个象素,总供需要计算的光线数目近似于(2k+1-2)R条,这是呈指数增长的,所以递归层数K一深,整个渲染过程马上就慢下来了,更糟糕的是,如果再开启阴影,每个交点处至少发射一条阴影测试光线,更一般的,开启区域阴影时,不妨设每个交点处平均发射m条shadowray,则所需的光线总数约为(2k+1-2+m(2k-1))R条,这种增长非常可怕,而且不同的特效同时开启时,速度的变慢不是简单的线性组合,而是会相互影响,这就是为什么单独打开mentalray的某一种特