路线追踪与GI技术发展编年史,全局光照

大局光照(Global Illumination,简称 GI),
作为图形学中相比较酷的定义之一,是指既考虑气象中来自光源的一直光照,又考虑通过场景中别的物体反射后的直接光照的一种渲染技术。

全局光照(Global Illumination,简称 GI),
作为图形学中相比酷的概念之一,是指既考虑气象中来自光源的直白光照,又考虑通过场景中别的物体反射后的直接光照的一种渲染技术。

世家常听到的光线追踪,路径追踪等一样很酷的概念,都以全局光照中人气较高的算法流派。

大家常听到的光辉追踪,路径追踪等同样很酷的定义,都以大局光照中人气较高的算法流派。

 

 

而那篇小说将围绕大局光照技术,介绍的要点有:

而那篇作品将围绕大局光照技术,介绍的中央有:

 

 

  • 全局光照的基本概念
  • 全局光照的算法首要派别
  • 全局光照技术发展编年史
  • 光线追踪 Ray Tracing
  • 路线追踪 Path Tracing
  • 光明追踪、路径追踪、光线投射的分别
  • 环境光遮蔽 Ambient Occlusion
  • 大局光照的基本概念
  • 大局光照的算法主要派系
  • 大局光照技术提高编年史
  • 光线追踪 Ray Tracing
  • 途径追踪 帕特h Tracing
  • 光线追踪、路径追踪、光线投射的界别
  • 环境光遮蔽 Ambient Occlusion

 

 

 

 

 

 

 

 

一 、行文思路表达

 

 

开卷过《Real-Time Rendering
3rd》第柒章的读者们都会意识,作为一章有关全局光照的章节,笔者讲了许多在严厉意义上全局光照主线以外的剧情,如Reflections、Refractions、Shadow等节,而那些内容在《Real-Time
Rendering 2nd》中,其实是位于Chapter 6 Advanced Lighting and
Shading一节的。

既然《Real-提姆e Rendering
3rd》第10章标题就叫全局光照,主旨内容也是全局光照,本文即控制退出原书陈设的100来页的剩余内容,以大局光照的主线内容为主,构成一篇包蕴全局光照基本概念,首要算法流派,以及全局光照技术发展编年史,和大局光照算法中人气较高的光线追踪、路径追踪等算法的综述式小说。

 

 

 

① 、行文思路表明

 

 

翻阅过《Real-Time Rendering
3rd》第捌章的读者们都会发觉,作为一章有关全局光照的章节,笔者讲了许多在严酷意义上全局光照主线以外的内容,如Reflections、Refractions、Shadow等节,而这几个情节在《Real-Time
Rendering 2nd》中,其实是位于Chapter 6 Advanced Lighting and
Shading一节的。

既是《Real-Time Rendering
3rd》第⑧章题目就叫全局光照,主题内容也是全局光照,本文即决定脱离原书安插的100来页的剩下内容,以大局光照的主线内容为主,构成一篇蕴含全局光照基本概念,主要算法流派,以及全局光照技术升高编年史,和全局光照算法中人气较高的光柱追踪、路径追踪等算法的综述式小说。

 

 

 

贰 、全局光照

 

 

全局光照,(Global Illumination,简称 GI), 或被誉为Indirect Illumination,
直接光照,是指既考虑气象中央直机关接来自光源的光照(Direct
Light)又考虑通过场景中其它物体反射后的普照(Indirect
Light)的一种渲染技术。使用全局光照能够使得地狠抓气象的真实感。

 

即能够知道为:全局光照 = 直接光照(Direct Light) + 直接光照(Indirect
Light)

 

葡京娱乐场官网 1

 

图1 Direct illumination

 

 

 葡京娱乐场官网 2

图2 Global illumination = Direct illumination +Indirect illumination

上述两幅图影片来源于CMU 15-462/15-662, Fall 二零一四 Slider,Lecture 14: Global
Illumination,当然,细心的意中人也得以窥见,它也被《Physically Based
Rendering,Second 艾德ition From 西奥ry To Implementation》选作封面。

 

 能够发现,参与了Indirect
illumination的图2,在直接光源(阳光)照射不到的地点,获得了更好的亮度和细节表现,从而使整张渲染效果更具真实感。

 

虽说实际选拔中唯有漫反射全局照明的模拟算法被号称全局照明算法,但实际理论上说反射、折射、阴影都属于全局光照的范围,因为模仿它们的时候不仅要考虑光源对实体的第贰手成效还要考虑物体与实体之间的相互功能。也是因为,镜面反射、折射、阴影一般不必要开始展览复杂的光照方程求解,也不须要展开迭代的持筹握算。因而,这一个部分的算法已经十一分赶快,甚至足以做到实时。分歧于镜面反射,光的漫反射表面反弹时的自由化是相近“随机”,由此无法用简单的光泽跟踪获得反射的结果,往往要求动用三种艺术开始展览反复迭代,直到光能分布达到三个为主抵消的景观。

 

 

 

