查看: 2817|回复: 1
打印 上一主题 下一主题

全局光照(GI)详解

[复制链接]

600

主题

3

听众

4875

积分

中级设计师

Rank: 5Rank: 5

纳金币
2095
精华
72

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2013-9-28 16:37:35 |只看该作者 |倒序浏览
GI全名为Global Illumination(全局光照)。在一个场景中,根据照明中光能的来源,分为直接光照和间接光照,直接光照是有光源所发出的光能直接照射到场景中物体上所形成的照明效果,间接照明是光源发射的光能经由场景中其他物体表面反弹后照射在某些物体表面所形成的光照现象(间接照明中的光能来自与直接照明中被物体表面所反弹的光能)。

理解上面的分析后,就好理解什么是GI了,Global Illumination (全局光照)就是由直接光照和间接光照一起形成的光照,全局照明更加符合现实中真实的光照。

其实 Global Illumination 在图形领域里面已经不算是新的技术了,微软,nvidia等厂商一直在开发GI技术,如今的GPU速度已经非常之快,并且浮点计算能力已经相当强大,普及Global Illumination全局光照技术是硬件厂商的必然发展方向,经典全局光照模型的公式如图1所示。

  

图1  经典全局光照模型的公式


通过上述简单分析相信读者已经对GI有啦大致的了解,GI参数面板如图2所示。


图2  GI面板

1. ON:GI的开关。

2. GI caustics:全局光焦散控制。这里主要控制间接光照产生的焦散效果。全局光焦散是GI产生的焦散光学现象,可以由天光,发光物体等产生,注意,有直接光照产生的焦散不受这里参数控制,可以在vray:Caustics(焦散)展卷栏中的设置。使用GI焦散需要更多的样本,否则会有比较大的噪波,所以需要设置更高的参数,渲染时间会变慢很多。

(1)Reflective  反射焦散控制是否让间接光产生的反射焦散。间接光照产生反射焦散默认是关闭的。

(2)Refractive:折射焦散控制是否让间接光产生的折射焦散。间接光穿过透明物体时会产生折射焦散 注意这和直接光穿过物体产生的焦散是不一样的。


3. Post-processing:后加工选项组,主要是对间接光照在增加到最终渲染图像前的一些修正。如饱和度、对比度。用户可以根据自己的需要进行调节。

(1)Saturation:饱和度,值变大,饱和度会加强。

(2)Contrast :对比度,值变大,对比度会加强。

(3)Contrast base:对比度基础,和对比度类似,这里主要控制明暗对比度,值越高,明暗对比越强。

(4)Save Maps per frame(每帧保存):在渲染动画时,控制每帧是否用Post-processing里的参数来控制每帧的渲染图像。

4. Primary bounces:初级漫射反弹选项组。

(1)Multiplier倍增值,这个参数控制为最终图像贡献多少初级漫射反弹,值越高,一次反弹的光的能量越强,渲染场景越亮。

(2)GI engine  GI引擎这里选择初级反弹的GI引擎,包括下面4个:Irradiance map(发光贴图引擎)、Photon map(光子贴图引擎)、Quasi-Monte-Carlo(准蒙特卡罗引擎)、Light cache(灯光缓存引擎)。


5. Secondary bounces:次级漫射反弹选项组。

(1)Multiplier 倍增值控制次级漫射反弹的光的倍增值,值越高,次级漫射反弹的光的能量越强,渲染场景越亮。

(2)GI engine(GI引擎)这里选择次级漫射反弹的GI引擎,包括下面4个:None(不使用引擎)、Photon map(光子贴图引擎)、Quasi-Monte-Carlo(准蒙特卡罗引擎)、Light cache(灯光缓存引擎)。

以上是Global Illumination(全局光照)面板的介绍,本章重点详解VRay Indirect Illumination(GI) 全局光照中的 Irradiance map(发光贴图)渲染引擎以及Quasi-Monte Carlo GI(准蒙特卡罗GI)。在大多数建筑表现图的渲染中都使用 Irradiance map和Quasi-Monte Carlo的配合方式,这也是VRay中最常用的渲染引擎搭配方式。

