UnityHDRP StackLit Shading Model 拆分

这篇是对 Unity HDRP 中 StackLit Shading Model 的拆解整理。原始资料以“车漆技术分析”PDF 形式保存,这里把它整理成更适合网页阅读的技术文,重点放在复杂材质的结构、BRDF 路径和工程裁剪思路上。

车漆材质技术分析截图
原始分析文档截图:围绕车漆材质拆解 StackLit 的表现层级。

为什么拆 StackLit

StackLit 是 HDRP 里表达能力很强、但代码路径也很重的 Lit 模型。它适合车漆、涂层、各向异性金属、多层高光和需要更复杂能量分配的材质。问题在于它不像普通 Lit 那样容易一眼看清:输入项多、宏分支多、BSDF 数据结构长,材质表现和性能成本都藏在多个 include 与 feature switch 里。

拆它的目标不是完整复刻 HDRP,而是回答三个工程问题:哪些输入真正决定车漆层次,哪些 BRDF 路径是视觉核心,哪些特性在项目里可以被裁剪或改写。

车漆材质的层级

车漆不是一个单层高光材质。更合理的理解方式是把它拆成三个层次:

  • Base Coat:负责主体颜色、粗糙度和基础漫反射/镜面反射,是材质的底层观感。
  • Flakes / Pigment:负责金属颗粒、细碎闪点和视角变化,通常需要噪声、法线扰动或额外 mask 控制。
  • Clear Coat:负责最外层清漆高光,粗糙度更低,Fresnel 更明显,是车漆“亮”和“厚”的主要来源。

StackLit 的价值在于它能把这些层次放在一个材质模型里做能量分配,而不是简单把几层高光叠加到过曝。

源码阅读路径

阅读 StackLit 时可以按数据流切,而不是从文件第一行硬读。一个更稳定的路径是:

  1. Material Inputs:先看 ShaderGraph / 材质面板能暴露哪些输入,包括 base color、smoothness、coat、anisotropy、iridescence 等。
  2. SurfaceData:确认贴图和材质参数如何被打包成表面数据,这一步决定美术输入和 shader 计算之间的边界。
  3. BSDFData:继续看 SurfaceData 如何转换成光照阶段真正使用的数据,重点观察粗糙度、法线、Fresnel、coat mask 等字段。
  4. LightLoop / EvaluateBSDF:最后看直接光、IBL、阴影和多层高光如何参与最终输出。

这样拆可以避免陷在宏和平台分支里,也更容易把结论转成项目里的材质调试规则。

关键 BRDF 模块

StackLit 的复杂度主要来自多个高光 lobe 和额外材质现象。对车漆来说,最值得关注的是:

  • Specular Lobe:决定基础高光宽度和强度,通常与 roughness、normal、F0 强相关。
  • Clear Coat Lobe:表现外层清漆。它应该更锐利,也要影响底层能量,避免简单相加导致能量不守恒。
  • Anisotropy:用于拉伸高光方向,适合刷痕金属或某些特殊涂层,车漆中需要谨慎使用。
  • Flakes:更像表现层控制,通常依赖噪声、mask、normal variation 或额外闪点逻辑,而不是单靠标准 BRDF。
  • Fresnel:控制掠射角反射增强,是车漆边缘质感的重要来源。

工程裁剪思路

项目里不一定需要完整 StackLit。拆解后的价值,是知道哪些功能可以按材质目标裁剪。

模块 视觉收益 成本/风险 建议
Clear Coat 明显提升车漆厚度和高光层次 增加一次高光计算和参数管理 车漆主材质保留
Anisotropy 能做方向性高光 需要 tangent 数据和额外调试 只在明确需要时开启
Iridescence 特殊变色效果明显 美术可控性和性能都更复杂 默认关闭,做变体彩蛋/特殊皮肤时再开
Flakes 增强近景细节和材质识别度 噪声采样、闪烁和 mip 稳定性问题 需要配套距离衰减和 mip 策略
多层法线 细节丰富 采样数上升,移动端不稳定 按平台拆 quality level

调试方法

调 StackLit 类复杂材质时,最忌讳只看最终 Beauty。建议保留一组 debug view:

  • BaseColor / Smoothness / Metallic / CoatMask 分通道检查。
  • Normal 与 Bent Normal 对比,确认高光方向没有异常。
  • 单独查看 base specular、clear coat specular、IBL contribution。
  • 固定光照和固定曝光,避免自动曝光掩盖材质问题。
  • 近景、远景、动态旋转三种情况下检查 flakes 是否闪烁。

作品集结论

这篇文章真正想表达的不是“会用 HDRP 的 StackLit”,而是把复杂 shader 模型拆成可解释、可裁剪、可调试的工程资产。对实时渲染 TA 来说,这类能力比单纯把效果调出来更重要:它连接了美术目标、材质模型、源码阅读和性能取舍。

打开原始 PDF:车漆技术分析

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注