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

时间:2013-12-30 01:03:00

标签: glsl

似乎某些具有输出的函数可能会使用if语句作为底层实现,从而导致分支。我不这么认为,但我想知道。

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

那么这个功能如何运作?

1 个答案:

答案 0 :(得分:7)

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

但是,任何真实世界的实现都不太可能使用sign()操作的分支。通过查看大多数现实世界浮点格式中存在的符号位,可以轻松确定符号,尤其是IEE 754。这可以通过逻辑轻松实现 - 比典型的浮点算术功能更容易实现。