0

言語は cg です。

0 から 1 の間でなければならない 8 ビットの float があります (これは、float4 rgba カラー値の「a」コンポーネントです)。その中に6ビットの符号なし整数と2ビットの符号なし整数を格納したいです。これら 2 つの値を 8 ビットに安全に格納するにはどうすればよいですか?

特に 0 と 1 の間で制限された 8 ビット float の形式に関するドキュメントを見つけることができませんでしたdata / 255

4

1 に答える 1

3

OpenGL 標準では、8 ビット フレームバッファへの書き込み時に、少なくとも 256 個の異なる値が保持されることが保証されています。Cgも同じことをしていると確信しています。

したがって、次のように 2 つの値を記述できるはずです。

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 に答える