Shader Graph的Fresnel Effect节点

19 阅读1分钟

1.Fresnel Effect节点组成

image.png 核心功能是:
基于表面法线与视线方向的夹角计算反射强度:

  • 当视线垂直于表面(夹角小),输出值接近 0(反射弱);
  • 当视线接近表面切线方向(夹角大,掠射角),输出值接近 1(反射强)。
    输入参数有3个,分别是:
    Normal——输入表面法线
    ViewDir——输入视线方向
    Power——控制边缘效果的锐利程度2,表现为值越大,边缘越细。

2.Fresnel Effect节点原理

Fresnel=(1dot(normal,viewDir))Fresnel=(1-dot(normal,viewDir))power
物体表面的法线向量和视线向量点乘的结果为(-1,1),由此1-dot(normal,viewDir)的取值范围是(0,2),公式表现的意义为法线向量和视线向量一定时,power越大,值越大。

幂运算对结果的影响

power增大时:

  1. 对于小数值的(1 - dot(...)) (对应视线接近垂直表面的区域):幂运算会让结果更快趋近于 0(例如0.5^2=0.250.5^5=0.03125),这些区域的菲涅尔值会被 “压制” 到接近 0。
  2. 对于接近 1 的(1 - dot(...)) (对应视线接近表面切线的边缘区域):幂运算的影响较小(例如0.9^2=0.810.9^5≈0.59),只有极接近 1 的部分能保留较高的输出值。

最终表现为:只有视线与表面夹角极大的 “窄边缘区域” 会输出较高值,其余区域的输出值快速降到 0,因此power越大,边缘效果越细窄。