Anonymous
public text v1 · immutablefloat4 pack(float f, int iRange)
{
float4 fReturn = 0.0f;
float fRange = iRange * 1.0f;
int i = (int) (f * iRange);
fReturn.r = i / fRange;
f = (f - fReturn.r) * fRange;
i = (int) (f * iRange);
fReturn.g = i / fRange;
f = (f - fReturn.g) * fRange;
i = (int) (f * iRange);
fReturn.b = i / fRange;
fReturn.a = 0.0f;
return fReturn;
}
float unpack(float4 f, int iRange)
{
float fRange = iRange * 1.0f;
return f.r + f.g / fRange + f.b / (fRange * fRange);
}