比较 3 个 glsl 向量

Compare 3 glsl vectors

我在 glsl 中制作了一个示例代码,我正在使用 if(diffuse.rgb > vec3(1)),它给出了“无法比较向量或矩阵”错误。如果我这样做 if(diffuse.rgb == vec3(1)) 它运行没有错误,谢谢。

顺序比较和相等比较不是一回事。很容易理解向量 equal/not-equal 对另一个向量意味着什么。但是什么会导致一个向量“小于”另一个向量呢?你是在比较space的零点的距离吗?您是否单独比较每个组件?如果是这样,如果某些组件较少而其他组件不少,会发生什么情况?

GLSL 有 vector relational functions 来处理这些不同的情况。如果您想问的问题是“这些是否大于 1”,那么您可以使用 any(greaterThan(diffuse.rgb, vec3(1))) 来完成。如果你想问“所有 都大于 1”,你可以使用 all(greaterThan(diffuse.rgb, vec3(1))).