该函数用于将一个向量规范化(长度为1),常用于计算光照、法线等。
vec3 normalize(vec3 x)
参数:
返回值:
normalize函数将一个向量x除以它的长度,从而得到一个方向相同但长度为1的向量。如果x是一个零向量,则返回(0,0,0)。
vec3 normalize(vec3 x) {
float len = length(x);
if (len < EPSILON) {
return vec3(0.0);
}
return x / len;
}
其中,EPSILON是一个非常小的数,用于避免除以0的情况出现。
vec3 v = vec3(1.0, 1.0, 1.0);
vec3 n = normalize(v);
这里将向量(1, 1, 1)规范化,得到一个方向相同但长度为1的向量。