GLSL的refract函数用于计算折射向量。这个函数将一个向量与法线和折射指数相乘,得到一个新的向量,该向量表示入射向量穿过介质边界时的折射方向。
vec3 refract(vec3 I, vec3 N, float eta)
I
: vec3
类型的入射向量
N
: vec3
类型的法向量
eta
: float
类型的折射指数
vec3
类型的折射向量
这个函数首先计算入射向量与法向量之间的反射向量。然后,它使用折射指数和反射向量来计算折射向量。
vec3 I = normalize(incoming_ray_direction);
vec3 N = normalize(surface_normal);
float eta = 1.3;
vec3 refracted_ray_direction = refract(I, N, eta);
入射向量和法向量必须被标准化。
折射指数必须大于0。
如果入射向量与法向量相反,则返回一个零向量。
这个函数只适用于处理透明边界。