〇、概述

路径形式的LTE:

由这个方程得知,要求解从撞击点p1返回到相机p0的辐射率,需要解决两个问题:

问题1,怎么对无穷条路径返回的辐射率进行求和?问题2,怎么求某一条路径返回的辐射率?

一、怎么求和?

可以使用Russian roulette方法。

参考: Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)

那么,求和的式子等价于:


这里的qn即为“Q122”中提到的beta(n)。

二、怎么求某一条路径返回的辐射率?

2.1 构建递增的路径

光线从相机p0出发,撞击到场景中最近距离的某表面上的p1;
对p1点的BSDF1进行采样,得到一个方向wi1;
光线从p1出发,沿着wi向外撞击场景中最近距离的某表面上的p2;
对p2点的BSDF2进行采样,得到一个方向wi2;
光线从p2出发,沿着wi2向外撞击场景中最近距离的某表面上的p3;
……

当光线到达p1是得到长度为1的路径;
当光线到达p2是得到长度为2的路径;
当光线到达p3是得到长度为3的路径;
……

发现:
1-长度为n的路径是在长度为n-1的路径的基础上构建得到的。
2-当完成长度为n的路径的构建时,其实在这过程中已经完成了n条长度一次递增的路径的构建。
3-相邻两个撞击点p(n-1)、p(n)是彼此可见的,所以路径形式的LTE中的几何因子G中的可见因子V是等于1的。

考虑到,在构建长度为n的路径的过程中在前面(n-1)个撞击点(p1、p2、……、p(n-1))处都是基于立体角对BSDF进行采样的(最后一个点是打在光源上,对光源还是基于面积的采样)。

所以,需要将长度为n的路径上返回的光的表达式中的前(n-1)个积分换成立体角形式:

所以,

三、C++代码实现

特别注意的是:
单条路径的最后一个顶点p(n)是在光源上,所以p(n-1)处的渲染即为“直接光照”。
直接调用 Q120:PBRT-V3,“直接光照”积分器(14.3章节)中实现的UniformSampleOneLight()

另外,对for()循环整体的理解截图如下:

接下来直接看PathIntegrator::Li()




(缺失的这段代码是subsurface相关,略去先)

四、总结

PathIntegrator的大概步骤总结如下:

1,构建递增的路径

当完成长度为n的路径的构建时,其实在这过程中已经完成了n条长度一次递增的路径的构建。

2,求长度为n的路径的贡献

用式子14.19求出长度为n-1的路径对应的β,然后用“直接光照”的方式求得长度为n的路径的贡献。

3,所有长度的路径的贡献的累加

PBRT-V3提供的程序中巧妙的地方在于:一边构建路径,一边进行相应路径贡献的累加;构建完成时,累加也完成了。

4,Russian Roulette终止继续构建路径


内容概要的另一个版本:


另外,

Q124:PBRT-V3,“路径追踪”积分器(14.5章节)相关推荐

  1. Q136:PBRT-V3,双向路径追踪(Bidirectional Path Tracing)(16.3章节)

    之前了解了路径追踪,参考如下: Q124:PBRT-V3,"路径追踪"积分器(14.5章节) 接下来,先回忆一下Path Tracing,然后具体了解Bidirectional P ...

  2. GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪

    GAMES101课程学习笔记-Lec 14(2)~16:Ray Tracing(2) BRDF.渲染方程.全局光照.路径追踪 0 引入--辐射度量学概述 1 相关概念 1.1 Radiant Ener ...

  3. 重要性采样和多重重要性采样在路径追踪中的应用

    重要性采样和多重重要性采样在路径追踪中的应用 1 蒙特卡洛路径追踪简要回顾 1.1 算法主要流程 1.2 半球面均匀采样方法 2 重要性采样的运用 2.1 简单例子与基本概念 2.2 路径追踪中的重要 ...

  4. 闫令琪:Games101 现代计算机图形学-光线追踪(三):渲染方程和路径追踪path ray tracing 作业Assignment07解析

    文章目录 0 whitted光线追踪的局限 1 辐射度量学 1.1 光线的表示 Radiance 1.2 物体表面上一个点的亮度 Irradiance 1.3 BRDF(Bidirectional R ...

  5. 计算机图形学【GAMES-101】11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  6. 计算机图形学【GAMES-101】9、蒙特卡洛路径追踪(Path Tracing)(光源采样)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  7. 光线追踪 路径追踪_Excel减肥追踪器

    光线追踪 路径追踪 Did you eat too many Christmas cookies over the holidays? An extra dessert or two? If it's ...

  8. 19、计算机图形学——蒙特卡洛路径追踪

    一.蒙特卡洛积分 蒙特卡洛积分主要解决的问题是当被积函数很难被以函数的形式表示时,需要对该被积函数指定概率密度函数并进行多次采样.然后用采样得到的局部面积除以局部采样点的概率来近似得到整体的面积(积分 ...

  9. Q120:PBRT-V3,“直接光照”积分器(14.3章节)(翻译不下去了)

    一直没有发"翻译类"的博文,借此机会,翻译PBRT-V3的14.3章节. 14.3 Direct Lighting(直接光照) 在介绍完全一般性的光传播方程之前,我们先实现Dire ...

最新文章

  1. HDU1285拓扑排序模版题
  2. android ui布局适配,Android适配全面总结(一)----屏幕适配
  3. Python笔记(2) Python基础
  4. Java数据解析之XML(原创)
  5. ORACLE RAC运行在300G内存以上需要考虑的东西
  6. 不宜佩带佛像,宜佩带佛号、咒语
  7. LCA问题——倍增算法,Tarjan算法讲解
  8. 大家好,我是达叔,我创建了一个做项目的星球【达叔与他的朋友们】,来吗?...
  9. Unity开发 Photon Pun 多人游戏组件
  10. html文件无法通过复制粘贴传输,电脑不能复制粘贴的三种解决办法
  11. AVR单片机用progisp下载报错flash verify error at :0h
  12. qml 应用程序图标设置和打包——qml
  13. 珠海云服务器散热器定做,我家云之瞎乱改造(散热+扩存)篇一
  14. 做大数据分析时,需要考虑哪些因素?
  15. 【技术分享】 ​IE浏览器漏洞利用技术的演变 ( 二 )
  16. [nlp] 车载语音助手
  17. 18.Socket网络编程
  18. 题解报告——Weed
  19. 老子道德经全文_番外篇
  20. Echarts使用geojson地理坐标地图地名label标签位置不居中调整的解决方案

热门文章

  1. delphi BLE 后台
  2. ACL in 和 out
  3. 小话设计模式五:模板方法模式
  4. 【To Understand! 回文串6 KMP算法】LeetCode 214. Shortest Palindrome
  5. LeetCode 445. Add Two Numbers II
  6. caffe-ssd中非极大值抑制NMS的原理和实现方法
  7. C#解析json和xml数据
  8. 论文笔记(3):STC: A Simple to Complex Framework for Weakly-supervised Semantic Segmentation
  9. .NET CORE——Console中使用依赖注入
  10. 专业运维配的vsftpd.conf