实时次表面散射
Real-Time Subsurface Scattering
蜡、皮肤、牛奶等高散射固体中,光在离入射点不远处重新射出;当偏移大于一个像素时就不能再用 BRDF 表示。实时方法从便宜的包裹光照、法线模糊、预积分皮肤,到纹理空间/屏幕空间扩散,再到针对大尺度散射的深度图技术(RTR4 14.6 节)。
单次与多次散射
光路按散射次数分组。皮肤等材质中单次散射较弱、多次散射主导,因此多数技术侧重多次散射;穿过材质的路径长度决定吸收量。Stam 指出多次散射可建模为扩散过程,Jensen 等据此推出解析 BSSRDF(BRDF 对全局次表面散射的推广),扩散对出射亮度有空间模糊效果,只作用于漫反射;镜面反射发生在表面,不受影响。
方法总览
| 方法 | 思路 | 优缺点 |
|---|---|---|
| 包裹光照 | 面光源近似的包裹光照 + 颜色偏移(皮肤偏红)模拟吸收 | 最简单;软化明暗过渡;Kolchin 指出依赖曲率并推出物理版本,较贵 |
| 法线模糊 | 法线贴图只用于镜面,漫反射用光滑法线;Ma 等实测发现漫反射像用了模糊法线,且模糊程度随 R/G/B 不同 | 几乎零成本;可用单张法线贴图调 mip 级,但失去颜色偏移 |
| 预积分皮肤(Penner) | 散射和透射积分进 2D LUT:轴一 ,轴二曲率 (逐三角形,需离线烘焙平滑);细节法线按各通道扩散剖面模糊,优化为一张平滑法线贴图与顶点法线按通道混合;用阴影半影剖面偏移 LUT 坐标跨越阴影边界 | 快,可逼近纹理空间扩散的质量 |
| 纹理空间扩散(Borshukov 与 Lewis) | 用纹理坐标作光栅化位置把表面辐照度渲染到纹理、模糊、再用于漫反射;皮肤 R 通道滤波更宽,阴影边缘泛红;正确的滤波核中心尖锐、底部宽浅 | d'Eon 与 Luebke 多层多次高斯组合(六个模糊按 RGB 权重线性组合加镜面)效果极好但昂贵;Hable 单个 12 样本核,近看有色带 |
| 屏幕空间扩散(Jimenez) | 正常渲染,模板标记需 SSS 的像素;对辐照度做水平、垂直两遍一维双边模糊 | 多角色一次后处理;近景面部开销大但值得 |
| 深度图技术 | 用光源深度图估计物体内路径长度 | 适合手掌等大尺度散射 |
屏幕空间扩散细节
- 核不能完全可分:要按线性视深度拉伸宽度;双边滤波避免不同深度材质间漏光;还要考虑法线使模糊沿表面切向进行——可分性只是高质量近似。线性深度可存在场景纹理 alpha 中。
- 样本少时近景欠采样,可逐像素旋转核,以噪声换重影,再由 TAA 去噪。
- 只模糊辐照度,不能模糊漫反射率和镜面:分别存缓冲(延迟着色已有反照率缓冲);Gallagher 与 Mittring 用棋盘格把辐照度和镜面存在一张缓冲中省带宽;最后反照率 × 模糊后辐照度 + 镜面。
- 鼻子、耳朵透光:用反向法线 采样背面入射光,乘以由光源阴影贴图深度估计的透射率;锥形前向散射可多次采样阴影贴图,用两个随机偏移样本产生的噪声正好被 SSS 模糊免费滤掉——每光源只多一次深度图采样。
深度图技术
- 理想情况是光线入射和出射都折射并沿路径积分;通常忽略入射折射,只考虑出射方向改变。Hery 用光空间深度图代替光线投射,但多样本太慢;Green 的近似只用一条光线,背面细节可能透出,皮克斯在《料理鼠王》中称其为 gummi lights;深度图不应含多个或高度非凸物体,皮克斯用深阴影贴图规避。
- 半透明阴影贴图(Dachsbacher 与 Stamminger):光空间纹理额外存辐照度和法线,多次采样组合估计多次散射(NVIDIA 皮肤系统用了其变体);Mertens 等改用屏幕空间纹理。
- 树叶:额外映射叶片透射率纹理,背光贡献 乘反照率后叠加。
- Barré-Brisebois 与 Bouchard:每个网格生成灰度局部厚度纹理 (对反向法线 计算的环境光遮蔽取 1 减),近似背面来光的透射率;叠加 , 为近似相位函数的指数, 为次表面反照率,再乘光源颜色、强度与距离衰减。非物理、不守恒,但单 pass 快速可信。
GEA 的视角:基于深度图的次表面散射(卷 II 12.5.9、12.4.4.2–12.4.4.3)
- 光从一点进入表面、在内部散射、再从另一点射出,就是次表面散射,它让人的皮肤、蜡和大理石雕像有"温暖的光晕"。需要用 BRDF 的高级变体 BSSRDF 描述(卷 II 12.5.9)。
- 基于深度图的方法:渲染一张阴影贴图,但不用来判断阴影,而是测量一束光要穿过遮挡物体要走多远。物体背光的一侧加一个人为的漫反射光照项,强度与这段距离成反比,于是物体在背光侧、而且只在较薄的地方微微发光(卷 II 12.5.9)。这与本页「深度图技术」一节(Hery、Green 的光空间深度图近似)是同一类思路,GEA 只给了最简形式。
- GEA 原书小问题:12.5.9 说 BSSRDF 见"12.4.3.4 节",但该节讲的是 Phong BRDF,BSSRDF 实际在 12.3.2.1 和 12.4.4.3 节;同一处把 BSSRDF 展开为 "bidirectional surface scattering…",而 12.3.2.1 与 12.4.4.3 写的是 "subsurface"。
PBRT 的视角:离线渲染中的次表面散射(PBRT 4e 第 14 章延伸阅读)
- PBRT 第 4 版正文不再实现 BSSRDF(在线版保留了基于光子束扩散 Habel 等 2013 的实现);其
VolPathIntegrator可以直接把物体内部当作参与介质做体积路径追踪。书中指出这种"把次表面散射当体积随机游走"的做法在影视生产中越来越常见(Chiang 等 2016b),Wrenninge 等 2017 给出面向艺术控制的模型。 - 历史脉络:Hanrahan–Krueger 1993 首次以体积传输建模(不计从别处入射的光);Jensen 等 2001b 用偶极子扩散(源于 Farrell 等 1992 的组织光学)构造 BSSRDF,Jensen–Buhler 2002 提速;Stam 1995 阐明扩散近似的优势;Křivánek–d'Eon 2014 用零方差随机游走(Dwivedi 采样)让路径贴近表面,d'Eon–Křivánek 2020 进一步改进。
- 与上文实时方法的关系:实时屏幕空间/纹理空间模糊本质上是对扩散剖面(偶极子一类 BSSRDF)的近似卷积;离线随机游走不依赖扩散假设,对薄几何、背光和低反照率更准确,但需要大量样本。
GPU Gems 的视角:多层扩散剖面的实时皮肤(GPU Gems 3 第 14 章)
来源:d'Eon & Luebke《Advanced Techniques for Realistic Real-Time Skin Rendering》;摘录 Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering — d'Eon, Luebke。与上文 RTR4 屏幕空间/预积分皮肤、GEA 深度图表、PBRT 离线 BSSRDF 并列:本章是 Donner–Jensen 多层扩散的 GPU 可分离实现。
镜面:皮肤最外层油性电介质,全光谱约 6% 直接反射且不染色;F0≈0.028(η≈1.4)。用 Kelemen/Szirmay-Kalos(逼近 Torrance–Sparrow)+ Schlick(半向量)+ Beckmann 查找表;Weyrich 分区粗糙度/强度图增加鼻唇等变化。务必在线性空间里保持白色高光(见 显示编码与 sRGB),否则高光发黄。
次表面:单层偶极剖面偏蜡感;三层多极剖面形状才对。把扩散剖面 拟合成高斯和(白人三层模型约 6 个),利用高斯可分离与「高斯卷高斯仍是高斯」,在纹理空间对辐照做层级可分离模糊,最终按 RGB 权重线性合成——把一次不可分离宽核换成约 次采样。拉伸校正纹理(世界坐标屏幕导数)减轻 UV 畸变导致的耳缘渗红。漫反射颜色可前散射/后散射混合(mix=0.5 对应无穷薄吸收层进出各一次)。薄结构(耳)用改装半透明阴影图:存厚度与迎光面 UV,借三维可分离性复用已有模糊纹理做透射。缝合线需特殊处理(关掉散射或复制边界多边形)。同一套高斯和也可加速 HDR bloom。
GPU Gems 的视角:实时次表面散射近似工具箱(GPU Gems 1 第 16 章)
来源:Simon Green《Real-Time Approximations to Subsurface Scattering》;摘录 Chapter 16. Real-Time Approximations to Subsurface Scattering — Simon Green。Gems3 第 14 章皮肤的前传:把包裹光照、深度吸收与纹理空间扩散写成可编程 GPU 配方。
视觉上 SSS 软化明暗、抹掉细表面细节,皮肤在明暗交界偏红(血/组织),薄处(耳、鼻)最明显。包裹光照把漫反射改成 ,可用 LUT 在交界处叠红色并在 alpha 存高光幂次。深度图吸收(Hery):光源视角深度类似阴影图, 估路径长驱动吸收;仅对凸体可靠,背面细节可能「透出来」(gummi lights)。纹理空间扩散(Borshukov–Lewis):顶点着色器用 UV→NDC 展开网格,把光照画进 2D 再可分高斯模糊(皮肤 R 通道更宽)贴回——着色复杂度与屏幕分辨率解耦,要求 UV 无重叠且参数化较均匀。对照上文 Gems3 多层高斯扩散与屏幕空间双边:本章是「教科书入门三板斧」。
出处
- realtime_rendering_4ed.pdf 第 14 章 Volumetric and Translucency Rendering
- Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
- Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 12 章 12.4.4.2–12.4.4.3、12.5.9 节
- PBRT 4e source excerpt: chapter 14 (Light Transport II Volume Rendering)
- Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 14 章 延伸阅读,pbr-book.org/4ed/Light_Transport_II_Volume_Rendering
- Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering — d'Eon, Luebke
- developer.nvidia.com/gpugems/gpugems3/part-iii-rendering/chapter-14-advanced-techniques-realistic-real-time-skin
- Chapter 16. Real-Time Approximations to Subsurface Scattering — Simon Green
- developer.nvidia.com/gpugems/gpugems/part-iii-materials/chapter-16-real-time-approximations-subsurface-scattering