【发布时间】:2011-08-01 00:41:40
【问题描述】:
我目前正忙于 webgl 中的延迟着色,我需要将 3 个整数值(在 [0..256] = 256^3 范围内)解码为单个 32 位浮点数并稍后对其进行编码。因为这是针对 WebGL 的,所以必须在没有按位运算的情况下完成。精度对我来说并不重要(但我认为可以实现)。
这是我所拥有的,但我认为这是错误的,因为我存储编码值的纹理的精度。
float packColor(vec3 color) { return (color.r + (color.g*256.) + (color.b*256.*256.)) / (256.*256.*256.); }
vec3 decodeColor(float f) {
float b = floor(f * 256.0);
float g = floor(f * 65536.0) - (b*256.);
float r = (floor(f * 16777216.0) - (b*65536.)) - (g*256.);
return vec3(r, g, b)/ 256.0;//vec3(r, g, b) / 256.0; }
谢谢..
【问题讨论】:
-
我认为您混淆了“编码”和“解码”这两个词的含义......
标签: floating-point int rgb webgl encode