② 、全局光照

 

 

全局光照,(Global Illumination,简称 GI), 或被叫做Indirect Illumination,
直接光照,是指既考虑气象中直接来自光源的普照(Direct
Light)又考虑通过场景中任何实体反射后的光照(Indirect
Light)的一种渲染技术。使用全局光照能够有效地抓实气象的真实感。

 

即可以驾驭为:全局光照 = 直接光照(Direct Light) + 直接光照(Indirect
Light)

 

葡京娱乐场官网 3

 

图1 Direct illumination

 

 

 葡京娱乐场官网 4

图2 Global illumination = Direct illumination +Indirect illumination

上述两幅图片来自CMU 15-462/15-662, Fall 二零一五 Slider,Lecture 14: Global
Illumination,当然,细心的仇敌也能够发现,它也被《Physically Based
Rendering,Second 艾德ition From 西奥ry To Implementation》选作封面。

 

 能够窥见,参与了Indirect
illumination的图2,在直接光源(阳光)照射不到的地方,获得了更好的亮度和细节表现,从而使整张渲染效果更具真实感。

 

就算实际使用中唯有漫反射全局照明的一步一趋算法被誉为全局照明算法,但实际上理论上说反射、折射、阴影都属于全局光照的框框,因为模仿它们的时候不但要考虑光源对实体的第壹手功能还要考虑物体与实体之间的互相功效。也是因为,镜面反射、折射、阴影一般不必要开始展览复杂的光照方程求解,也不要求展开迭代的测算。由此,那些片段的算法已经不行便捷,甚至足以做到实时。差异于镜面反射,光的漫反射表面反弹时的矛头是近乎“随机”,因而不能够用简单的光线跟踪拿到反射的结果,往往须要利用三种办法开始展览频仍迭代,直到光能分布达到3个主干抵消的景观。

 

 

 

③ 、全局光照的主要算法流派

 

 

通过几十年的发展,全局光照于今已有种种兑现方向,常见的全局光照首要派别列举如下:

 

  • Ray tracing 光线追踪
  • Path tracing 路径追踪
  • Photon mapping 光子映射
  • Point Based Global Illumination 基于点的大局光照
  • Radiosity 辐射度
  • Metropolis light transport 梅特Polly斯普照传输
  • Spherical harmonic lighting 球谐光照
  • Ambient occlusion 环境光遮蔽
  • Voxel-based Global Illumination 基于体素的大局光照
  • Light Propagation Volumes Global Illumination
  • Deferred Radiance Transfer Global Illumination
  • Deep G-Buffer based Global Illumination
  • 等。

 

 

而在那之中的各个流派,又足以分开为N种立异和衍生算法。

如光线追踪(Ray
Tracing)派系,其实便是二个框架,符合条件的都可称为光线追踪,其又分为递归式光线追踪(惠特ted-style
Ray Tracing),分布式光线追踪(DistributionRay
Tracing),蒙特Carlo光线追踪(Monte Carlo Ray Tracing)等。

而路径追踪(Path tracing)派系,又分为蒙特Carlo路径追踪(Monte Carlo Path
Tracing),双向路径追踪(BidirectionalPath
Tracing),能量再分配途径追踪(Energy Redistribution PathTracing)等。

其中多少派系又互相关联,如路径追踪,就是依据光线追踪,结合了蒙特Carlo方法而成的一种新的宗派。

 

 

 

 

 

三 、全局光照的最首要算法流派

 

 

由此几十年的升华,全局光照现今已有种种达成方向,常见的全局光照首要派连串举如下:

 

  • Ray tracing 光线追踪
  • Path tracing 路径追踪
  • Photon mapping 光子映射
  • Point Based Global Illumination 基于点的全局光照
  • Radiosity 辐射度
  • Metropolis light transport 梅特波莉斯普照传输
  • Spherical harmonic lighting 球谐光照
  • Ambient occlusion 环境光遮蔽
  • Voxel-based Global Illumination 基于体素的全局光照
  • Light Propagation Volumes Global Illumination
  • Deferred Radiance Transfer Global Illumination
  • Deep G-Buffer based Global Illumination
  • 等。

 

 

而里边的每个流派,又有啥不可划分为N种立异和衍生算法。

如光线追踪(Ray
Tracing)派系,其实就是三个框架,符合条件的都可称为光线追踪,其又分为递归式光线追踪(惠特ted-style
Ray Tracing),分布式光线追踪(DistributionRay
Tracing),蒙特Carlo光线追踪(Monte Carlo Ray Tracing)等。

