(How)是否可以按位向复制一个vec4(32位)到一个浮点数(32位)?GLSL bitwise vec4浮动副本
已经尝试过: Vec4ToFloat and Back Vec4ToFloat and Back
(How)是否可以按位向复制一个vec4(32位)到一个浮点数(32位)?GLSL bitwise vec4浮动副本
已经尝试过: Vec4ToFloat and Back Vec4ToFloat and Back
甲vec4是通常 128位(4x32位浮点),所以它包装成一个单一的浮动是有问题的。
也许你的意思是打包一个任意的32位值到浮点数?您可以使用内置的intBitsToFloat
以按位方式将int
的32位复制到float
。但是,得到的浮点值可能是某种类型的南,在这种情况下将其转换回与int int floatBitsToInt
可能不会给你相同的结果。
编辑
从你的评论,你似乎令人困惑的像素格式与着色器数字格式缓冲区。每当您从缓冲区或纹理中读取像素时,都会将其从像素格式转换为数字格式,具体取决于如何读取像素。如果您已经在绑定到RGBA纹理的某种sampler
上执行了正常的texture
查找,则texure的每个通道都将被解压缩到一个32位浮点,范围为0.0..1.0。你可以用packUnorm4x8
轻松地将它打包回32位uint中,然后将该32位uint转换为浮点数intBitsToFloat
(在第二步中,Nan可能存在上述问题)。或者,您可以在设置采样器时使用适当的texel类型将其读取为32位int或浮点数(这会影响插值,但根本不需要插值)你正在尝试做)。
但是,图像的像素值是32位RGBA,我怎样才能将这个值按位转换为浮点数? – schwenk