30 lines
709 B
Plaintext
30 lines
709 B
Plaintext
|
vec4 packFloatToRgba(float _value)
|
||
|
{
|
||
|
const vec4 shift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);
|
||
|
const vec4 mask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
|
||
|
vec4 comp = fract(_value * shift);
|
||
|
comp -= comp.xxyz * mask;
|
||
|
return comp;
|
||
|
}
|
||
|
|
||
|
float unpackRgbaToFloat(vec4 _rgba)
|
||
|
{
|
||
|
const vec4 shift = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);
|
||
|
return dot(_rgba, shift);
|
||
|
}
|
||
|
|
||
|
vec2 packHalfFloat(float _value)
|
||
|
{
|
||
|
const vec2 shift = vec2(256, 1.0);
|
||
|
const vec2 mask = vec2(0, 1.0 / 256.0);
|
||
|
vec2 comp = fract(_value * shift);
|
||
|
comp -= comp.xx * mask;
|
||
|
return comp;
|
||
|
}
|
||
|
|
||
|
float unpackHalfFloat(vec2 _rg)
|
||
|
{
|
||
|
const vec2 shift = vec2(1.0 / 256.0, 1.0);
|
||
|
return dot(_rg, shift);
|
||
|
}
|