You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
guanyun3d/public/lib/Cesium/Workers/AttributeCompression-0af3c0...

205 lines
5.5 KiB

define([
'exports',
'./Matrix2-f2da41d4',
'./ComponentDatatype-17b06483',
'./RuntimeError-ffe03243',
'./when-229515d6',
], function (e, t, a, n, r) {
'use strict';
var o = {
SCALAR: 'SCALAR',
VEC2: 'VEC2',
VEC3: 'VEC3',
VEC4: 'VEC4',
MAT2: 'MAT2',
MAT3: 'MAT3',
MAT4: 'MAT4',
getMathType: function (e) {
switch (e) {
case o.SCALAR:
return Number;
case o.VEC2:
return t.Cartesian2;
case o.VEC3:
return t.Cartesian3;
case o.VEC4:
return t.Cartesian4;
case o.MAT2:
return t.Matrix2;
case o.MAT3:
return t.Matrix3;
case o.MAT4:
return t.Matrix4;
}
},
getNumberOfComponents: function (e) {
switch (e) {
case o.SCALAR:
return 1;
case o.VEC2:
return 2;
case o.VEC3:
return 3;
case o.VEC4:
case o.MAT2:
return 4;
case o.MAT3:
return 9;
case o.MAT4:
return 16;
}
},
getGlslType: function (e) {
switch (e) {
case o.SCALAR:
return 'float';
case o.VEC2:
return 'vec2';
case o.VEC3:
return 'vec3';
case o.VEC4:
return 'vec4';
case o.MAT2:
return 'mat2';
case o.MAT3:
return 'mat3';
case o.MAT4:
return 'mat4';
}
},
},
c = Object.freeze(o),
s = 1 / 256,
u = {
octEncodeInRange: function (e, t, n) {
if (
((n.x = e.x / (Math.abs(e.x) + Math.abs(e.y) + Math.abs(e.z))),
(n.y = e.y / (Math.abs(e.x) + Math.abs(e.y) + Math.abs(e.z))),
e.z < 0)
) {
var r = n.x,
o = n.y;
(n.x = (1 - Math.abs(o)) * a.CesiumMath.signNotZero(r)),
(n.y = (1 - Math.abs(r)) * a.CesiumMath.signNotZero(o));
}
return (n.x = a.CesiumMath.toSNorm(n.x, t)), (n.y = a.CesiumMath.toSNorm(n.y, t)), n;
},
octEncode: function (e, t) {
return u.octEncodeInRange(e, 255, t);
},
},
i = new t.Cartesian2(),
C = new Uint8Array(1);
function M(e) {
return (C[0] = e), C[0];
}
(u.octEncodeToCartesian4 = function (e, t) {
return (
u.octEncodeInRange(e, 65535, i),
(t.x = M(i.x * s)),
(t.y = M(i.x)),
(t.z = M(i.y * s)),
(t.w = M(i.y)),
t
);
}),
(u.octDecodeInRange = function (e, n, r, o) {
if (
((o.x = a.CesiumMath.fromSNorm(e, r)),
(o.y = a.CesiumMath.fromSNorm(n, r)),
(o.z = 1 - (Math.abs(o.x) + Math.abs(o.y))),
o.z < 0)
) {
var c = o.x;
(o.x = (1 - Math.abs(o.y)) * a.CesiumMath.signNotZero(c)),
(o.y = (1 - Math.abs(c)) * a.CesiumMath.signNotZero(o.y));
}
return t.Cartesian3.normalize(o, o);
}),
(u.octDecode = function (e, t, a) {
return u.octDecodeInRange(e, t, 255, a);
}),
(u.octDecodeFromCartesian4 = function (e, t) {
var a = 256 * e.x + e.y,
n = 256 * e.z + e.w;
return u.octDecodeInRange(a, n, 65535, t);
}),
(u.octPackFloat = function (e) {
return 256 * e.x + e.y;
});
var f = new t.Cartesian2();
function m(e) {
return (e >> 1) ^ -(1 & e);
}
(u.octEncodeFloat = function (e) {
return u.octEncode(e, f), u.octPackFloat(f);
}),
(u.octDecodeFloat = function (e, t) {
var a = e / 256,
n = Math.floor(a),
r = 256 * (a - n);
return u.octDecode(n, r, t);
}),
(u.octPack = function (e, t, a, n) {
var r = u.octEncodeFloat(e),
o = u.octEncodeFloat(t),
c = u.octEncode(a, f);
return (n.x = 65536 * c.x + r), (n.y = 65536 * c.y + o), n;
}),
(u.octUnpack = function (e, t, a, n) {
var r = e.x / 65536,
o = Math.floor(r),
c = 65536 * (r - o);
r = e.y / 65536;
var s = Math.floor(r),
i = 65536 * (r - s);
u.octDecodeFloat(c, t), u.octDecodeFloat(i, a), u.octDecode(o, s, n);
}),
(u.compressTextureCoordinates = function (e) {
return 4096 * ((4095 * e.x) | 0) + ((4095 * e.y) | 0);
}),
(u.decompressTextureCoordinates = function (e, t) {
var a = e / 4096,
n = Math.floor(a);
return (t.x = n / 4095), (t.y = (e - 4096 * n) / 4095), t;
}),
(u.zigZagDeltaDecode = function (e, t, a) {
for (var n = e.length, o = 0, c = 0, s = 0, u = 0; u < n; ++u)
(o += m(e[u])),
(c += m(t[u])),
(e[u] = o),
(t[u] = c),
r.defined(a) && ((s += m(a[u])), (a[u] = s));
}),
(u.dequantize = function (e, t, n, r) {
var o,
s = c.getNumberOfComponents(n);
switch (t) {
case a.ComponentDatatype.BYTE:
o = 127;
break;
case a.ComponentDatatype.UNSIGNED_BYTE:
o = 255;
break;
case a.ComponentDatatype.SHORT:
o = 32767;
break;
case a.ComponentDatatype.UNSIGNED_SHORT:
o = 65535;
break;
case a.ComponentDatatype.INT:
o = 2147483647;
break;
case a.ComponentDatatype.UNSIGNED_INT:
o = 4294967295;
}
for (var u = new Float32Array(r * s), i = 0; i < r; i++)
for (var C = 0; C < s; C++) {
var M = i * s + C;
u[M] = Math.max(e[M] / o, -1);
}
return u;
}),
(e.AttributeCompression = u);
});