而路径追踪(Path tracing)派系,又分为蒙特Carlo路径追踪(Monte 卡洛 Path
Tracing),双向路径追踪(BidirectionalPath
Tracing),能量再分配途径追踪(Energy Redistribution PathTracing)等。

个中有些派系又相互关联,如路径追踪,正是基于光线追踪,结合了蒙特Carlo方法而成的一种新的宗派。

 

 

 

 

 

④ 、全局光照技术进步编年史

葡京娱乐场官网, 

 

那节以光线追踪和途径追踪派系为意见,不难总括一下大局光照技术进步早先时代(1969-1999)的根本里程碑。

 

 

 

④ 、全局光照技术提升编年史

 

 

那节以光线追踪和路线追踪派系为意见,简单总括一下大局光照技术升高初期(1969-1999)的首要里程碑。

 

 

 

4.1 光线投射 Ray Casting [1968]

 

光线投射(Ray
Casting),作为光线追踪算法中的第③步,其眼光起点于1970年,由Arthur
Appel在一篇名为《 Some techniques for shading machine rendering of
solids》的篇章中建议。其现实思路是从每四个像素射出一条射线,然后找到最相近的实体挡住射线的门路,而视平面上种种像素的颜色取决于从可知光表面产生的亮度。

 葡京娱乐场官网 5

 

图3 光线投射:每像素从眼睛投射射线参预景

 

 

 

4.1 光线投射 Ray Casting [1968]

 

光明投射(Ray
Casting),作为光线追踪算法中的第③步,其观点起点于一九七零年,由Arthur
Appel在一篇名为《 Some techniques for shading machine rendering of
solids》的稿子中提议。其切实思路是从每二个像素射出一条射线,然后找到最接近的实体挡住射线的门道,而视平面上各样像素的水彩取决于从可见光表面发生的亮度。

 葡京娱乐场官网 6

 

图3 光线投射:每像素从眼睛投射射线参与景

 

 

 

4.2 光线追踪 Ray Tracing [1979]

 

 

一九八〇年,Turner惠特ted在光线投射的根底上,加入光与实体表面包车型客车互相,让光线在实体表面沿着反射,折射以及散射格局上一而再散播,直到与光源相交。这一情势后来也被称之为经典光线跟踪办法、递归式光线追踪(Recursive
Ray Tracing)方法,或 惠特ted-style 光线跟踪办法。

光明追踪方法重要考虑是从视点向成像平面上的像素发射光线,找到与该光线相交的方今实体的交点,要是该点处的外表是散射面,则总结光源间接照射该点发生的水彩;假设该点处表面是镜面或折射面,则继续向反射或折射方向跟踪另一条光线,如此递归下去,直到光线逃逸现身象或达到设定的最大递归深度。

 

 

葡京娱乐场官网 7

 

