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
是的,我認爲它的意思是「不要浪費任何東西」,而不是「做不可能的事情」! –