1法线贴图基础
法线贴图(Normal Map)通过存储表面法线方向来模拟几何细节,使低模模型看起来像高模一样凹凸不平。在 Unity URP 中,正确理解世界空间与切线空间法线的差异,是做出高质量渲染的基础。

2切线空间法线贴图(Tangent Space)
蓝偏图 / 蓝紫色法线
切线空间法线贴图是游戏行业最常用的格式,其 RGB 值中 R 和 G 通道编码切线(Tangent)和副切线(Bitangent)方向的偏移,B 通道固定为 (0, 0, 1),因此整体呈现蓝紫色。

核心特性
- UV 可复用 --- 同一张贴图可应用于不同 UV 展开的模型
- 支持形变 --- 可用于骨骼动画角色,蒙皮网格正确变形
- G 通道复用 --- 纹理压缩时质量损失相对较小
Shader 计算流程
cs
// 1. 采样切线空间法线贴图
half3 normalTS = UnpackNormal(SAMPLE_TEXTURE2D(_NormalMap,
_NormalMap_ST, uv));
// 2. 从顶点数据获取 TBN 矩阵
float3 tangent = TransformObjectToWorld(input.tangent.xyz);
float3 bitangent = cross(normalWorld, tangent) * input.tangent.w;
float3x3 TBN = float3x3(tangent, bitangent, normalWorld);
// 3. 将切线空间法线转换到世界空间
half3 normalWS = normalize(mul(normalTS, TBN));
// 4. 使用世界空间法线进行光照计算
half NdotL = max(0, dot(normalWS, lightDir));
3世界空间法线贴图(World Space)
彩色法线贴图 / RGB 彩色
世界空间法线贴图直接存储法线在世界坐标系中的方向,RGB 三个通道分别对应 X、Y、Z 轴方向。视觉上呈现为多彩的彩色图案,无法通过颜色猜测凹凸方向。
**关键区别:**世界空间法线是"绝对"的,而切线空间法线是"相对"的。切线空间法线始终相对于模型表面定义,世界空间法线则是场景空间的绝对方向。
核心特性
- 精度更高 --- 避免 TBN 矩阵重建误差,尤其在大角度曲面
- 无 TBN 开销 --- 省去切线/副切线插值和矩阵乘法
- 不可形变 --- 只能用于静态物体,UV 必须与模型一一对应
Shader 计算流程
cs
// 1. 采样世界空间法线贴图(无需解码)
float3 normalWS = SAMPLE_TEXTURE2D(_WorldNormalMap,
_WorldNormalMap_ST, uv).rgb;
// 2. 法线范围从 [0,1] 映射到 [-1,1]
normalWS = normalWS * 2.0 - 1.0;
// 3. 直接用于光照计算,无需 TBN 转换
half NdotL = max(0, dot(normalWS, lightDir));
提示: 如果法线贴图在导入时已设置为 "Normals: Tangent Space"(默认),采样后需要用 UnpackNormal 解码;设为 "Normals: None" 时可直接使用。
4深度对比
| 对比维度 | 切线空间法线 | 世界空间法线 |
|---|---|---|
| 视觉效果 | 蓝紫色,偏移量存储 | 多彩色,绝对方向存储 |
| UV 复用 | ✅ 支持 | ❌ 不支持 |
| 动画/形变 | ✅ 完美支持 | ❌ 完全不支持 |
| Shader 开销 | 需 TBN 矩阵计算 | 无 TBN,零额外开销 |
| 精度 | 中(重建有误差) | 高(无重建误差) |
| 纹理压缩 | G 通道较稳定 | 各通道同等重要 |
| 典型用途 | 角色、Prop、可形变物体 | 地形、静态建筑、自然风貌 |
5选型决策流程
根据以下决策树快速选择合适的法线贴图格式:

6URP 实战建议
🔵 选切线空间
- 角色皮肤、服装、装备
- 有骨骼动画的 Prop(旗帜、布料)
- 需要在不同模型间共享的材质
- 贴图集(Atlas)中打包法线
🟢 选世界空间
- 地形系统的岩石、草地
- 大型静态建筑外表面
- 无 UV 展开的自然风貌(岩壁、树皮)
- 需要极致精度和零 TBN 开销的场景
**注意:**世界空间法线贴图对 UV 展开要求极高------必须与模型顶点在世界空间的位置一一对应。烘焙时请确保模型在世界原点、无旋转变换。
📌 总结
两种法线贴图格式没有绝对的优劣,只有场景的适合与否。理解它们的本质差异,是做出正确技术决策的前提。
切线空间 = 通用 + 灵活
支持复用、形变,是角色的首选方案
世界空间 = 精度 + 性能
零 TBN 开销,适合静态大型场景