图4 经典的光泽追踪:
每像素从眼睛投射射线出席景,并追踪次级光线((shadow, reflection,
refraction),并组成递归

 

 

4.2 光线追踪 Ray Tracing [1979]

 

 

1978年,Turner惠特ted在强光投射的基本功上,参加光与实体表面包车型大巴并行,让光线在物体表面沿着反射,折射以及散射格局上接二连三散播,直到与光源相交。这一方法后来也被叫作经典光线跟踪办法、递归式光线追踪(Recursive
Ray Tracing)方法,或 惠特ted-style 光线跟踪办法。

光线追踪方法首要考虑是从视点向成像平面上的像素发射光线,找到与该光线相交的近年实体的交点,要是该点处的外部是散射面,则计算光源间接照射该点发生的颜料;固然该点处表面是镜面或折射面,则再而三向反射或折射方向跟踪另一条光线,如此递归下去,直到光线逃逸出情状或达到设定的最大递归深度。

 

 

葡京娱乐场官网 8

 

图4 经典的亮光追踪:
每像素从眼睛投射射线参预景,并追踪次级光线((shadow, reflection,
refraction),并整合递归

 

 

4.3 分布式光线追踪 Distributed Ray Tracing [1984]

 

Cook于1985年引入蒙特卡洛艺术(Monte Carlomethod)到光泽跟踪世界,将经典的光明跟踪办法扩大为分布式光线跟踪算法(Distributed
Ray Tracing),又叫做随机光线追踪(stochasticray
tracing),能够一成不变更加多的效率,如金属光泽、软阴影、景深( Depthof
Field)、运动模糊等等。

 

 

4.3 分布式光线追踪 Distributed Ray Tracing [1984]

 

Cook于1982年引入蒙特Carlo艺术(Monte Carlomethod)到光泽跟踪世界,将经典的光辉跟踪办法扩张为分布式光线跟踪算法(Distributed
Ray Tracing),又叫做随机光线追踪(stochasticray
tracing),能够依样画葫芦更多的意义,如金属光泽、软阴影、景深( Depthof
菲尔德)、运动模糊等等。

 

 

4.4 渲染方程 The Rendering Equation [1986]

在前任的讨论基础上,Kajiya于一九八九年更为树立了渲染方程的论争,并选择它来诠释光能传输的产生的各样现象。这一方程描述了情景中光能传输达到稳定情状未来,物体表面有些点在某些方向上的辐射率(Radiance)与入射辐射亮度等的涉嫌。

 

能够将渲染方程通晓为全局光照算法的功底,Kajiya在1990年先是次将渲染方程引入图形学后,随后出现的诸多大局光照的算法,都是以渲染方程为底蕴,对其进展简化的求解,以高达优化质量的指标。渲染方程依据光的物历史学原理,以及能量守恒定律,完美地讲述了光能在地方中的传播。很多真实感渲染技术都以对它的二个接近。渲染方程在数学上的象征如下:

                                   
  葡京娱乐场官网 9

 

葡京娱乐场官网 10

 

图5 渲染方程描述了从x点沿某一趋势看的光放射的总和。

 

 

4.4 渲染方程 The Rendering Equation [1986]

在前任的商量功底上,Kajiya于一九八八年更是建立了渲染方程的争鸣,并动用它来诠释光能传输的发生的各个场馆。这一方程描述了风貌中光能传输达到稳定景况现在,物体表面某些点在有些方向上的辐射率(Radiance)与入射辐射亮度等的涉嫌。

 

可以将渲染方程驾驭为大局光照算法的底蕴,Kajiya在一九八七年第3遍将渲染方程引入图形学后,随后出现的众多大局光照的算法,都以以渲染方程为根基,对其进展简化的求解,以达到优化质量的指标。渲染方程依照光的物农学原理,以及能量守恒定律,完美地描述了光能在万象中的传播。很多真实感渲染技术都以对它的多少个像样。渲染方程在数学上的表示如下:

                                   
  葡京娱乐场官网 11

 

葡京娱乐场官网 12

 

图5 渲染方程描述了从x点沿某一样子看的光放射的总数。

 

 

4.5 路径追踪 Path Tracing [1986]

 

Kajiya也于一九八七年提议了路线追踪算法的见解,开创了依照蒙特Carlo的大局光照这一天地。依据渲染方程,
Kajiya
建议的路径追踪方法是第二个无偏(Unbiased)的渲染方法。路径追踪的大旨情维是从视点发出一条光线,光线与实身体表面面相交时依照表面包车型地铁质量属性持续采集样品三个大方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出现象),然后用蒙特Carlo的法门,总括其进献,作为像素的颜色值。

 

 

4.5 路径追踪 Path Tracing [1986]

 

Kajiya也于一九九零年建议了门道追踪算法的见识,开创了依照蒙特Carlo的全局光照这一世界。依照渲染方程,
Kajiya
提出的门道追踪方法是首先个无偏(Unbiased)的渲染方法。路径追踪的中坚思想是从视点发出一条光线,光线与实体表面相交时依照表面包车型大巴材质属性持续采集样品1个方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出处境),然后用蒙特Carlo的办法,计算其贡献,作为像素的颜色值。

 

 

4.6 双向路径追踪 Bidirectional Path Tracing [1993,1994]

双向路径追踪(Bidirectional Path
Tracing)的核心理想是同时从视点、光源打出射线,经过多少次反弹后,将视点子路径(
eye path) 和光源子路径( light path)
上的终端连接起来(连接时索要测试可知性),以非常的慢发生许多门路。那种方法能够发出一些观念路线追踪难以采样到的光路,所以能够很实用地下落噪音。
进一步的, [Veach
1997]将渲染方程改写成对路径积分的花样,允许各个门道采集样品的法子来求解该积分。

 

 

4.6 双向路径追踪 Bidirectional Path Tracing [1993,1994]

双向路径追踪(Bidirectional Path
Tracing)的主干思维是同时从视点、光源打出射线,经过多少次反弹后,将视点子路径(
eye path) 和光源子路径( light path)
上的极限连接起来(连接时索要测试可知性),以极快发生不少路线。那种方法能够爆发局地古板路线追踪难以采集样品到的光路,所以能够很实用地下落噪音。
进一步的, [Veach
1997]将渲染方程改写成对路径积分的花样,允许多样路子采集样品的方式来求解该积分。

 

 

4.7 梅特Polly斯普照传输 Metropolis Light Transport [1997]

 

埃里克 Veach等人于一九九八年提议了梅特波莉斯普照传输(Metropolis Light
Transport,常被简称为MLT)方法。路径追踪( Path
Tracing)中叁当中央难点就是怎么着去尽量多的采样一些进献大的路径,而该措施可以自适应的生成进献大的门路,一句话来说它会避开进献小的门道,而在进献大的门道附近做更加多一些的研讨,通过极度的多变方法,生成一些新的路子,那些部分的不二法门的进献往往也很高。
与双向路径追踪相比较, MLT
越发鲁棒,能处理各样繁复的景色。比如说整个场景只通过门缝透进来的直接光照亮,此时观念的门径追踪方法因为难以采集样品到通过门缝的如此的独特路径而发生相当大的噪音。

 

 

 

 

 

