Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
来源:互联网 发布:长沙大火知乎 编辑:程序博客网 时间:2024/05/16 12:49
〇、引入
前续:
Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节)
Q133:PBRT-V3,BSSRDF的采样(15.4章节)
在Q132、Q133中,都有用到“BSSRDTable对象中的一个叫做“profile”的Sr表”。
根据||po-pi||的值从这个表里获得Sr的值。
那么,问题来了:这个Sr表存放的具体是什么呢?是在什么时候初始化的呢?
这个就是这一章节的内容。Sr表中存放的就是介质对应的次表面散射的数据。
在给定散射介质的相关属性的情况下,Sr可以精确(近似)地描述介质的次表面散射。
考虑两种情况:
情况一,光线在次表面中发生多次散射后离开表面;
情况二,光线在次表面中发生一次散射后离开表面;
对于这两种情况,计算次表面散射的方式是不同的。
情况一,光线在次表面中发生多次散射后离开表面时,光线的强度衰减大,光线的方向是随机的;
情况二,光线在次表面中发生一次散射后离开表面时,光线的强度衰减小,光线的方向不是随机的。
一、光线在次表面中发生多次散射
针对这种情况,Habel等人在2013年提出了“Photon Beam Diffusion”方式来进行计算。
大致思路如下:
1,对介质的各种属性进行简化和假设;
2,由光在介质中的传播方程推导出扩散方程;
3,在各种情况下,求解“扩散方程”;
4,在步骤3的基础上计算得到“经过次表面散射后离开表面时的光线和入射光线的关系”(即Sr)。
后续,是个人写的笔记,有点乱。
前面几张截图是阅读过程中记下的;
后面两张截图是后面总结的:从未知到已知反推的计算过程。(类似于解应用题:“要得到这个,需要先知道什么”,然后,反复这个过程,直到反推到已知条件)
接下来两张截图是:从未知到已知反推的计算过程。
相关代码截图:
二、光线在次表面中发生一次散射
推导过程,此处不再罗列。看一张体现基本思路的图。
对应代码截图:
三、填充BSSRDFTable(包含Sr数据)
这里主要需要注意的是:对r、rho的采样。
相关代码截图如下:
四、设置散射属性
It is remarkably unintuitive to set values of the absorption and scattering coefficients σa and σs to achieve a desired visual result.
相关代码截图:
五、其他说明
个人觉得,这一章节的数学推导有点复杂。好些式子的推导都不是很明白。
涉及的数学知识比较多:高阶微分方程求解、delta函数等等。
截至当前,只是理解了作者的大致思路。惭愧!继续努力!fighting!
- Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
- Unity3d shader之次表面散射(Subsurface Scattering)
- 次表面散射(SubSurface Scattering) Shader
- 次表面散射Subsurface Scattering(SSS)
- Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节)
- Unity5 Screen-Space Subsurface Scattering屏幕空间次表面散射SSSSS
- Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
- Q119:PBRT-V3,“复合重要性采样”(13.10章节)
- Q120:PBRT-V3,“直接光照”积分器(14.3章节)
- Q124:PBRT-V3,“路径追踪”积分器(14.5章节)
- Q133:PBRT-V3,BSSRDF的采样(15.4章节)
- Q139:PBRT-V3,Metropolis Light Transport (MLT)(16.4章节)
- Q130:PBRT-V3,非均匀介质的采样(11.3.3章节、15.2.2章节)
- Q120:PBRT-V3,“直接光照”积分器(14.3章节)(翻译不下去了)
- Q121:PBRT-V3,光传播方程(The Light Transport Equation)(14.4章节)
- Q135:PBRT-V3,随机渐进光子映射(Stochastic Progressive Photon Mapping)(16.2章节)
- Q136:PBRT-V3,双向路径追踪(Bidirectional Path Tracing)(16.3章节)
- Q138:PBRT-V3,伪随机数发生器(pseudo-random number generator,RNG)(A.1.2章节)
- Spring、Quartz——整合注意事项
- vue第二篇之指令
- Aptana Studio3的安装问题
- Java中迭代器的使用(Iterator)
- binarySearchTree 简单链表实现
- Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
- Treap 模板
- 西部开源运维学习unit8
- B1032
- 算法复杂度分析
- 百度翻译接口JAVA版
- Oracle客户端(instantclient)以及plsql的安装与配置
- .NET 术语
- 关于阶乘的面试题总结