glsl cast bool浮动

时间:2012-12-02 22:29:51

标签: glsl

如果一个向量等于另一个向量,我想将float值设置为1.0,如果向量不相等,我想将0.0设置为<{p}}

if( v1 == v2 )  floatVal = 1.0 ;
else  floatVal = 0.0 ;

但是设置

不是“更快”或优化
floatVal = (v1 == v2) ;

但它不起作用。你不能隐式(或明确地)将float转换为bool?有没有办法做到这一点,还是我必须使用if语句分支?

2 个答案:

答案 0 :(得分:11)

你没试过“浮动(布尔)”功能吗?

GLSLangSpec.Full.1.20.8.pdf第5.4.1节说你可以做所有这些转换。

感谢。

答案 1 :(得分:5)

CuriousChettai是对的。只需写下:

floatVal = float(v1 == v2);

如果您指定的值可能会导致精度损失,则GLSL会给您一个编译错误。所以你可以做以下事情:

float f = 3;       // works
int i = 3.0;       // compiler-error
int j = int(3.0);  // works