4.7 梅特波莉斯普照传输 Metropolis Light Transport [1997]

 

埃里克 Veach等人于1996年建议了梅特Polly斯普照传输(Metropolis Light
Transport,常被简称为MLT)方法。路径追踪( Path
Tracing)中一个主导难点正是怎么去尽量多的采集样品一些贡献大的路线,而该办法能够自适应的成形进献大的路子,一句话来说它会避开进献小的不二法门,而在贡献大的途径附近做越多一些的切磋,通过特有的形成方法,生成一些新的门径,这么些有些的门径的贡献往往也很高。
与双向路径追踪相比, MLT
越发鲁棒,能处理各类复杂的景色。比如说整个场景只经过门缝透进来的直接光照亮,此时观念的路子追踪方法因为难以采集样品到通过门缝的这样的特有路径而爆发格外大的噪音。

 

 

 

 

 

伍 、光线追踪 Ray Tracing

 

 

光线追踪(Ray
tracing)是三维总计机图形学中的特殊渲染算法,跟踪从眼睛产生的光柱而不是光源发出的强光,通过如此一项技艺转移编排好的景色的数学模型显现出来。那样获得的结果类似于光线投射与扫描线渲染方法的结果,但是那种办法有更好的光学效果,例如对于反射与折射有更规范的模拟效果,并且功能极度高,所以当追求高品质的功用时平日选用那种方法。

 

上文已经涉及过,惠特ted于一九七八年提议了利用光线跟踪来在电脑上生成图像的法门,这一艺术后来也被喻为经典光线跟踪办法、递归式光线追踪方法,或
Whitted-style
光线跟踪办法。其主要思想是从视点向成像平面上的像素发射光线,找到与该光线相交的近年实体的交点,假诺该点处的表面是散射面,则总结光源直接照射该点发生的颜色;尽管该点处表面是镜面或折射面,则持续向反射或折射方向跟踪另一条光线,如此递归下去,直到光线逃逸出境况或达到设定的最大递归深度。

 

以下那张图示能够很好的表明光线追踪方法的思绪:

葡京娱乐场官网 13

 

图6 Ray Tracing Illustration First Bounce

 

葡京娱乐场官网 14

 

图7 光线追踪渲染出的效能图1

 

葡京娱乐场官网 15

 

图8 光线追踪渲染出的功能图2

 

葡京娱乐场官网 16

 

图9 光线追踪渲染效果图 @Caustic-Graphics,Inc

 

葡京娱乐场官网 17

图10 典型的光辉追踪渲染效果图

 

光明跟踪的多个最大的败笔就是性质,要求的计算量相当伟大,以至于最近的硬件很难满足实时光线追踪的需要。古板的光栅图形学中的算法,利用了数量的一致性从而在像素之间共享计算,可是光线跟踪平日是将每条光线当作独立的光芒,每趟都要重新总计。可是,那种独立的做法也有一些别样的帮助和益处,例如能够接纳越多的光柱以抗混叠现象,并且在须要的时候可以狠抓图像品质。就算它不易地处理了交互反射的景象以及折射等光学效果,不过古板的亮光跟踪并不一定是动真格的效果图像,唯有在10分类似或然完全达成渲染方程的时候才能完结真正的实在效果图像。由于渲染方程描述了种种光束的大体功效,所以达成渲染方程能够博得真正的实事求是效果,然则,考虑到所须求的盘算能源,这一般是十分的小概落到实处的。于是,全部能够兑现的渲染模型都必须是渲染方程的近乎,而光辉跟踪就不自然是最棒立见成效的艺术。包含光子映射在内的部分主意,都以依照光线跟踪落到实处部分算法,可是能够获得更好的功用。

 

用一套光线追踪的伪代码,停止这一节的牵线:

 

[cpp] view
plain
 copy

 

  1. for each pixel of the screen  
  2. {  
  3.     Final color = 0;  
  4.         Ray = { starting point, direction };  
  5.         Repeat  
  6.     {  
  7.         for each object in the scene  
  8.             {  
  9.                     determine closest ray object/intersection;  
  10.             }  
  11.         if intersection exists  
  12.         {  
  13.                 for each light inthe scene  
  14.                 {  
  15.                         if the light is not in shadow of anotherobject  
  16.                         {  
  17.                             addthis light contribution to computed color;  
  18.                         }  
  19.         }  
  20.     }  
  21.         Final color = Final color + computed color * previous reflectionfactor;  
  22.         reflection factor = reflection factor * surface reflectionproperty;  
  23.         increment depth;  
  24.       } until reflection factor is 0 or maximumdepth is reached  
  25. }  

 

 

 

 

 

 

 

 

 

