0

语言是cg。

我有一个必须介于 0 和 1 之间的 8 位浮点数(它是 float4 rgba 颜色值的“a”分量)。我想在其中存储一个 6 位无符号整数和一个 2 位无符号整数。如何安全地将这两个值存储在这 8 位中?

我找不到任何关于 8 位浮点数格式的文档,尤其是限制在 0 和 1 之间的文档。我假设它比仅仅更复杂data / 255

4

1 回答 1

3

OpenGL 标准保证在写入 8 位帧缓冲区时至少保留 256 个不同的值。我很确定 Cg 也会这样做。

因此,您应该能够以这种方式编写两个值:

output.a = (4.0 * clamp(val1, 0.0, 63.0)
                + clamp(val2, 0.0, 3.0)) / 255.0;

并像这样检索它们:

float val1 = floor(input.a * 255.0 / 4.0);
float val2 = fmod(input.a * 255.0, 4.0);

这相当于对整数的按位运算。

于 2013-02-04T01:37:52.040 回答