GLSL sign()函数是否会导致分支?它是如何工作的?

GLSL sign()函数是否会导致分支?它是如何工作的?,glsl,Glsl,有些函数在某些情况下可能会使用if语句作为底层实现,从而导致分支。我想没有,但我想知道 对于符号(x),如果数字为正、负或零,则分别重新运行1、-1和0 那么这个函数是如何工作的呢?实现细节始终是特定于实现的。因此,如何实现这种结构完全取决于供应商(最终取决于底层硬件的能力) 但是,任何实际实现都不太可能为sign()操作使用分支。通过查看大多数实际浮点格式中存在的符号位,可以很容易地确定符号,尤其是。这可以很容易地用逻辑来实现——和典型的浮点算术函数一样容易。我不认为符号是用分支实现的。。。但

有些函数在某些情况下可能会使用if语句作为底层实现,从而导致分支。我想没有,但我想知道

对于符号(x),如果数字为正、负或零,则分别重新运行1、-1和0


那么这个函数是如何工作的呢?

实现细节始终是特定于实现的。因此,如何实现这种结构完全取决于供应商(最终取决于底层硬件的能力)


但是,任何实际实现都不太可能为
sign()
操作使用分支。通过查看大多数实际浮点格式中存在的符号位,可以很容易地确定符号,尤其是。这可以很容易地用逻辑来实现——和典型的浮点算术函数一样容易。

我不认为符号是用分支实现的。。。但逻辑并不像获取符号位那样简单,因为当值为0.0时,符号函数返回0.0(因此需要测试是否为零);如果该值不为零,则只能使用符号位。这意味着必须使用IEEE浮点的所有位来确定结果。