12345678910111213141516171819202122232425262728293031 |
- /**
- * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type,
- * so the return value is an int.
- * <p>
- * There are also precision limitations in WebGL 1. highp int is still limited
- * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur.
- * </p>
- *
- * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order.
- *
- * @return {int} The unpacked value.
- */
- int czm_unpackUint(float packedValue) {
- float rounded = czm_round(packedValue * 255.0);
- return int(rounded);
- }
- int czm_unpackUint(vec2 packedValue) {
- vec2 rounded = czm_round(packedValue * 255.0);
- return int(dot(rounded, vec2(1.0, 256.0)));
- }
- int czm_unpackUint(vec3 packedValue) {
- vec3 rounded = czm_round(packedValue * 255.0);
- return int(dot(rounded, vec3(1.0, 256.0, 65536.0)));
- }
- int czm_unpackUint(vec4 packedValue) {
- vec4 rounded = czm_round(packedValue * 255.0);
- return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0)));
- }
|