Kajiya-Kay光照模型与URP BRDF整合实践
1. Kajiya-Kay光照模型原理解析
Kajiya-Kay模型是专门用于模拟头发、毛发等纤维状材质各向异性高光的光照模型。与传统的基于法线的高光计算不同,它采用切线方向作为主要计算基准,能够产生更符合纤维材质特性的条状高光效果。
1.1 切线空间计算机制
在传统光照模型中,我们通常使用法线向量(Normal)来计算高光反射。但纤维状材质如头发具有明显的方向性特征,这使得基于法线的计算会产生不自然的高光分布。
Kajiya-Kay模型的核心创新在于:
- 使用切线向量(Tangent)或副切线(Bitangent)替代法线向量
- 通过TdotH = dot(tangent, halfVector)计算高光强度
- 转换为TsinH = sqrt(1 - TdotH²)实现条状高光效果
这种计算方式产生的不是圆形高光,而是沿着切线方向延伸的条状高光,更符合真实世界中头发等纤维材质的光照特性。
提示:在实际实现中,确保切线空间的正确构建至关重要。错误的切线空间会导致高光方向异常。
1.2 双层高光特性
真实世界的头发在光照下通常会呈现两种高光:
- 主高光(Primary Specular):靠近发梢,较为明亮
- 次高光(Secondary Specular):靠近发根,通常带有彩色偏移且较为柔和
Kajiya-Kay模型通过以下方式模拟这一特性:
- 使用两组不同的切线偏移参数
- 分别计算主次高光
- 赋予不同的颜色和强度
- 最终叠加两种高光效果
这种双层高光设计能够更好地模拟Marschner模型描述的头发散射特性,而计算复杂度却大大降低。
1.3 切线偏移技术
为了增强高光的动态变化和真实感,Kajiya-Kay模型引入了切线偏移技术:
- 通过噪声贴图扰动切线方向
- 使用ShiftTangent函数实现方向偏移
- 产生更自然的高光变化
具体实现中,我们通常会:
- 采样一张各向异性噪声贴图
- 根据噪声值计算偏移量
- 应用偏移到原始切线方向
- 使用偏移后的切线计算高光
这种技术特别适合表现头发在动态情况下的高光变化,避免了静态高光带来的塑料感。
2. URP中的BRDF结构分析
Unity的通用渲染管线(URP)采用基于物理的渲染(PBR)工作流,其BRDF实现通常基于Cook-Torrance微表面模型。理解这一基础结构对于整合Kajiya-Kay模型至关重要。
2.1 BRDF核心组件
URP中的BRDF包含三个核心组件:
-
D项(法线分布函数):
- 描述微表面法线的分布情况
- 常用GGX模型,控制高光的形状和锐利度
- 公式:D_GGX(n, h, α) = α² / (π((n·h)²(α²-1)+1)²)
-
**F项(菲
最低 0.47元/天 开通会员,解锁全文
成为会员后, 你将解锁