15 lines
376 B
HLSL
15 lines
376 B
HLSL
|
|
float pack(float a, float b)
|
||
|
|
{
|
||
|
|
uint aScaled = f32tof16(a);
|
||
|
|
uint bScaled = f32tof16(b);
|
||
|
|
uint abPacked = (aScaled << 16) | (bScaled & 0xFFFF);
|
||
|
|
return asfloat(abPacked);
|
||
|
|
}
|
||
|
|
|
||
|
|
void unpack(float x, out float a, out float b)
|
||
|
|
{
|
||
|
|
float inputFloat = x;
|
||
|
|
uint uintInput = asuint(inputFloat);
|
||
|
|
a = f16tof32(uintInput >> 16);
|
||
|
|
b = f16tof32(uintInput & 0xFFFF);
|
||
|
|
}
|