⑤ 、光线追踪 Ray Tracing

 

 

光明追踪(Ray
tracing)是三维总结机图形学中的特殊渲染算法,跟踪从眼睛发生的光华而不是光源发出的光芒,通过那样一项技术转移编排好的光景的数学模型显现出来。那样得到的结果类似于光线投射与扫描线渲染方法的结果,然则那种办法有更好的光学效果,例如对于反射与折射有更精确的效仿效果,并且效能尤其高,所以当追求高品质的功效时经常利用那种情势。

 

上文已经提到过,惠特ted于一九七九年提出了采纳光线跟踪来在计算机上生成图像的法子,这一措施后来也被号称经典光线跟踪办法、递归式光线追踪方法,或
Whitted-style
光线跟踪办法。其根本考虑是从视点向成像平面上的像素发射光线,找到与该光线相交的近日实体的交点,借使该点处的外部是散射面,则计算光源直接照射该点爆发的颜料;如若该点处表面是镜面或折射面,则接二连三向反射或折射方向跟踪另一条光线,如此递归下去,直到光线逃逸出现象或达到设定的最大递归深度。

 

以下那张图示可以很好的印证光线追踪方法的思路:

葡京娱乐场官网 18

 

图6 Ray Tracing Illustration First Bounce

 

葡京娱乐场官网 19

 

图7 光线追踪渲染出的法力图1

 

葡京娱乐场官网 20

 

图8 光线追踪渲染出的功效图2

 

葡京娱乐场官网 21

 

图9 光线追踪渲染效果图 @Caustic-Graphics,Inc

 

葡京娱乐场官网 22

图10 典型的光线追踪渲染效果图

 

光明跟踪的3个最大的缺陷正是性质,需求的计算量至极了不起,以至于方今的硬件很难满意实时光线追踪的需求。守旧的光栅图形学中的算法,利用了数量的一致性从而在像素之间共享总计,可是光线跟踪常常是将每条光线当作独立的光线,每一回都要双重计算。但是,那种独立的做法也有一对别的的帮助和益处,例如能够应用更加多的光明以抗混叠现象,并且在供给的时候能够加强图像质量。就算它不易地处理了交互反射的光景以及折射等光学效果,然而守旧的光泽跟踪并不一定是实在效果图像,唯有在卓殊接近可能完全达成渲染方程的时候才能促成真正的真实性效果图像。由于渲染方程描述了各类光束的情理意义,所以实现渲染方程能够得到真正的忠实际效果果,不过,考虑到所须求的一个钱打二十七个结能源,那日常是无力回天实现的。于是,全数能够实现的渲染模型都不可能不是渲染方程的近乎,而光辉跟踪就不必然是然则有效的点子。包涵光子映射在内的一些办法,都是依照光线跟踪落实部分算法,不过能够取得更好的效果。

 

用一套光线追踪的伪代码,截至这一节的介绍:

 

[cpp] view
plain
 copy

 

  1. for each pixel of the screen  
  2. {  
  3.     Final color = 0;  
  4.         Ray = { starting point, direction };  
  5.         Repeat  
  6.     {  
  7.         for each object in the scene  
  8.             {  
  9.                     determine closest ray object/intersection;  
  10.             }  
  11.         if intersection exists  
  12.         {  
  13.                 for each light inthe scene  
  14.                 {  
  15.                         if the light is not in shadow of anotherobject  
  16.                         {  
  17.                             addthis light contribution to computed color;  
  18.                         }  
  19.         }  
  20.     }  
  21.         Final color = Final color + computed color * previous reflectionfactor;  
  22.         reflection factor = reflection factor * surface reflectionproperty;  
  23.         increment depth;  
  24.       } until reflection factor is 0 or maximumdepth is reached  
  25. }  

 

 

 

 

 

 

 

 

 

⑥ 、路径追踪 Rath Tracing

 

 

路线追踪(Rath
Tracing)方法由Kajiya在一九八九年提出,是率先个无偏(Unbiased)的渲染方法。

途径追踪方法的主干考虑是从视点发出一条光线,光线与实体表面相交时依照表面包车型客车材质属性持续采集样品三个大方向,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出情形),然后用蒙特卡洛措施,总结光线的进献,作为像素的颜色值。而采纳蒙特Carlo方法对积分的求解是无偏的,只要时刻丰盛长,最后图像能消灭到二个不利的结果。

 

简不难单的话,路径追踪 = 光线追踪+ 蒙特卡洛方法。

 

此处有三个用99行代码完毕途径追踪算法的一个简约全局光照渲染器,有趣味的情侣能够展开摸底:

