Glsl 长度函数

Glsl 长度函数,glsl,shader,webgl,Glsl,Shader,Webgl,在GLSL文档()中,length函数“计算向量的长度” 但我不明白,这里的“长度”是什么意思 例如: length(.5); // returns .5 length(1.); // returns 1. 那么您应该如何以及为什么使用这个函数呢 文档使用“genType”作为泛型类型,它主要显示所有接受该类型的函数,这意味着它可以是任何基类型 我不知道为什么它不是更具体,当它清楚地说,这是一个向量运算 我认为它很可能只是返回输入值,如果它是一个一维向量,它只是一个数字,它会正确地计算出二维、

在GLSL文档()中,length函数“计算向量的长度”

但我不明白,这里的“长度”是什么意思

例如:

length(.5); // returns .5
length(1.); // returns 1.

那么您应该如何以及为什么使用这个函数呢

文档使用“genType”作为泛型类型,它主要显示所有接受该类型的函数,这意味着它可以是任何基类型

我不知道为什么它不是更具体,当它清楚地说,这是一个向量运算

我认为它很可能只是返回输入值,如果它是一个一维向量,它只是一个数字,它会正确地计算出二维、三维向量的长度

这里的长度是指向量的欧几里德距离,而不是它所具有的元素的长度或计数。

参见

8内置功能,第63页

如果在下面指定了内置函数,其中输入参数(和相应的输出)可以是
float
vec2
vec3
vec4
,则genType用作参数

8.4几何函数,第68页

返回向量x的长度,即


这意味着
长度(.5)
的结果是:

sqrt(0.5 * 0.5) = 0.5
length(1.)的结果是

sqrt(1.0 * 1.0) = 1.0

以防万一,您可能应该知道,但是您链接到的参考页是针对OpenGL GLSL 4的,而WebGL并没有使用它。WebGL1使用GLSL ES 1.0,WebGL2添加GLSL ES 3.00。在这种特殊情况下,长度的文档是相似的,但在其他方面,规格不同,功能不同。“如果是一维向量,它只返回输入值”,如果是负值,则返回值,因为欧几里德距离总是正值。
sqrt(1.0 * 1.0) = 1.0