我正在寻找并行化一些复杂的数学,而webgl看起来是完美的方式.问题是,你只能从纹理中读取8位整数.理想情况下,我希望从纹理中获取32位数字.我有想法使用4个颜色通道获得每像素32位,而不是4位8位.
我的问题是,glsl没有"%"运算符或任何按位运算符!
TLDR:如何使用glsl中的运算符将32位数转换为4位数.
关于该技术的一些额外信息(使用按位运算符):
我在纹理中打包了一些浮点数据作为unsigned_byte,这是我在webgl中的唯一选择.现在我想在顶点着色器中解压缩它.当我采样一个像素时,我得到一个vec4,它实际上是我的一个浮点数.如何从vec4转换为浮点数?
我一直在寻找一种在 WebGL 纹理上存储浮动的方法。我在互联网上找到了一些解决方案,但那些只处理 [0..1) 范围内的浮点数。我希望能够存储任意浮点数,为此,需要扩展这样的函数以存储指数(例如,在第一个字节上)。不过,我不太明白这些是如何工作的,因此如何做到这一点并不明显。简而言之:
将浮点数打包成 4 个字节的有效算法是什么?