中EN
概念页

实时次表面散射

Real-Time Subsurface Scattering

蜡、皮肤、牛奶等高散射固体中,光在离入射点不远处重新射出;当偏移大于一个像素时就不能再用 BRDF 表示。实时方法从便宜的包裹光照、法线模糊、预积分皮肤,到纹理空间/屏幕空间扩散,再到针对大尺度散射的深度图技术(RTR4 14.6 节)。

单次与多次散射

光路按散射次数分组。皮肤等材质中单次散射较弱、多次散射主导,因此多数技术侧重多次散射;穿过材质的路径长度决定吸收量。Stam 指出多次散射可建模为扩散过程,Jensen 等据此推出解析 BSSRDF(BRDF 对全局次表面散射的推广),扩散对出射亮度有空间模糊效果,只作用于漫反射;镜面反射发生在表面,不受影响。

方法总览

方法思路优缺点
包裹光照面光源近似的包裹光照 + 颜色偏移(皮肤偏红)模拟吸收最简单;软化明暗过渡;Kolchin 指出依赖曲率并推出物理版本,较贵
法线模糊法线贴图只用于镜面,漫反射用光滑法线;Ma 等实测发现漫反射像用了模糊法线,且模糊程度随 R/G/B 不同几乎零成本;可用单张法线贴图调 mip 级,但失去颜色偏移
预积分皮肤(Penner)散射和透射积分进 2D LUT:轴一 n⋅l\mathbf{n}\cdot\mathbf{l},轴二曲率 1/r=∥∂n/∂p∥1/r=\|\partial\mathbf{n}/\partial\mathbf{p}\|(逐三角形,需离线烘焙平滑);细节法线按各通道扩散剖面模糊,优化为一张平滑法线贴图与顶点法线按通道混合;用阴影半影剖面偏移 LUT 坐标跨越阴影边界快,可逼近纹理空间扩散的质量
纹理空间扩散(Borshukov 与 Lewis)用纹理坐标作光栅化位置把表面辐照度渲染到纹理、模糊、再用于漫反射;皮肤 R 通道滤波更宽,阴影边缘泛红;正确的滤波核中心尖锐、底部宽浅d'Eon 与 Luebke 多层多次高斯组合(六个模糊按 RGB 权重线性组合加镜面)效果极好但昂贵;Hable 单个 12 样本核,近看有色带
屏幕空间扩散(Jimenez)正常渲染,模板标记需 SSS 的像素;对辐照度做水平、垂直两遍一维双边模糊多角色一次后处理;近景面部开销大但值得
深度图技术用光源深度图估计物体内路径长度适合手掌等大尺度散射

屏幕空间扩散细节

  • 核不能完全可分:要按线性视深度拉伸宽度;双边滤波避免不同深度材质间漏光;还要考虑法线使模糊沿表面切向进行——可分性只是高质量近似。线性深度可存在场景纹理 alpha 中。
  • 样本少时近景欠采样,可逐像素旋转核,以噪声换重影,再由 TAA 去噪。
  • 只模糊辐照度,不能模糊漫反射率和镜面:分别存缓冲(延迟着色已有反照率缓冲);Gallagher 与 Mittring 用棋盘格把辐照度和镜面存在一张缓冲中省带宽;最后反照率 × 模糊后辐照度 + 镜面。
  • 鼻子、耳朵透光:用反向法线 −n-\mathbf{n} 采样背面入射光,乘以由光源阴影贴图深度估计的透射率;锥形前向散射可多次采样阴影贴图,用两个随机偏移样本产生的噪声正好被 SSS 模糊免费滤掉——每光源只多一次深度图采样。

深度图技术

  • 理想情况是光线入射和出射都折射并沿路径积分;通常忽略入射折射,只考虑出射方向改变。Hery 用光空间深度图代替光线投射,但多样本太慢;Green 的近似只用一条光线,背面细节可能透出,皮克斯在《料理鼠王》中称其为 gummi lights;深度图不应含多个或高度非凸物体,皮克斯用深阴影贴图规避。
  • 半透明阴影贴图(Dachsbacher 与 Stamminger):光空间纹理额外存辐照度和法线,多次采样组合估计多次散射(NVIDIA 皮肤系统用了其变体);Mertens 等改用屏幕空间纹理。
  • 树叶:额外映射叶片透射率纹理,背光贡献 (l⋅−n)+⋅(−v⋅l)+(\mathbf{l}\cdot-\mathbf{n})^+\cdot(-\mathbf{v}\cdot\mathbf{l})^+ 乘反照率后叠加。
  • Barré-Brisebois 与 Bouchard:每个网格生成灰度局部厚度纹理 tsst_{ss}(对反向法线 −n-\mathbf{n} 计算的环境光遮蔽取 1 减),近似背面来光的透射率;叠加 tss css ((v⋅−l)+)pt_{ss}\,\mathbf{c}_{ss}\,\big((\mathbf{v}\cdot-\mathbf{l})^+\big)^p,pp 为近似相位函数的指数,css\mathbf{c}_{ss} 为次表面反照率,再乘光源颜色、强度与距离衰减。非物理、不守恒,但单 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),否则高光发黄。