在一级全局光照引擎下拉列表中有四中渲染引擎。第一种是Irradiance map发光贴图渲染引擎,第二种是Photo map光子贴图渲染引擎,第三种是Quasi-Monte Carlo准蒙特卡罗渲染引擎,第四种Light cache灯光缓存渲染引擎。这四种渲染引擎在第一级和第二级漫反射反弹中可任意搭配使用。


Irradiance map发光贴图

发光贴图的计算方式是基于发光缓存技术的,是只计算场景中某一些特定的间接照明,对附近的区域进行插值计算。发光贴图在最终图象质量相同的情况下运行速度要快与其他集中渲染引擎。而且相比之下渲染出来的噪波较少。发光贴图可以被保存,以便被载入使用,尤其是在同一场景表现动画的时候,我们可以在不同角度叠加保存被计算的发光贴图采样点,以便加速渲染整个动画过程。发光贴图还可以加快面积光源的计算。但由于采用了差值计算,所以容易在细节上或在设置时了运动模糊的场景中产生模糊和噪波。如果参数设置过低,渲染出的动画很容易产生动画跳帧。

Irradiance发光贴图描述了三维空间中任意一点和全部可能照射到这一点的光线。通常照射这个点的每条光线都是不同的,但是渲染器在渲染时对这些光线也有限制,由于被照射的点都在场景中物体的表面上,所以有一种约束叫做表面约束。另外一种是渲染器只考虑这个点被照射的所有光线数量而不去计算这些光线来自哪个方向。这些被计算的所有的点是一个3维空间方式的集合。当光线照射到物体表面时,VRay会在发光贴图中查找与当前计算过的点类似的点,并从已计算过的点中提取信息,根据这些信息将这些相似的点进行内差值替换。如果那个点与其他任何被计算过的点不同,就会被重新计算,保存发光贴图到内存中。由于上述原因,所以发光贴图是自适应的,它会根据我们给定的参数对场景中物体的边界、物体交叉部分以及阴影等重要的部分进行精确的全局光照计算,在大量平坦的区域进行低精度的全局光照计算。发光贴图是VRay渲染系统的默认渲染引擎,也是参数最多的渲染引擎。

通过上面的分析,读者已经对Irradiance发光贴图不陌生了,下面讲解一下发光贴图面板设置,如图3所示。




图3  发光贴图面板

1. Built-in presets:内置预设,VRay默认的有8种模式,如图4所示。




图4  Built-in presets面板

Current preset:当前选择的模式,其下拉菜单包括8种模式:Custom(自定义)、Very Low(非常低)、Low(低质量)、Medium(中级)、Medium-Animation(中级-动画)、High(高级别)、High-animation(高级别-动画)、Very high(非常高)。这8种模式,。当选择Custom(自定义)的时候,就可以手动调节Irradiance map里的参数。


2. Basic Parameters(基本参数):主要控制样本的数量,采样的分布以及物体边缘的查找精度,其具体参数如图5所示。




图5  基本参数面板

(1)Min rate(最小比率):控制场景平坦区域的采样数量,0表示计算区域的每个点都有样本,-1表示计算区域的1/2是样本,-2表示计算区域的1/4是样本。

(2)Max rate 最大比率  控制场景中的物体细节的采样数量,如边线、角落、模型转折复杂的地方 0表示计算区域的每个点都有样本,-1表示计算区域的1/2是样本,-2表示计算区域的1/4是样本。

(3)HSph.Subdivs(半球细分):Hemispheric Subdivs的简写控制 VRay用来模拟光线的数量,值越高,光线数量越多,样本精度也越高,渲染的精细度会更高,渲染时间会更慢。注意它并不代表被追踪光线的实际数量,光线的实际数量接近于这个参数的平方值,并受QMC采样器相关参数的控制。

(4)Interp.samples(插值采样): Interpolation samples的简写,这个数值控制对样本进行模糊的处理,较大数值得到比较模糊的效果,较小数值得到比较锐利的效果。需要根据经验调节。
较小的数值可能会产生黑斑。

(5)Clr thresh(颜色极限值):color threshold的简写,这个值主要让渲染器分辨哪些是平坦区域,哪些不是平坦区域。较小的数值将使发光贴图对照明的变化更加敏感。

(6)Nrm thresh(法线极限值):normal threshold的简写,这个值主要是分辨哪些是交叉区域,那些不是交叉区域,并且按照法线的方向来区分他们。值越小,对法线方向的敏感度越高。

