Subsurface scattering 中文就是指的是次表面散射,也就是描述半透明至透明的物体和光相互作用的一种现象,可以想象现实生活中的蜡烛 玉石等等在光照下的颜色。这些物体之所以拥有这样的外观是因为光线进入物体内部后往往经过多次散射才从物体表面另一点射出。与普通的表面反射或者是纯透明材质的折射不同。 次表面散射材质的基于物理的渲染一直是个很难的课题,这是因为在应用光线路径追踪方法去追踪光线时,往往需要追踪几百次上千次的物体内的散射情况,这是个极度昂贵的行为。此外,采样对于次表面材质的计算也是个大问题。后面会说到。

描述次表面散射可以用一个叫BSSRDF的函数来表示,理论上来说对它积分(用Monte Carlo方法) 就可以得到完全物理正确的渲染结果了:

可惜对BSSRDF的积分是要对入射点和出射点之间的整个表面积(A)积分的,这比BRDF的对方向积分要复杂很多,所以直接的暴力Monte Carlo 算法效率实在是太低了。唯一可行的办法是找出物理上正确的数学计算模型。

二、近似模型

对于subsurface scattering媒介的数学模型介绍可以在PBRT书的16章找到,对于渲染技术而言 比较重要的是找出一个合理的并且效果好的计算模型应用于Monte Carlo 光线追踪技术中。现在应用最广泛的Subsurface渲染实现应该都是基于Jenson 大神在2001年的一篇文章“A pratical model for subsurface light transport” 中提出的模型。那么大神的思路是啥呢,其实就是基于一个很简单的事实,就是光在半透明材质中的扩散现象。从物理的角度来说,这是因为高反射率的材质中,光线在经过几百上千次反射后会充满整个物体的内部,如果物质是各向同性的话,就完全可以用扩散现象去近似描述。学过物理的都知道物质的扩散方程,而扩散方程的求解,可比积分BSSRDF简单许多。当然这个解需要很多额外的假设,最后可以得到的解是:

可以看到我们对每一个光线入射点(需要渲染的点)要确定的是出射点的位置和方向便可求出最后的照片结果积分值,而不用考虑这一条路径上的具体情况。

三、采样和多重重要性抽样

从上面的推导很明显可以看出对于渲染流程本身最重要的是确定光线出射点,也就是要对于光线出射点在物体表面采样,这个步骤的难度依然远远大于BRDF的直接对方向采样。迄今为止也有很多方法涌现出来,比如PBRT把物体表面所有的点按分布采出构建成点云然后计算,Jenson则在每一个着色点周围按圆盘进行采样。更准确的方法是在圆球内发射光线寻找和物体表面的交点,将其作为采样点。

单纯的均匀采样是很没有效率的,重要性抽样是减小噪声和加快收敛速度的常见方法,常见的办法是沿某个特定的方向发射光线,去寻找与物体表面的交点。当然,实际上这是一种近似性质的重要性抽样,因为你是否找到采样点,往往和物体表面的形态密切相关。

可改进方面及优化方向:

1. 加上single scattering分量计算,单次散射类似于折射,在高反射率物体中对最终渲染结果影响较小,但是在物体很薄很透时有比较好的效果,可以考虑做混合算法,扩展SSS渲染算法的适应性,比如对薄的物体的渲染。

2.做 multipole的混合模型,这也是Jenson 之后的一个理论,是对很薄的物体在dipole的边界条件不满足时候可以用multipole模型计算。算是一个hybrid的方法。

3.加入photo beam 或者 Virtual ray light 的计算方法,方法类似photon mapping。

转载于:https://www.cnblogs.com/warpengine/p/3456489.html

Subsurface scattering相关推荐

  1. Fast Realtime Subsurface Scattering Skin Rendering

    通过SM3.0的顶点纹理拾取(Vertex Texture Fetch,简称VTF)技术在顶点shader中计算每顶点的Subsurface Scattering,极大的提高了性能,在1024×768 ...

  2. Unity3d 屏幕空间人体皮肤知觉渲染次表面散射Screen-Space Perceptual Rendering Subsurface Scattering of Human Skin...

    之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time ren ...

  3. 次表面散射(Subsurface Scattering)(转)

    次表面散射(Subsurface Scattering) 作者:何咏    日期:2009-2-25   点击:1923 如需转载本文,请声明作者及出处. 次表面散射是光射入非金属材质后再内部发生散射 ...

  4. Unity3d 屏幕空间人体皮肤知觉渲染次表面散射Screen-Space Perceptual Rendering Subsurface Scattering of Human Skin

    之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time ren ...

  5. Subsurface Scattering初探之预积分(Pre-Integrated Subsurface Scattering)的实现及效果

    Subsurface Scattering初探之预积分(Pre-Integrated Subsurface Scattering)的实现及效果 我们知道,类似皮肤,蜡和牛奶等物质在渲染中需要考虑Sub ...

  6. Real-Time Rendering——9.9.2 Scale of Subsurface Scattering and Roughness地下散射和粗糙度的标度

    Some BRDF models for local subsurface scattering take account of surface roughness- typically by usi ...

  7. Fast Subsurface Scattering

    Fast Subsurface Scattering翻译(完整)   1 个附件 1大家好 bebe2000yy 2007-01-29 17:20 Re:XSI Superior系列之Fast Sub ...

  8. Chapter 16. Real-Time Approximations to Subsurface Scattering

    https://developer.download.nvidia.cn/books/HTML/gpugems/gpugems_ch16.html https://developer.nvidia.c ...

  9. 如何加强角色渲染的真实感(self shadow + subsurface scattering + rim lighting)

    最近一直在玩street fighter IV,被其夸张的角色建模.华丽的动作和漂亮的油画效果所震撼.里面的角色,在对手跳起或蹲下时,自己的头部会一直注视着对手:近身时,如果一方发出必杀技,另一方的面 ...

最新文章

  1. CCF C³:创业公司如何面对开源?知乎CTO李大海:谢邀
  2. Docker容器的文件系统管理
  3. spring Transaction Management --官方
  4. avformat_seek_file及其flag含义
  5. 1.9 Java 9增强的自动资源管理
  6. 照片打印预览正常打印空白_小米发布口袋照片打印机,可无墨打印3寸背胶照片...
  7. Linux 守护进程创建原理及简易方法
  8. 线程间通讯《代码》pthread_cond_t
  9. 2021年JavaScript的发展前景如何呢?
  10. Docker搭建RabbitMQ
  11. HDL4SE:软件工程师学习Verilog语言(四)
  12. 机器学习必学十大算法
  13. Uncaught initialization exception thrown by servlet
  14. android sdk 配置出错error: unknown argument --licenses
  15. CCPC 1010 YJJ's Salesman
  16. 大数据开发就业:大数据开发有哪些岗位
  17. 2021年危险化学品经营单位安全管理人员新版试题及危险化学品经营单位安全管理人员实操考试视频
  18. 如何安装Java JDK
  19. IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope
  20. PET图像的SUV计算

热门文章

  1. php mysql项目开源_8个国内知名的PHP开源项目
  2. 青云客php免费,青云客网站管理系统(QYKCMS)
  3. matlab统计分析
  4. python 声音合成_使用python生成/合成声音?
  5. wandb的pip安装、离线安装和基础总结
  6. 三壶问题 java实现
  7. 工业绝缘监测及故障定位解决方案
  8. VS 关于 .sln 文件和 .suo 文件
  9. js烟雾粒子动态网页js特效
  10. windows11安装jdk8