Skip to content

边缘光

当物体边缘与视线接近垂直时,往往会出现更强的反射或更亮的轮廓。这类效果常用 Fresnel(菲涅耳)项来近似。它广泛用于:能量护盾、玻璃边缘高亮、轮廓强调等。

目标

  • 计算视线方向 V 与法线 N 的夹角关系
  • 构造 Fresnel 强度:pow(1.0 - dot(N, V), power)
  • 将 Fresnel 作为边缘光叠加到基础颜色上

思路

  1. 在顶点着色器中准备世界空间的法线与位置(传给片元阶段)。
  2. 在片元着色器中,使用 Three.js 注入的 cameraPosition(世界空间相机位置)得到视线方向:
glsl
vec3 V = normalize(cameraPosition - vWorldPos);
  1. Fresnel 项:
glsl
float f = pow(1.0 - max(dot(N, V), 0.0), power);

动手练习

  • 调整 power(例如 1~6),观察边缘收紧程度
  • 改变边缘光颜色与强度,让它像“能量护盾”
  • 把 Fresnel 乘到透明度上,做“边缘更不透明”的效果

小结

你已经掌握了 Fresnel 的基本用法。下一节我们将利用噪声与阈值实现溶解效果,这是游戏特效中非常常见的技巧。