次表面:单层偶极剖面偏蜡感;三层多极剖面形状才对。把扩散剖面 R(r)R(r) 拟合成高斯和(白人三层模型约 6 个),利用高斯可分离与「高斯卷高斯仍是高斯」,在纹理空间对辐照做层级可分离模糊,最终按 RGB 权重线性合成——把一次不可分离宽核换成约 6×2×76\times2\times7 次采样。拉伸校正纹理(世界坐标屏幕导数)减轻 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 软化明暗、抹掉细表面细节,皮肤在明暗交界偏红(血/组织),薄处(耳、鼻)最明显。包裹光照把漫反射改成 (N⋅L+w)/(1+w)(N\cdot L+w)/(1+w),可用 LUT 在交界处叠红色并在 alpha 存高光幂次。深度图吸收(Hery):光源视角深度类似阴影图,s=dexit−dentrys=d_\mathrm{exit}-d_\mathrm{entry} 估路径长驱动吸收;仅对凸体可靠,背面细节可能「透出来」(gummi lights)。纹理空间扩散(Borshukov–Lewis):顶点着色器用 UV→NDC 展开网格,把光照画进 2D 再可分高斯模糊(皮肤 R 通道更宽)贴回——着色复杂度与屏幕分辨率解耦,要求 UV 无重叠且参数化较均匀。对照上文 Gems3 多层高斯扩散与屏幕空间双边:本章是「教科书入门三板斧」。

  1. realtime_rendering_4ed.pdf 第 14 章 Volumetric and Translucency Rendering
  2. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  3. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 12 章 12.4.4.2–12.4.4.3、12.5.9 节
  4. PBRT 4e source excerpt: chapter 14 (Light Transport II Volume Rendering)
  5. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 14 章 延伸阅读,pbr-book.org/4ed/Light_Transport_II_Volume_Rendering
  6. Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering — d'Eon, Luebke
  7. developer.nvidia.com/gpugems/gpugems3/part-iii-rendering/chapter-14-advanced-techniques-realistic-real-time-skin
  8. Chapter 16. Real-Time Approximations to Subsurface Scattering — Simon Green
  9. developer.nvidia.com/gpugems/gpugems/part-iii-materials/chapter-16-real-time-approximations-subsurface-scattering

相关页面

