unpackFloat.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. //This file is automatically rebuilt by the Cesium build process.
  2. export default "#define SHIFT_RIGHT_8 0.00390625 //1.0 / 256.0\n\
  3. #define SHIFT_RIGHT_16 0.00001525878 //1.0 / 65536.0\n\
  4. #define SHIFT_RIGHT_24 5.960464477539063e-8//1.0 / 16777216.0\n\
  5. \n\
  6. #define BIAS 38.0\n\
  7. \n\
  8. /**\n\
  9. * Unpacks a vec4 value containing values expressable as uint8 to an arbitrary float.\n\
  10. *\n\
  11. * @name czm_unpackFloat\n\
  12. * @glslFunction\n\
  13. *\n\
  14. * @param {vec4} packedFloat The packed float.\n\
  15. *\n\
  16. * @returns {float} The floating-point depth in arbitrary range.\n\
  17. */\n\
  18. float czm_unpackFloat(vec4 packedFloat)\n\
  19. {\n\
  20. packedFloat *= 255.0;\n\
  21. float temp = packedFloat.w / 2.0;\n\
  22. float exponent = floor(temp);\n\
  23. float sign = (temp - exponent) * 2.0;\n\
  24. exponent = exponent - float(BIAS);\n\
  25. sign = sign * 2.0 - 1.0;\n\
  26. sign = -sign;\n\
  27. float unpacked = sign * packedFloat.x * float(SHIFT_RIGHT_8);\n\
  28. unpacked += sign * packedFloat.y * float(SHIFT_RIGHT_16);\n\
  29. unpacked += sign * packedFloat.z * float(SHIFT_RIGHT_24);\n\
  30. return unpacked * pow(10.0, exponent);\n\
  31. }\n\
  32. ";