长期以来一直有很多人还在用光子图出图
觉得那样可以省渲图时间还可以跑4倍的大图
各路教程里也都带有光子图出图的步骤
但实际上这些做法都是错误和不必要的
因为他们还没有了解VR算法的一些基本原理
我们知道光子图是由VR的发光贴图引擎计算产生
发光贴图是通过对场景采样并处理样本上的照明信息来计算全局照明的
采样时产生的样本越多意味着全局照明的效果越精确
而发光贴图的采样过程又是以像素为基础来进行
越少的像素上产生越多的样本表示采样的精度越高
相应出图的质量也越好
控制采样精度的是最小比率和最大比率这两个参数
它们的取值决定了像素和样本的比例关系
这种比例关系具体如下:
当最小、最大比率为0,1个像素生成1个样本
当最小、最大比率为-1,4个像素生成1个样本
当最小、最大比率为-2,16个像素生成1个样本
当最小、最大比率为-3,64个像素生成1个样本
也就是说,
最小、最大比率为0时,每1个像素都能采一次样,表示采样的精度很好
最小、最大比率为-3时,每64个像素才能采一次样,表示采样的精度较差
像素和样本的增减变化规律都是以2的偶次方倍来进行
比如2的2次方为4,4次方为16,6次方为64等等,以此类推
最小、最大比率的区别在于采样的级别不同
其中最小比率控制的是采样的起始精度
最大比率控制的是采样的最终精度
比如将最小、最大比率设置为-3/0
这表示采样以-3的精度开始,以0为结束
按顺序-3、-2、-1、0一共四级
这意味着采样的过程会计算4遍
因为最小、最大比率直接影响着发光贴图的采样精度
而它们的取值又影响了采样和像素之间的比例关系
所以根据这个关系来灵活设置最小、最大比率
就完全可以自由控制不同分辨率下出图的质量
从而摒弃先跑光子再出大图这种多此一举的做法
比如最小、最大比率用-3/0渲一张800x600的图
实际就等于用-4/-1渲一张1600x1200的图
也等于用-5/-2渲一张3200x2400的图
也等于用-6/-3渲一张6400x4800的图
因为根据像素和样本的比例换算关系
以及同样的采样计算次数
这四种组合方式下计算得到的采样精度和出图质量都是一致的
注意它们的换算方法是每当最小、最大比率同步增或减一级
对应的图幅大小就增或减2倍
再比如很多人习惯用-3/0跑400的小图,然后再去跑1600的大图
那其实只要用-5/-2直接去跑1600的大图就可以了
这样可以避免你再去手动切换调用光子的麻烦
而两者的质量也是一样的
直接跑大图的时候只要保证换算正确
就无需纠结是否违背了所谓光子图出4倍大图的讲究
如果你不确定用什么参数去跑一张大图可以保证质量
那你可以尝试先用一个较高参数跑一张小图
小图的尺寸以你的眼力可以看清为准
比如用-3/0跑600x400
如果这个小图跑好后看起来没有飘、黑斑或漏光等问题存在
那说明-3/0的采样精度就可以满足这张600x400的图
相应的你就可以用-4/-1直接跑1200x800左右的大图
或者用-5/-2直接跑2400x1600左右的大图,以此类推
光子图的真实大小是由最大比率确定的
因为最大比率决定的是最终采样精度
跑一张400x300的光子图当最大比率为0时它才是真正400x300的光子图
如果最大比率为-1那它其实只是200x150的光子图
还有不管是测试还是最终出图都不要把最小、最大比率设置成相同
因为这会丧失发光贴图在采样时的自适应性特点
是很没效率的做法
直接跑大图很多人最关心的当然还是时间
因为跑光子这种做法图的就是速度快省时间
很多人一说到直接跑大图就会下意识觉得时间肯定很漫长
但实际上完全不是那么回事
只要你懂得了发光贴图采样的过程原理和会用最小、最大比率来控制质量
因为如果采样精度相同则计算量也会相同
计算所花费的时间自然也会相近
比如用-3/0跑600x400的光子图再跑2400x1600
和直接用-5/-2跑2400x1600
两者的质量精度相同
所以渲染花费的时间也是相近的
为了验证这次教程所说的东西
最后附上一个对比演示视频
希望可以彻底结束“跑光子能省时间”这一错误观点长期以来对大家的误导
关于光子图的概念:
其实“光子图”一直是个错误的叫法
因为发光贴图是根据对场景采样和分析样本的照明信息来计算全局光的
在它的整个计算过程中并没有涉及到光子的计算
它计算产生的文件(也就是所谓的光子图文件)
其实只是一个记录了场景中样本的分布、数量、照明等信息的数据文件
完全不包含光子
真正和光子有关的是VR的另一个全局光引擎
也就是光子贴图引擎
它的原理是通过从场景中的光源发射出大量光子
并在场景各处来回撞击、反弹
然后通过分析每一个撞击点的照明信息来计算全局照明
因为它需要涉及到光子的数量、密度、反弹次数等方面的计算
所以它才是真正和光子有关的全局光算法
它计算生成的文件才是真正意义上的光子图文件
因为长期以来大家已经习惯把发光贴图的计算文件叫成“光子图”
虽然是错误的叫法但是出于约定俗成的考虑
这篇教程里姑且还是继续称之为“光子图”
隐藏啥
密密麻麻的,眼睛看着有点累,学习了。