octDecode.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //This file is automatically rebuilt by the Cesium build process.
  2. export default "vec3 czm_octDecode(vec2 encoded, float range)\n\
  3. {\n\
  4. if (encoded.x == 0.0 && encoded.y == 0.0) {\n\
  5. return vec3(0.0, 0.0, 0.0);\n\
  6. }\n\
  7. encoded = encoded / range * 2.0 - 1.0;\n\
  8. vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\n\
  9. if (v.z < 0.0)\n\
  10. {\n\
  11. v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy);\n\
  12. }\n\
  13. return normalize(v);\n\
  14. }\n\
  15. vec3 czm_octDecode(vec2 encoded)\n\
  16. {\n\
  17. return czm_octDecode(encoded, 255.0);\n\
  18. }\n\
  19. vec3 czm_octDecode(float encoded)\n\
  20. {\n\
  21. float temp = encoded / 256.0;\n\
  22. float x = floor(temp);\n\
  23. float y = (temp - x) * 256.0;\n\
  24. return czm_octDecode(vec2(x, y));\n\
  25. }\n\
  26. void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3)\n\
  27. {\n\
  28. float temp = encoded.x / 65536.0;\n\
  29. float x = floor(temp);\n\
  30. float encodedFloat1 = (temp - x) * 65536.0;\n\
  31. temp = encoded.y / 65536.0;\n\
  32. float y = floor(temp);\n\
  33. float encodedFloat2 = (temp - y) * 65536.0;\n\
  34. vector1 = czm_octDecode(encodedFloat1);\n\
  35. vector2 = czm_octDecode(encodedFloat2);\n\
  36. vector3 = czm_octDecode(vec2(x, y));\n\
  37. }\n\
  38. ";