0
在HLSL中,我将如何将0-1范围内的两个花车打包到一个具有最佳精度的浮标中。这对于进一步压缩GBuffer非常有用。将范围内的两个花车放入一个浮标中
在HLSL中,我将如何将0-1范围内的两个花车打包到一个具有最佳精度的浮标中。这对于进一步压缩GBuffer非常有用。将范围内的两个花车放入一个浮标中
//Packing
float a = 0.45;
float b = 0.55;
uint aScaled = a * 0xFFFF;
uint bScaled = b * 0xFFFF;
uint abPacked = (aScaled << 16) | (bScaled & 0xFFFF);
float finalFloat = asfloat(abPacked);
//Unpacking
float inputFloat = finalFloat;
uint uintInput = asuint(inputFloat);
float aUnpacked = (uintInput >> 16)/65535.0f;
float bUnpacked = (uintInput & 0xFFFF)/65535.0f;
不错。 “最佳精度”部分显然是虚假的,因为可用位的数量减半。所以任何*可以被存储在剩余的内容中都可以被认为是“最优”的。 – usr2564301
是的,我认为它的意思是“不要浪费任何东西”,而不是“做不可能的事情”! –