(7)Dist thresh(距离极限值):distance threshold的简写,这个值主要是分辨哪些是弯曲的表面,这个参数确定发光贴图算法对两个表面距离变化的敏感程度值越高,敏感越强烈。


3. Options

Options参数面板如图6所示。



图6 Options参数面板

(1)Show calc.phase:勾选的时候,显示计算相位,在计算发光贴图的时候会显示出计算效果。

(2)Show direct light:显示直接照明,只有激活Show calc.phase选项才可以勾选该选项。

(3)Show samples:勾选此选项后,VRay以小圆点形态显示发光贴图中的样本情况。

如图7所示为Min为-8和-3的测试渲染效果对比,可以发现Min越大,对于画面的平坦区域样本越多,Min数值越小,平坦区域样本越少。

     

  

图7  Min为-8和-3的测试渲染效果对比


如图8所示为Max为-3和0的测试渲染效果对比,Max的参数越大,角落的样本数量就越多,Max的参数越小,角落的样本数量就越少,当Max的数值增大时渲染速度也会变慢。

   


  
图8  Max为-3和0的测试渲染效果对比


如图9所示为测试渲染效果及渲染时间的对比。
  
  

  

  
9 渲染效果以及渲染的时间的对比


Quasi-Monte Carlo GI (准蒙特卡罗 GI)

Quasi-Monte Carlo 准蒙特卡罗:准蒙特卡罗渲染引擎计算全局光照是一种非常优秀的计算方式。Brazil渲染器的全局光照方式与它非常的相似,它会验算每个材质点的全局光照,因此渲染速度很慢,但效果也是最精确的,尤其是在具有大量细节的场景。它对运动模糊的计算也是最精确的,  但它同样需要与其他的渲染引擎搭配使用才能得到更真实的效果,而且如果没有较高的细分度,渲染出来的图像会有颗粒效果。

准蒙特卡罗渲染引擎是一个非常优秀的全局光照计算方式,它可用单独验算每个着色点的间接照明,因此渲染速度十分的慢,它的计算方式类似于Brazil巴西渲染器的全局光渲染计算方式,效果是最精确的,尤其是表现大量细节的场景。但它也有一个缺点,如果细分度设置过低,渲染的效果会有颗粒感。即便是设置很高的细分,颗粒感也不会轻易消失。

目前在多种渲染中,间接光照都是被分为两大部分来控制GI的产生,初级漫反射反弹和次级漫反射反弹。当光线在第一次反弹之后继续在场景中反弹,就产生了次级漫反射反弹。所以可以将次级漫反射反弹简单的理解为光线在完成第一次反弹以后的所有漫反射反弹的全局控制。而在 二次反弹中同样可以使用Quasi-Monte Carlo GI,参数面板如图10所示。



图10  Quasi-Monte Carlo GI参数面板


(1)Subdivs(采样):控制Quasi-Monte Carlo样本的数量,数值越大效果越好,速度越慢,数值越小,会产生较多的杂点,渲染速度会快。

(2)Secondary bounces(二次反弹次数):如果Quasi-Monte Carlo在一次反弹中激活时,这个数值将不起作用,它控制着二次反弹的次数,数值越小,二次反弹效果越不充分,场景会较暗,同样数值越高速度会越慢。一般超过12后的数值不会有太大的变化。

如图11所示为不同采样参数的测试渲染效果与渲染时间的对比。
  







  
图11  Subdivs为2、8和20时的测试渲染效果及渲染时间的对比

观察3张测试渲染效果得知,QMC采样越大,杂点越少,同时速度越慢;采样越小,杂点越多,渲染速度越快。


如图12所示为不同Secondary bounces参数值的测试渲染效果的对比。
  







  

Secondary bounces为1、4、20和40的测试渲染效果对比


观察4张测试渲染效果得知,二次反弹数值越大,光线反弹越充分,暗面越亮;二次反弹数值越小,光线反弹约不充分。如Secondary bounces 为1时,暗面非常灰暗(Secondary bounces的值过大时,对于画面的效果影响是很小的,如参数为40和20时画面效果几乎是没有变化的)。

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

2

听众

3482

积分

中级设计师

Rank: 5Rank: 5

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2013-10-10 08:48:16 |只看该作者
学习中!!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 16:10 , Processed in 0.111511 second(s), 26 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部