http://www.kevinbeason.com/smallpt/

 

葡京娱乐场官网 23 

 

图11 基于路径追踪渲染的效能图

 

葡京娱乐场官网 24

 

图12 基于路径追踪完成的次表面散射渲染效果图  ©Photorealizer

 

 葡京娱乐场官网 25

 

图13 基于路径追踪渲染的效能图 ©http://www.pathtracing.com

 

 葡京娱乐场官网 26

 

图14 基于路径追踪渲染的遵循图 ©NVIDIA

 

 

 

 

 

陆 、路径追踪 Rath Tracing

 

 

路线追踪(Rath
Tracing)方法由Kajiya在1988年提议,是第②个无偏(Unbiased)的渲染方法。

途径追踪方法的骨干考虑是从视点发出一条光线,光线与实体表面相交时依据表面包车型地铁材料属性持续采集样品1个势头,发出另一条光线,如此迭代,直到光线打到光源上(或逃逸出现象),然后用蒙特Carlo措施,计算光线的贡献,作为像素的颜色值。而采纳蒙特Carlo方法对积分的求解是无偏的,只要时刻充足长,最后图像能消灭到3个不错的结果。

 

大致来说,路径追踪 = 光线追踪+ 蒙特Carlo方法。

 

此处有3个用99行代码完毕路径追踪算法的2个不难全局光照渲染器,有趣味的情侣能够开始展览询问:

http://www.kevinbeason.com/smallpt/

 

葡京娱乐场官网 27 

 

图11 基于路径追踪渲染的效劳图

 

葡京娱乐场官网 28

 

图12 基于路径追踪实现的次表面散射渲染效果图  ©Photorealizer

 

 葡京娱乐场官网 29

 

图13 基于路径追踪渲染的意义图 ©http://www.pathtracing.com

 

 葡京娱乐场官网 30

 

图14 基于路径追踪渲染的功效图 ©NVIDIA

 

 

 

 

 

七、Ray Casting , Ray Tracing,PathTracing区别

 

 

初学者往往会弄不领会光线投射(Ray Casting ),光线追踪(Ray
Tracing),路径追踪(Path Tracing)三者的的不一样,龚大@龚敏敏
https://www.zhihu.com/question/29863225这个答案中的回答已经很精辟,本文就直接引用了过来:

 

 

  • Ray
    Tracing:那实在是个框架,而不是个艺术。符合这几个框架的都叫raytracing。那些框架正是从视点发射ray,与实体相交就依照规则反射、折射或收到。境遇光源大概走太远就停住。一般的话运算量极大。
  • Ray Casting:其实那一个和volumetric能够脱钩。它正是ray
    tracing的首先步,发射光线,与实体相交。那些能够做的飞跃,在Doom
    1里用它来做遮挡。
  • Path Tracing:是ray tracing +
    蒙特Carlo法。在交接后会选贰个随便方向接续跟踪,并遵照B大切诺基DF总计颜色。运算量也相当大。还有一对小分类,比如Bidirectional
    path tracing。

 

 

 

文末,简单聊一下环境光遮蔽,AO。

 

 

 

 

 

七、Ray Casting , Ray Tracing,PathTracing区别

 

 

初学者往往会弄不理解光线投射(Ray Casting ),光线追踪(Ray
Tracing),路径追踪(Path Tracing)三者的的分别,龚大@龚敏敏
https://www.zhihu.com/question/29863225这个答案中的回答已经很精辟,本文就直接引用了过来:

 

 

  • Ray
    Tracing:这实际上是个框架,而不是个法子。符合这几个框架的都叫raytracing。那一个框架便是从视点发射ray,与实体相交就依据规则反射、折射或接收。蒙受光源只怕走太远就停住。一般的话运算量相当的大。
  • Ray Casting:其实这一个和volumetric能够脱钩。它就是ray
    tracing的率先步,发射光线,与实体相交。那一个能够做的全速,在Doom
    1里用它来做遮蔽。
  • Path Tracing:是ray tracing +
    蒙特Carlo法。在交接后会选一个即兴方向接续跟踪,并依照B帕杰罗DF总计颜色。运算量也非常的大。还有一对小分类,比如Bidirectional
    path tracing。

 

 

 

文末,简单聊一下环境光遮蔽,AO。

 

 

 

 

 

捌 、环境光遮蔽 Ambient Occlusion

 

 

环境光遮蔽(Ambient
Occlusion,简称AO)是全局光照亮的一种恍若替代品,能够生出首要的视觉明暗效果,通过描写物体之间由于遮挡而产生的影子,
可以更好地捕捉参加景中的细节,能够消除漏光,阴影漂浮等难点,改良场景中角落、锯齿、裂缝等细小物体阴影不清

