【发布时间】:2019-08-06 04:47:18
【问题描述】:
我最近了解到storing boolean flags in integers using bitmasks。我想知道如何做到这一点来存储和从 JavaScript 检索布尔标志,以及从 GLSL 存储和检索标志。我认为这需要 浮点位掩码,而不是整数位掩码。通过这种方式,我可以在纹理中编码 JavaScript 中的一些状态标志,然后在 GLSL 中解压缩它们。同样,如果我将数据作为状态标志写入 GLSL 中的像素,我可以在 JavaScript 中读取它们。
【问题讨论】:
-
我必须承认我从未见过有人使用浮点位掩码。我怀疑这是有道理的。特别是因为通常,按位运算或移位仅对整数进行。
-
为什么要存储状态标志?通常不鼓励在着色器中进行分支。如果你想让一个着色器有条件地做一件事或另一个做 2 个着色器,一个做事情 1,一个做事情 2。
-
这将是非常低效的。在大多数处理器中,fp 和整数存储在不同的寄存器中,您无法对 fp 寄存器执行逻辑操作。每当您想要执行按位运算时,寄存器之间都会有几个无用的副本。又有什么优势呢?
-
@gman 所以听起来使用switch statement 不是一个好主意。
标签: javascript floating-point bit-manipulation glsl webgl