图形学参与介质与体积散射Participating Media & Volumetric Scattering参与介质是充满粒子、通过吸收和散射参与光传输的体积,如空气、水、雾、烟、云;皮肤、蜡等致密材质也有强烈散射——"一切都是散射"。实时渲染主要考虑单次散射:沿视线积分透射率衰减后的内散射光,内散射由相位函数和对光源的可见性(不透明阴影 × 体积阴影)决定。通用实时方案把介质材质和散射结果体素化到相机视锥体素 (froxel) 中逐片累积(RTR4 14.1、14.3、14.8 节)。图形学半透明表面与折射Translucent Surfaces & Refraction玻璃、水、红酒等高吸收、低散射材质:覆盖率 \alpha 与透射率 Tr 是两回事——前者遮挡背景,后者按波长过滤背景。厚度变化时按 Beer-Lambert 定律计算彩色透射;折射可用环境贴图或屏幕空间扰动近似,粗糙表面按粗糙度模糊背景;焦散则用动画贴图、光线光栅化或图像空间光子溅射近似(RTR4 14.5 节)。图形学光与物质的交互Light-Matter Interaction光是电磁横波;它与物质交互的核心是散射(振荡的电场带动电荷振荡、再辐射出新波)和吸收。粒子的大小决定散射特性,均匀介质用复折射率描述,表面是折射率的突变界面,把光分为反射和折射;折射进物体的光经次表面散射后部分射出。散射距离与着色尺度的比较决定能否把次表面散射当作局部的漫反射项。本页对应 RTR4 9.1–9.2 节。图形学阴影贴图Shadow Mapping阴影贴图 (Williams, 1978) 先从光源位置渲染深度,再从相机渲染时把每个点到光源的距离与贴图中存的深度比较:更远就在阴影中。它开销可预测(生成约与图元数成线性、查询为常数时间),非常适合 GPU,是任意表面阴影最常用的算法。主要问题是分辨率、深度精度带来的混叠、阴影痤疮和漏光。图形学图像处理与后处理Image Processing & Post-Processing后处理是在渲染出图像后再用 GPU 对其做图像处理:把离屏缓冲当纹理,用全屏 pass 让像素着色器(或计算着色器)对每个像素采样邻域并加权求和。核心技巧包括可分离滤波、利用双线性插值减少采样、降采样、以及借助深度/法线保持边缘的(联合)双边滤波(RTR4 12.1 节)。图形学时间重投影Temporal Reprojection重投影是在新的视点和朝向下复用前几帧已计算的样本。目的一是利用时间相干把渲染开销摊到多帧(与时间抗锯齿相关),二是当前帧来不及完成时快速生成近似帧(对 VR 防止晕动尤其重要)。分为反向重投影(从上一帧收集)和正向重投影(把上一帧散布到当前帧)(RTR4 12.2 节)。图形学漫反射与次表面 BRDFDiffuse & Subsurface BRDF Models漫反射项模拟不透明电介质中的局部次表面散射(金属没有)。其颜色是次表面反照率 \rho{ss};选用光滑表面还是粗糙表面模型,取决于表面不规则与次表面散射距离的相对大小,而不只是表面有多粗糙。光滑表面模型从 Lambert 出发,通过与镜面项的能量权衡改进;粗糙表面模型有 Disney 漫反射、Oren-Nayar、Gotanda、Hammon 等。本页对应 RTR4 9.9 节。综合角色渲染Character Rendering角色是游戏中最受关注、技术最集中的资产。本页按"动起来 → 表面细节 → 材质着色 → 特殊材质(皮肤、毛发、布料)→ 光照与阴影 → 性能"的顺序,把 wiki 中相关概念页串成一套角色渲染方案的地图。每一层只给出要点与取舍,细节见链接页。图形学毛发渲染Hair & Fur Rendering毛发由角质层、皮质、髓质三层构成,可看作用曲线离散化的体积。几何上用沿引导曲线挤出的四边形条带并配合 alpha/顺序无关透明;着色用 BSDF(R、TT、TRT 分量),再加体积自阴影与多次散射近似;动物短毛可用壳与鳍或几何着色器挤出(RTR4 14.7 节)。游戏开发 · UE5材质系统Material SystemUE 材质 (Material) 是用节点图描述「表面如何与光交互」的着色器生成器。它有三个正交维度:着色模型 (Shading Model) 决定光照模型(Default Lit、次表面、清漆、毛发等),混合模式 (Blend Mode) 决定与背景的合成公式(Opaque/Masked/Translucent…),参数 + 材质实例 (Material Instance) 让美术在不重编译着色器的前提下做变体。PBR 输入(Base Color/Roughness/Metallic/Specular)直接对应 RTR4 的金属度-粗糙度工作流;最大的工程坑是静态参数导致的着色器排列爆炸。游戏开发 · UE5MetaHuman 数字人MetaHumanMetaHuman 是 Epic 的一套完整框架,用来创建、驱动和使用带完整绑定、照片级的数字人。从 UE 5.6 起,MetaHuman Creator 完全集成进引擎(双击 MetaHuman Character 资产打开),可以把角色组装 (Assembly) 成针对不同目标环境优化的资产。在引擎层面,最需要关心的是 LOD:MetaHuman 由多个 LOD 数量不同的组件组成,由 LODSync 组件统一切换;毛发是 Groom 资产,可以在发丝、发片、网格三种几何之间按 LOD 切换。图形学菲涅耳反射Fresnel Reflectance菲涅耳方程描述光在两种物质的平坦界面上反射的比例 F,它取决于入射角和两侧折射率:垂直入射时为材质特有的 F0(特征镜面色),掠射时趋于 1。实时渲染用以 F0 为参数的 Schlick 近似。电介质 F0 低且无色,金属 F0 高且常带色,半导体介于其间;金属度参数化利用了这一点。光从物体内部射向表面时还可能发生全内反射。本页对应 RTR4 9.5 节。图形学双向反射分布函数BRDFBRDF f(\mathbf{l},\mathbf{v}) 量化局部反射:只依赖入射方向 \mathbf{l} 和出射(观察)方向 \mathbf{v},涵盖表面反射与局部次表面散射。它通过反射方程把入射辐射亮度转换为出射辐射亮度,物理上需满足 Helmholtz 互易性与能量守恒,用方向反照率检验。方向光和精确光源可从小面光源的极限推导,使积分变为对光源的求和。本页对应 RTR4 9.3–9.4 节。图形学显示编码与 sRGBDisplay Encoding & sRGB光照、纹理等计算假设数值是线性的,但显示缓冲和纹理使用非线性编码。简短的回答是:着色器输出 [0,1] 的颜色要取 1/2.2 次幂(gamma 校正),读入的纹理和颜色做相反的变换,多数情况下可以让 GPU 自动完成。忽略它会导致画面偏暗、色相偏移、光照叠加错误和抗锯齿边缘"绳索化"。图形学基于物理的着色Physically Based Shading基于物理的着色从光与物质交互的物理出发,用 BRDF 和反射方程计算表面沿视线方向射出的辐射亮度:镜面项来自微表面理论与菲涅耳反射,漫反射项来自局部次表面散射,布料、波动光学与分层材质再作扩展。本页是 RTR4 第 9 章的总览,并收录该章第 9.13 节的材质混合与材质过滤(镜面抗锯齿)。

被这些页面引用2 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原