晰等难题,增强气象的深度和立体感。

能够说,AO 特效在直观上给玩家的主要感觉展现在画面包车型大巴明暗程度上,未打开 AO
特效的镜头光照稍亮一些;而打开环境光遮蔽特效之后,
局部的底细画面更是是暗部阴影会特别明显有个别。

 

Ambient Occlusion的细分体系有:

 

  • SSAO-Screen space ambient occlusion
  • SSDO-Screen space directional occlusion
  • HDAO-High Definition Ambient Occlusion
  • HBAO+-Horizon Based Ambient Occlusion+
  • AAO-Alchemy Ambient Occlusion
  • ABAO-Angle Based Ambient Occlusion
  • PBAO
  • VXAO-Voxel Accelerated Ambient Occlusion

 

 

貌似而言,Ambient Occlusion最常用方法是SSAO,如Unreal Engine
4中的AO,便是用SSAO落成。

 

接下去贴一些和AO相关的图,结束那篇作品。

 

葡京娱乐场官网 31

 

图15 Scene without Ambient Occlusion  ©NVIDIA

 

 葡京娱乐场官网 32

 

图16 Ambient Occlusion Only

 

葡京娱乐场官网 33

 

图17 Scene with Ambient Occlusion

 

 葡京娱乐场官网 34

 

图18 使用环境光遮蔽制作人物的步骤

 

葡京娱乐场官网 35

图19 一张典型的环境光遮蔽的渲染图

葡京娱乐场官网 36

 

图20 有无环境光遮蔽渲染效果比较图示

 

 

 

 

 

⑧ 、环境光遮蔽 Ambient Occlusion

 

 

环境光遮蔽(Ambient
Occlusion,简称AO)是大局光照亮的一体系似替代品,能够爆发首要的视觉明暗效果,通过描写物体之间由于遮挡而发出的黑影,
能够更好地捕捉出席景中的细节,能够化解漏光,阴影漂浮等题材,革新场景中角落、锯齿、裂缝等细小物体阴影不清

晰等题材,增强气象的深度和立体感。

能够说,AO 特效在直观上给玩家的重点感觉展示在画面包车型大巴明暗程度上,未开启 AO
特效的镜头光照稍亮一些;而开启环境光遮蔽特效之后,
局地的细节画面越发是暗部阴影会越发可想而知有个别。

 

Ambient Occlusion的划分体系有:

 

  • SSAO-Screen space ambient occlusion
  • SSDO-Screen space directional occlusion
  • HDAO-High Definition Ambient Occlusion
  • HBAO+-Horizon Based Ambient Occlusion+
  • AAO-Alchemy Ambient Occlusion
  • ABAO-Angle Based Ambient Occlusion
  • PBAO
  • VXAO-Voxel Accelerated Ambient Occlusion

 

 

貌似而言,Ambient Occlusion最常用方法是SSAO,如Unreal Engine
4中的AO,正是用SSAO达成。

 

接下去贴一些和AO相关的图,甘休那篇小说。

 

葡京娱乐场官网 37

 

图15 Scene without Ambient Occlusion  ©NVIDIA

 

 葡京娱乐场官网 38

 

图16 Ambient Occlusion Only

 

葡京娱乐场官网 39

 

图17 Scene with Ambient Occlusion

 

 葡京娱乐场官网 40

 

图18 使用环境光遮蔽制作人物的步骤

 

葡京娱乐场官网 41

图19 一张典型的环境光遮蔽的渲染图

葡京娱乐场官网 42

 

图20 有无环境光遮蔽渲染效果相比较图示

 

 

 

 

 

九 、其余参考

 

 

[1] http://15462.courses.cs.cmu.edu/fall2015/lecture/globalillum

[2] https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/AmbientOcclusion/

[3] https://en.wikipedia.org/wiki/Ambient_occlusion

[4] https://www.ics.uci.edu/~gopi/CS211B/RayTracing%20tutorial.pdf

[5] http://www.cnblogs.com/hielvis/p/6371840.html

[6] http://blog.csdn.net/thegibook/article/details/53058206

[7] http://www.di.ubi.pt/~agomes/cig/teoricas/02-raycasting.pdf

[8] https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2012/

玖 、其余参考

 

 

[1] http://15462.courses.cs.cmu.edu/fall2015/lecture/globalillum

[2] https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/AmbientOcclusion/

[3] https://en.wikipedia.org/wiki/Ambient_occlusion

[4] https://www.ics.uci.edu/~gopi/CS211B/RayTracing%20tutorial.pdf

[5] http://www.cnblogs.com/hielvis/p/6371840.html

[6] http://blog.csdn.net/thegibook/article/details/53058206

[7] http://www.di.ubi.pt/~agomes/cig/teoricas/02-raycasting.pdf

[8] https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-837-computer-graphics-fall-2012/