向量 vec3 和浮点数的 GLSL 总和

Pip*_*ipo 2 opengl scalar vector glsl

这可能很奇怪,因为据我了解,向量和标量不能相加。但是我发现了这个示例,并在第 157 行中执行了以下操作:

hsv.x + vec3(0.,2./3.,1./3.)
Run Code Online (Sandbox Code Playgroud)

其中hsv.x恰好是一个float数字,该值来自鼠标 X 坐标,其余的是vec3.

我的问题是该操作的结果是什么?

Rab*_*d76 5

如果将标量添加到向量,则标量将添加到向量的每个分量,因为OpenGL 着色语言规范(版本 4.6,第 5 章运算符和表达式)表示:

一个操作数是标量,另一个操作数是向量或矩阵。在这种情况下,标量运算独立地应用于向量或矩阵的每个分量,从而产生相同大小的向量或矩阵。