【问题标题】:Compare 3 glsl vectors比较 3 个 glsl 向量
【发布时间】:2021-10-27 19:23:21
【问题描述】:

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

【问题讨论】:

    标签: if-statement glsl fragment-shader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多