为了整体的逻辑性,我们先看一下最简单的GI(全局光照)页面,这里先使用两个Brute Force算法。
首先我们先要理解一下什么是Global Illumination(简称GI/全局光照)在现实中太阳是我们主要的自然光源,当然也有人造光源:路灯等等。这些光源对象都会发射光线,然后遇到对象反弹到我们眼镜中。这样我们便看到了图像。针对于渲染器,原理也是一致的。只不过由于渲染器需要以最高的效率计算图像的光线信息,因此它的计算逻辑和现实相反。现实是从光源发射光线信息。而Redshift渲染器则从摄像机发射光线。这样在摄像机视野以外的地方则不发射光线进行计算,以达到节省资源的目的。
如上图所示,从摄像机发射光线,首先光线碰到A点之后反弹到B点,然后再反弹到光源。(这里我们先假设一种理想的情况下,发射的光线刚好可以反弹到光源。)我们整体来看,这样的路径和从光源发射光线碰撞到B点,然后再碰撞到A点,之后再射入摄像机是一致的。理解了Redshfit光线的计算原理之后我们就来看一下什么是GI?
我们先考虑最简单的GI引擎算法,Brute Force在上图中,OA一段称之为首次光线,即零GI反弹信息。AB一段,是第一次反弹,因此为Primary GI Engine(主GI引擎)所计算的内容。BC一段,是第二次反弹,因此为Secondary Engine(二次GI引擎/辅助GI引擎)所计算的内容。tip:从B点开始往后所有的光线计算都归二次GI引擎负责。当到达物体表面没有任何的反弹光称之为直接光照。一旦光线从一个或者多个表面反射回来,就称之为间接照明。所以GI的本质是计算间接照明。即从A点往后的所有光线信息。在Redsfhit的GI计算中,给予了非常多的GI引擎。除了一个比较特殊:Photon mapping(光子映射)光子映射是从灯光发射光线。我们先回过头看一下最简单的Brute Force算法的参数信息:
- Trace Depth:追踪的深度,早期版本参数名称为Number of GI Bounces(GI光线反弹的次数)这个参数控制了GI光线反弹的总次数。显示中光线是无限反弹的,但是针对于渲染器,资源有限,因此需要有次数限制。数值越高,计算速度和渲染速度也就越慢。但是结果会更精准,并且由于次数的增加,场景会变亮。
tip:早前版本参数为Numbei of GI bounces时,参数可以为0,则不使用二次反弹光线。现在最低只能设置为1,即计算第一次反弹。
- Brute Force Rays:当GI改为Brute Force时发射采样光线的数量,这个需要配合前面的统一采样进行使用,这里先跳过。
- Conserve Reflection Energy:保护反射能量,Redshift目前不支持在GI环节计算反射光线采样,这样就会导致能量(这里的能量简单理解为亮度即可)的损失,启用后可以用其他的算法进行弥补。
默认开启即可。
针对于Redshift,是一款有偏差渲染器。这里的有偏差其实本质上就指的是GI引擎除了暴力算法外还有其他的GI引擎以加快渲染速度,但是结果就不精准了。
后面的文章会对每个GI引擎进行单独的讲解!