Unity URP 仿终末地角色渲染
一、人物渲染技术

1. 皮肤渲染(Skin Shader)
半兰伯特 + Ramp:将 NdotL 映射到 0~1 并经过 sigmoid 平滑后采样 Ramp。
次表面散射模拟(SSS):使用 Wrapped Lighting(JGT 公式)计算背光透射强度,乘以 _SSS_Color 和 _SSS_Value。

2. 面部渲染(Face Shader)
SDF 贴图驱动阴影:根据角色面部朝向与光源方向,使用 SDF 纹理的 R+G 通道生成精确的面部阴影视图。
多区域遮罩:_CustomMask 区分脸颊、下巴等区域,各自控制阴影强度与高光。
球面法线混合:高光计算时使用以头部中心计算的球面法线代替网格法线,使高光过渡更平滑。
唇部高光偏移:根据视角和头部右向量对 UV 偏移,单独采样 _LipHighlightMask 产生唇部立体感。
侧面颜色:根据面部区域遮罩混合 _FaceSideColor 模拟侧面暗部色彩。

3. 头发渲染(Hair Shader)
各向异性高光:使用切线空间 T 向量与半角向量 H 的点积,计算 sin(TH) 再乘幂,模拟发丝的条状高光。
自定义遮罩贴图 _PMaskMap:存储 underHairMask、anisoHLMask、AO 和 anisoIntensity。

4. 眼睛渲染(Iris Shader)
两种折射模式:
- 视差映射(Parallax):基于切线空间视角方向偏移 UV。
- 物理折射(Physical):根据 IOR(折射率)模拟角膜和房水,计算折射偏移向量。
MatCap 高光:可选启用,通过法线在视角空间映射到 MatCap 纹理,模拟镜头光晕。
自发光强度控制:_EmissionIntensity 调节虹膜亮度。
视角渐变透明:在第二 Pass 中根据视角与头部前向夹角淡出,用于眼睑覆盖效果。

5. 轮廓线(Outline)
平滑法线外扩:顶点着色器读取平滑法线(模型导入时预处理),沿法线方向外扩顶点。
纹理遮罩控制宽度:采样 _ST 贴图(类似顶点色),允许美术控制不同区域的轮廓粗细。
Clip 空间 Z 偏移:防止轮廓与模型本身的深度冲突。

6. 眼影(EyeShadow)与眉毛(Brow)
眼影:透明叠加,使用 mask 贴图的 R 通道作为透明度。
眉毛:在世界空间沿视线方向偏移位置,模拟厚度,并根据视角与头部前向夹角控制可见度。
