边缘光
当物体边缘与视线接近垂直时,往往会出现更强的反射或更亮的轮廓。这类效果常用 Fresnel(菲涅耳)项来近似。它广泛用于:能量护盾、玻璃边缘高亮、轮廓强调等。
目标
- 计算视线方向
V与法线N的夹角关系 - 构造 Fresnel 强度:
pow(1.0 - dot(N, V), power) - 将 Fresnel 作为边缘光叠加到基础颜色上
思路
- 在顶点着色器中准备世界空间的法线与位置(传给片元阶段)。
- 在片元着色器中,使用 Three.js 注入的
cameraPosition(世界空间相机位置)得到视线方向:
glsl
vec3 V = normalize(cameraPosition - vWorldPos);- Fresnel 项:
glsl
float f = pow(1.0 - max(dot(N, V), 0.0), power);动手练习
- 调整
power(例如 1~6),观察边缘收紧程度 - 改变边缘光颜色与强度,让它像“能量护盾”
- 把 Fresnel 乘到透明度上,做“边缘更不透明”的效果
小结
你已经掌握了 Fresnel 的基本用法。下一节我们将利用噪声与阈值实现溶解效果,这是游戏特效中非常常见的技巧。
