@loaders.gl/math 3.1.0-beta.5 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es5/geometry/attributes/compute-bounding-box.js +34 -17
- package/dist/es5/geometry/attributes/compute-bounding-box.js.map +1 -1
- package/dist/es5/geometry/attributes/compute-vertex-normals.js +45 -30
- package/dist/es5/geometry/attributes/compute-vertex-normals.js.map +1 -1
- package/dist/es5/geometry/attributes/convert-to-non-indexed.js +29 -14
- package/dist/es5/geometry/attributes/convert-to-non-indexed.js.map +1 -1
- package/dist/es5/geometry/attributes/get-attribute-from-geometry.js +2 -4
- package/dist/es5/geometry/attributes/get-attribute-from-geometry.js.map +1 -1
- package/dist/es5/geometry/attributes/normalize.js +4 -2
- package/dist/es5/geometry/attributes/normalize.js.map +1 -1
- package/dist/es5/geometry/colors/rgb565.js +8 -7
- package/dist/es5/geometry/colors/rgb565.js.map +1 -1
- package/dist/es5/geometry/compression/attribute-compression.js +41 -39
- package/dist/es5/geometry/compression/attribute-compression.js.map +1 -1
- package/dist/es5/geometry/constants.js +15 -6
- package/dist/es5/geometry/constants.js.map +1 -1
- package/dist/es5/geometry/gl/gl-type.js +79 -63
- package/dist/es5/geometry/gl/gl-type.js.map +1 -1
- package/dist/es5/geometry/is-geometry.js +5 -1
- package/dist/es5/geometry/is-geometry.js.map +1 -1
- package/dist/es5/geometry/iterators/attribute-iterator.js +38 -9
- package/dist/es5/geometry/iterators/attribute-iterator.js.map +1 -1
- package/dist/es5/geometry/iterators/primitive-iterator.js +116 -75
- package/dist/es5/geometry/iterators/primitive-iterator.js.map +1 -1
- package/dist/es5/geometry/typed-arrays/typed-array-utils.js +9 -8
- package/dist/es5/geometry/typed-arrays/typed-array-utils.js.map +1 -1
- package/dist/es5/index.js +24 -24
- package/package.json +4 -4
|
@@ -9,25 +9,42 @@ var _attributeIterator = require("../iterators/attribute-iterator");
|
|
|
9
9
|
|
|
10
10
|
var _assert = require("../utils/assert");
|
|
11
11
|
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
13
|
+
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
+
|
|
16
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
+
|
|
18
|
+
function computeBoundingBox() {
|
|
19
|
+
var positions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
20
|
+
var min = [Number(Infinity), Number(Infinity), Number(Infinity)];
|
|
21
|
+
var max = [-Infinity, -Infinity, -Infinity];
|
|
22
|
+
|
|
23
|
+
var _iterator = _createForOfIteratorHelper((0, _attributeIterator.makeAttributeIterator)(positions)),
|
|
24
|
+
_step;
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
28
|
+
var position = _step.value;
|
|
29
|
+
var x = position[0];
|
|
30
|
+
var y = position[1];
|
|
31
|
+
var z = position[2];
|
|
32
|
+
if (x < min[0]) min[0] = x;
|
|
33
|
+
if (y < min[1]) min[1] = y;
|
|
34
|
+
if (z < min[2]) min[2] = z;
|
|
35
|
+
if (x > max[0]) max[0] = x;
|
|
36
|
+
if (y > max[1]) max[1] = y;
|
|
37
|
+
if (z > max[2]) max[2] = z;
|
|
38
|
+
}
|
|
39
|
+
} catch (err) {
|
|
40
|
+
_iterator.e(err);
|
|
41
|
+
} finally {
|
|
42
|
+
_iterator.f();
|
|
26
43
|
}
|
|
27
44
|
|
|
28
|
-
|
|
29
|
-
min,
|
|
30
|
-
max
|
|
45
|
+
var boundingBox = {
|
|
46
|
+
min: min,
|
|
47
|
+
max: max
|
|
31
48
|
};
|
|
32
49
|
validateBoundingBox(boundingBox);
|
|
33
50
|
return boundingBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/attributes/compute-bounding-box.ts"],"names":["computeBoundingBox","positions","min","Number","Infinity","max","position","x","y","z","boundingBox","validateBoundingBox","isFinite"],"mappings":";;;;;;;AAAA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/attributes/compute-bounding-box.ts"],"names":["computeBoundingBox","positions","min","Number","Infinity","max","position","x","y","z","boundingBox","validateBoundingBox","isFinite"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAcO,SAASA,kBAAT,GAAiD;AAAA,MAArBC,SAAqB,uEAAJ,EAAI;AACtD,MAAMC,GAAG,GAAG,CAACC,MAAM,CAACC,QAAD,CAAP,EAAmBD,MAAM,CAACC,QAAD,CAAzB,EAAqCD,MAAM,CAACC,QAAD,CAA3C,CAAZ;AACA,MAAMC,GAAG,GAAG,CAAC,CAACD,QAAF,EAAY,CAACA,QAAb,EAAuB,CAACA,QAAxB,CAAZ;;AAFsD,6CAI/B,8CAAsBH,SAAtB,CAJ+B;AAAA;;AAAA;AAItD,wDAAyD;AAAA,UAA9CK,QAA8C;AACvD,UAAMC,CAAC,GAAGD,QAAQ,CAAC,CAAD,CAAlB;AACA,UAAME,CAAC,GAAGF,QAAQ,CAAC,CAAD,CAAlB;AACA,UAAMG,CAAC,GAAGH,QAAQ,CAAC,CAAD,CAAlB;AAEA,UAAIC,CAAC,GAAGL,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASK,CAAT;AAChB,UAAIC,CAAC,GAAGN,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASM,CAAT;AAChB,UAAIC,CAAC,GAAGP,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASO,CAAT;AAEhB,UAAIF,CAAC,GAAGF,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASE,CAAT;AAChB,UAAIC,CAAC,GAAGH,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASG,CAAT;AAChB,UAAIC,CAAC,GAAGJ,GAAG,CAAC,CAAD,CAAX,EAAgBA,GAAG,CAAC,CAAD,CAAH,GAASI,CAAT;AACjB;AAhBqD;AAAA;AAAA;AAAA;AAAA;;AAkBtD,MAAMC,WAAW,GAAG;AAACR,IAAAA,GAAG,EAAHA,GAAD;AAAMG,IAAAA,GAAG,EAAHA;AAAN,GAApB;AACAM,EAAAA,mBAAmB,CAACD,WAAD,CAAnB;AACA,SAAOA,WAAP;AACD;;AAED,SAASC,mBAAT,CAA6BD,WAA7B,EAAuD;AACrD,sBACEP,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACR,GAAZ,CAAgB,CAAhB,CAAhB,KACEC,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACR,GAAZ,CAAgB,CAAhB,CAAhB,CADF,IAEEC,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACR,GAAZ,CAAgB,CAAhB,CAAhB,CAFF,IAGEC,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACL,GAAZ,CAAgB,CAAhB,CAAhB,CAHF,IAIEF,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACL,GAAZ,CAAgB,CAAhB,CAAhB,CAJF,IAKEF,MAAM,CAACS,QAAP,CAAgBF,WAAW,CAACL,GAAZ,CAAgB,CAAhB,CAAhB,CANJ;AAQD","sourcesContent":["import {makeAttributeIterator} from '../iterators/attribute-iterator';\nimport {assert} from '../utils/assert';\n\n/**\n * Type for Bounding Box computing\n */\ntype BoundingBox = {\n min: number[];\n max: number[];\n};\n/**\n * Getting bounding box geometry according to positions parameters\n * @param positions\n * @returns Bounding Box\n */\nexport function computeBoundingBox(positions: any = []) {\n const min = [Number(Infinity), Number(Infinity), Number(Infinity)];\n const max = [-Infinity, -Infinity, -Infinity];\n // @ts-ignore\n for (const position of makeAttributeIterator(positions)) {\n const x = position[0];\n const y = position[1];\n const z = position[2];\n\n if (x < min[0]) min[0] = x;\n if (y < min[1]) min[1] = y;\n if (z < min[2]) min[2] = z;\n\n if (x > max[0]) max[0] = x;\n if (y > max[1]) max[1] = y;\n if (z > max[2]) max[2] = z;\n }\n\n const boundingBox = {min, max};\n validateBoundingBox(boundingBox);\n return boundingBox;\n}\n\nfunction validateBoundingBox(boundingBox: BoundingBox) {\n assert(\n Number.isFinite(boundingBox.min[0]) &&\n Number.isFinite(boundingBox.min[1]) &&\n Number.isFinite(boundingBox.min[2]) &&\n Number.isFinite(boundingBox.max[0]) &&\n Number.isFinite(boundingBox.max[1]) &&\n Number.isFinite(boundingBox.max[2])\n );\n}\n"],"file":"compute-bounding-box.js"}
|
|
@@ -17,38 +17,53 @@ var _modes = require("../primitives/modes");
|
|
|
17
17
|
|
|
18
18
|
var _getAttributeFromGeometry = require("./get-attribute-from-geometry");
|
|
19
19
|
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
21
|
+
|
|
22
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
|
+
|
|
24
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
|
+
|
|
20
26
|
function computeVertexNormals(geometry) {
|
|
21
27
|
(0, _assert.assert)((0, _modes.getPrimitiveModeType)(geometry.mode) === _constants.GL.TRIANGLES, 'TRIANGLES required');
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
28
|
+
|
|
29
|
+
var _getPositions = (0, _getAttributeFromGeometry.getPositions)(geometry),
|
|
30
|
+
positions = _getPositions.values;
|
|
31
|
+
|
|
32
|
+
var normals = new Float32Array(positions.length);
|
|
33
|
+
var vectorA = new _core.Vector3();
|
|
34
|
+
var vectorB = new _core.Vector3();
|
|
35
|
+
var vectorC = new _core.Vector3();
|
|
36
|
+
var vectorCB = new _core.Vector3();
|
|
37
|
+
var vectorAB = new _core.Vector3();
|
|
38
|
+
|
|
39
|
+
var _iterator = _createForOfIteratorHelper((0, _primitiveIterator.makePrimitiveIterator)(geometry)),
|
|
40
|
+
_step;
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
44
|
+
var primitive = _step.value;
|
|
45
|
+
vectorA.fromArray(positions, primitive.i1 * 3);
|
|
46
|
+
vectorB.fromArray(positions, primitive.i2 * 3 + 3);
|
|
47
|
+
vectorC.fromArray(positions, primitive.i3 * 3 + 6);
|
|
48
|
+
vectorCB.subVectors(vectorC, vectorB);
|
|
49
|
+
vectorAB.subVectors(vectorA, vectorB);
|
|
50
|
+
var normal = vectorCB.cross(vectorAB);
|
|
51
|
+
normal.normalize();
|
|
52
|
+
var primitiveIndex = primitive.primitiveIndex;
|
|
53
|
+
normals[primitiveIndex * 9 + 0] = normal.x;
|
|
54
|
+
normals[primitiveIndex * 9 + 1] = normal.y;
|
|
55
|
+
normals[primitiveIndex * 9 + 2] = normal.z;
|
|
56
|
+
normals[primitiveIndex * 9 + 3] = normal.x;
|
|
57
|
+
normals[primitiveIndex * 9 + 4] = normal.y;
|
|
58
|
+
normals[primitiveIndex * 9 + 5] = normal.z;
|
|
59
|
+
normals[primitiveIndex * 9 + 6] = normal.x;
|
|
60
|
+
normals[primitiveIndex * 9 + 7] = normal.y;
|
|
61
|
+
normals[primitiveIndex * 9 + 8] = normal.z;
|
|
62
|
+
}
|
|
63
|
+
} catch (err) {
|
|
64
|
+
_iterator.e(err);
|
|
65
|
+
} finally {
|
|
66
|
+
_iterator.f();
|
|
52
67
|
}
|
|
53
68
|
|
|
54
69
|
return normals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/attributes/compute-vertex-normals.ts"],"names":["computeVertexNormals","geometry","mode","GL","TRIANGLES","
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/attributes/compute-vertex-normals.ts"],"names":["computeVertexNormals","geometry","mode","GL","TRIANGLES","positions","values","normals","Float32Array","length","vectorA","Vector3","vectorB","vectorC","vectorCB","vectorAB","primitive","fromArray","i1","i2","i3","subVectors","normal","cross","normalize","primitiveIndex","x","y","z"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAaO,SAASA,oBAAT,CAA8BC,QAA9B,EAAgE;AAErE,sBAAO,iCAAqBA,QAAQ,CAACC,IAA9B,MAAwCC,cAAGC,SAAlD,EAA6D,oBAA7D;;AAEA,sBAA4B,4CAAaH,QAAb,CAA5B;AAAA,MAAeI,SAAf,iBAAOC,MAAP;;AAEA,MAAMC,OAAO,GAAG,IAAIC,YAAJ,CAAiBH,SAAS,CAACI,MAA3B,CAAhB;AAEA,MAAMC,OAAO,GAAG,IAAIC,aAAJ,EAAhB;AACA,MAAMC,OAAO,GAAG,IAAID,aAAJ,EAAhB;AACA,MAAME,OAAO,GAAG,IAAIF,aAAJ,EAAhB;AAEA,MAAMG,QAAQ,GAAG,IAAIH,aAAJ,EAAjB;AACA,MAAMI,QAAQ,GAAG,IAAIJ,aAAJ,EAAjB;;AAbqE,6CAe7C,8CAAsBV,QAAtB,CAf6C;AAAA;;AAAA;AAerE,wDAAyD;AAAA,UAA9Ce,SAA8C;AACvDN,MAAAA,OAAO,CAACO,SAAR,CAAkBZ,SAAlB,EAA6BW,SAAS,CAACE,EAAV,GAAe,CAA5C;AACAN,MAAAA,OAAO,CAACK,SAAR,CAAkBZ,SAAlB,EAA6BW,SAAS,CAACG,EAAV,GAAe,CAAf,GAAmB,CAAhD;AACAN,MAAAA,OAAO,CAACI,SAAR,CAAkBZ,SAAlB,EAA6BW,SAAS,CAACI,EAAV,GAAe,CAAf,GAAmB,CAAhD;AAEAN,MAAAA,QAAQ,CAACO,UAAT,CAAoBR,OAApB,EAA6BD,OAA7B;AACAG,MAAAA,QAAQ,CAACM,UAAT,CAAoBX,OAApB,EAA6BE,OAA7B;AACA,UAAMU,MAAM,GAAGR,QAAQ,CAACS,KAAT,CAAeR,QAAf,CAAf;AACAO,MAAAA,MAAM,CAACE,SAAP;AAEA,UAAOC,cAAP,GAAyBT,SAAzB,CAAOS,cAAP;AAEAlB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACI,CAAzC;AACAnB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACK,CAAzC;AACApB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACM,CAAzC;AAEArB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACI,CAAzC;AACAnB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACK,CAAzC;AACApB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACM,CAAzC;AAEArB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACI,CAAzC;AACAnB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACK,CAAzC;AACApB,MAAAA,OAAO,CAACkB,cAAc,GAAG,CAAjB,GAAqB,CAAtB,CAAP,GAAkCH,MAAM,CAACM,CAAzC;AACD;AAtCoE;AAAA;AAAA;AAAA;AAAA;;AAwCrE,SAAOrB,OAAP;AACD","sourcesContent":["import type {TypedArray} from '../types';\nimport {Vector3} from '@math.gl/core';\nimport {GL} from '../constants';\nimport {assert} from '../utils/assert';\nimport {makePrimitiveIterator} from '../iterators/primitive-iterator';\nimport {getPrimitiveModeType} from '../primitives/modes';\nimport {getPositions} from './get-attribute-from-geometry';\n\ntype Geometry = {\n mode: any;\n indices?: {size: number; values: TypedArray};\n attributes?: {};\n};\n/**\n * Computes vertex normals for a geometry\n * @param param0\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport function computeVertexNormals(geometry: Geometry): Float32Array {\n // Only support GL.TRIANGLES, GL.TRIANGLE_STRIP, GL.TRIANGLE_FAN\n assert(getPrimitiveModeType(geometry.mode) === GL.TRIANGLES, 'TRIANGLES required');\n\n const {values: positions} = getPositions(geometry);\n\n const normals = new Float32Array(positions.length);\n\n const vectorA = new Vector3();\n const vectorB = new Vector3();\n const vectorC = new Vector3();\n\n const vectorCB = new Vector3();\n const vectorAB = new Vector3();\n\n for (const primitive of makePrimitiveIterator(geometry)) {\n vectorA.fromArray(positions, primitive.i1 * 3);\n vectorB.fromArray(positions, primitive.i2 * 3 + 3);\n vectorC.fromArray(positions, primitive.i3 * 3 + 6);\n\n vectorCB.subVectors(vectorC, vectorB);\n vectorAB.subVectors(vectorA, vectorB);\n const normal = vectorCB.cross(vectorAB);\n normal.normalize();\n // @ts-ignore\n const {primitiveIndex} = primitive;\n\n normals[primitiveIndex * 9 + 0] = normal.x;\n normals[primitiveIndex * 9 + 1] = normal.y;\n normals[primitiveIndex * 9 + 2] = normal.z;\n\n normals[primitiveIndex * 9 + 3] = normal.x;\n normals[primitiveIndex * 9 + 4] = normal.y;\n normals[primitiveIndex * 9 + 5] = normal.z;\n\n normals[primitiveIndex * 9 + 6] = normal.x;\n normals[primitiveIndex * 9 + 7] = normal.y;\n normals[primitiveIndex * 9 + 8] = normal.z;\n }\n\n return normals;\n}\n"],"file":"compute-vertex-normals.js"}
|
|
@@ -5,18 +5,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.convertBuffersToNonIndexed = convertBuffersToNonIndexed;
|
|
7
7
|
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
9
|
+
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
+
|
|
14
|
+
function convertBuffersToNonIndexed(_ref) {
|
|
15
|
+
var indices = _ref.indices,
|
|
16
|
+
attributes = _ref.attributes;
|
|
17
|
+
var geometry2 = new BufferGeometry();
|
|
18
|
+
|
|
19
|
+
for (var name in attributes) {
|
|
20
|
+
var attribute = attributes[name];
|
|
21
|
+
var array = attribute.array;
|
|
22
|
+
var itemSize = attribute.itemSize;
|
|
23
|
+
var array2 = new array.constructor(indices.length * itemSize);
|
|
24
|
+
var index = 0,
|
|
20
25
|
index2 = 0;
|
|
21
26
|
|
|
22
27
|
for (var i = 0, l = indices.length; i < l; i++) {
|
|
@@ -30,8 +35,18 @@ function convertBuffersToNonIndexed({
|
|
|
30
35
|
geometry2.addAttribute(name, new BufferAttribute(array2, itemSize));
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
var _iterator = _createForOfIteratorHelper(this.groups),
|
|
39
|
+
_step;
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
43
|
+
var group = _step.value;
|
|
44
|
+
geometry2.addGroup(group.start, group.count, group.materialIndex);
|
|
45
|
+
}
|
|
46
|
+
} catch (err) {
|
|
47
|
+
_iterator.e(err);
|
|
48
|
+
} finally {
|
|
49
|
+
_iterator.f();
|
|
35
50
|
}
|
|
36
51
|
|
|
37
52
|
return geometry2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/attributes/convert-to-non-indexed.ts"],"names":["convertBuffersToNonIndexed","indices","attributes","geometry2","BufferGeometry","name","attribute","array","itemSize","array2","constructor","length","index","index2","i","l","j","addAttribute","BufferAttribute","
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/attributes/convert-to-non-indexed.ts"],"names":["convertBuffersToNonIndexed","indices","attributes","geometry2","BufferGeometry","name","attribute","array","itemSize","array2","constructor","length","index","index2","i","l","j","addAttribute","BufferAttribute","groups","group","addGroup","start","count","materialIndex"],"mappings":";;;;;;;;;;;;;AAQO,SAASA,0BAAT,OAAgE;AAAA,MAA3BC,OAA2B,QAA3BA,OAA2B;AAAA,MAAlBC,UAAkB,QAAlBA,UAAkB;AACrE,MAAMC,SAAS,GAAG,IAAIC,cAAJ,EAAlB;;AAEA,OAAK,IAAMC,IAAX,IAAmBH,UAAnB,EAA+B;AAC7B,QAAMI,SAAS,GAAGJ,UAAU,CAACG,IAAD,CAA5B;AAEA,QAAME,KAAK,GAAGD,SAAS,CAACC,KAAxB;AACA,QAAMC,QAAQ,GAAGF,SAAS,CAACE,QAA3B;AAEA,QAAMC,MAAM,GAAG,IAAIF,KAAK,CAACG,WAAV,CAAsBT,OAAO,CAACU,MAAR,GAAiBH,QAAvC,CAAf;AACA,QAAII,KAAK,GAAG,CAAZ;AAAA,QACEC,MAAM,GAAG,CADX;;AAGA,SAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,CAAC,GAAGd,OAAO,CAACU,MAA5B,EAAoCG,CAAC,GAAGC,CAAxC,EAA2CD,CAAC,EAA5C,EAAgD;AAC9CF,MAAAA,KAAK,GAAGX,OAAO,CAACa,CAAD,CAAP,GAAaN,QAArB;;AACA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,QAApB,EAA8BQ,CAAC,EAA/B,EAAmC;AACjCP,QAAAA,MAAM,CAACI,MAAM,EAAP,CAAN,GAAmBN,KAAK,CAACK,KAAK,EAAN,CAAxB;AACD;AACF;;AACDT,IAAAA,SAAS,CAACc,YAAV,CAAuBZ,IAAvB,EAA6B,IAAIa,eAAJ,CAAoBT,MAApB,EAA4BD,QAA5B,CAA7B;AACD;;AApBoE,6CAsBjD,KAAKW,MAtB4C;AAAA;;AAAA;AAsBrE,wDAAiC;AAAA,UAAtBC,KAAsB;AAC/BjB,MAAAA,SAAS,CAACkB,QAAV,CAAmBD,KAAK,CAACE,KAAzB,EAAgCF,KAAK,CAACG,KAAtC,EAA6CH,KAAK,CAACI,aAAnD;AACD;AAxBoE;AAAA;AAAA;AAAA;AAAA;;AA0BrE,SAAOrB,SAAP;AACD","sourcesContent":["/* eslint-disable */\n// @ts-nocheck\n/**\n * Converts indices of geometry.\n *\n * @param param0\n * @returns no indexed geometry\n */\nexport function convertBuffersToNonIndexed({indices, attributes}): any {\n const geometry2 = new BufferGeometry();\n\n for (const name in attributes) {\n const attribute = attributes[name];\n\n const array = attribute.array;\n const itemSize = attribute.itemSize;\n\n const array2 = new array.constructor(indices.length * itemSize);\n let index = 0,\n index2 = 0;\n\n for (var i = 0, l = indices.length; i < l; i++) {\n index = indices[i] * itemSize;\n for (var j = 0; j < itemSize; j++) {\n array2[index2++] = array[index++];\n }\n }\n geometry2.addAttribute(name, new BufferAttribute(array2, itemSize));\n }\n\n for (const group of this.groups) {\n geometry2.addGroup(group.start, group.count, group.materialIndex);\n }\n\n return geometry2;\n}\n"],"file":"convert-to-non-indexed.js"}
|
|
@@ -13,10 +13,8 @@ var _assert = require("../utils/assert");
|
|
|
13
13
|
|
|
14
14
|
function getPositions(geometry) {
|
|
15
15
|
if ((0, _isGeometry.default)(geometry)) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} = geometry;
|
|
19
|
-
const position = attributes.POSITION || attributes.positions;
|
|
16
|
+
var attributes = geometry.attributes;
|
|
17
|
+
var position = attributes.POSITION || attributes.positions;
|
|
20
18
|
(0, _assert.assert)(position);
|
|
21
19
|
return position;
|
|
22
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/attributes/get-attribute-from-geometry.ts"],"names":["getPositions","geometry","attributes","position","POSITION","positions","ArrayBuffer","isView","values","size"],"mappings":";;;;;;;;;AAAA;;AACA;;AASO,SAASA,YAAT,CAAsBC,QAAtB,EAAqC;AAE1C,MAAI,yBAAWA,QAAX,CAAJ,EAA0B;AACxB,
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/attributes/get-attribute-from-geometry.ts"],"names":["getPositions","geometry","attributes","position","POSITION","positions","ArrayBuffer","isView","values","size"],"mappings":";;;;;;;;;AAAA;;AACA;;AASO,SAASA,YAAT,CAAsBC,QAAtB,EAAqC;AAE1C,MAAI,yBAAWA,QAAX,CAAJ,EAA0B;AACxB,QAAOC,UAAP,GAAqBD,QAArB,CAAOC,UAAP;AACA,QAAMC,QAAQ,GAAGD,UAAU,CAACE,QAAX,IAAuBF,UAAU,CAACG,SAAnD;AACA,wBAAOF,QAAP;AACA,WAAOA,QAAP;AACD;;AAGD,MAAIG,WAAW,CAACC,MAAZ,CAAmBN,QAAnB,CAAJ,EAAkC;AAChC,WAAO;AAACO,MAAAA,MAAM,EAAEP,QAAT;AAAmBQ,MAAAA,IAAI,EAAE;AAAzB,KAAP;AACD;;AAGD,MAAIR,QAAJ,EAAc;AACZ,wBAAOA,QAAQ,CAACO,MAAhB;AACA,WAAOP,QAAP;AACD;;AAED,SAAO,oBAAO,KAAP,CAAP;AACD","sourcesContent":["import isGeometry from '../is-geometry';\nimport {assert} from '../utils/assert';\n\n/**\n * analyze positions of geometry\n *\n * @param geometry\n * @returns Position| New geometry |assert\n */\n\nexport function getPositions(geometry: any) {\n // If geometry, extract positions\n if (isGeometry(geometry)) {\n const {attributes} = geometry;\n const position = attributes.POSITION || attributes.positions;\n assert(position);\n return position;\n }\n\n // If arraybuffer, assume 3 components\n if (ArrayBuffer.isView(geometry)) {\n return {values: geometry, size: 3};\n }\n\n // Else assume accessor object\n if (geometry) {\n assert(geometry.values);\n return geometry;\n }\n\n return assert(false);\n}\n"],"file":"get-attribute-from-geometry.js"}
|
|
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.normalize = normalize;
|
|
7
7
|
|
|
8
|
-
function normalize(
|
|
8
|
+
function normalize() {
|
|
9
|
+
var normals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
10
|
+
var vector = arguments.length > 1 ? arguments[1] : undefined;
|
|
9
11
|
normals = this.attributes.normal;
|
|
10
12
|
|
|
11
|
-
for (
|
|
13
|
+
for (var i = 0, il = normals.count; i < il; i++) {
|
|
12
14
|
vector.x = normals.getX(i);
|
|
13
15
|
vector.y = normals.getY(i);
|
|
14
16
|
vector.z = normals.getZ(i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/attributes/normalize.ts"],"names":["normalize","normals","vector","attributes","normal","i","il","count","x","getX","y","getY","z","getZ","setXYZ"],"mappings":";;;;;;;AAQO,SAASA,SAAT,
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/attributes/normalize.ts"],"names":["normalize","normals","vector","attributes","normal","i","il","count","x","getX","y","getY","z","getZ","setXYZ"],"mappings":";;;;;;;AAQO,SAASA,SAAT,GAAuD;AAAA,MAApCC,OAAoC,uEAArB,EAAqB;AAAA,MAAjBC,MAAiB;AAE5DD,EAAAA,OAAO,GAAG,KAAKE,UAAL,CAAgBC,MAA1B;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,EAAE,GAAGL,OAAO,CAACM,KAA7B,EAAoCF,CAAC,GAAGC,EAAxC,EAA4CD,CAAC,EAA7C,EAAiD;AAC/CH,IAAAA,MAAM,CAACM,CAAP,GAAWP,OAAO,CAACQ,IAAR,CAAaJ,CAAb,CAAX;AACAH,IAAAA,MAAM,CAACQ,CAAP,GAAWT,OAAO,CAACU,IAAR,CAAaN,CAAb,CAAX;AACAH,IAAAA,MAAM,CAACU,CAAP,GAAWX,OAAO,CAACY,IAAR,CAAaR,CAAb,CAAX;AACAH,IAAAA,MAAM,CAACF,SAAP;AACAC,IAAAA,OAAO,CAACa,MAAR,CAAeT,CAAf,EAAkBH,MAAM,CAACM,CAAzB,EAA4BN,MAAM,CAACQ,CAAnC,EAAsCR,MAAM,CAACU,CAA7C;AACD;AACF","sourcesContent":["/* eslint-disable */\nimport {Vector3} from '@math.gl/core';\n\n/**\n * Setting X, Y, Z for Vector\n * @param normals\n * @param vector\n */\nexport function normalize(normals: any = {}, vector: Vector3) {\n //@ts-ignore\n normals = this.attributes.normal;\n for (let i = 0, il = normals.count; i < il; i++) {\n vector.x = normals.getX(i);\n vector.y = normals.getY(i);\n vector.z = normals.getZ(i);\n vector.normalize();\n normals.setXYZ(i, vector.x, vector.y, vector.z);\n }\n}\n"],"file":"normalize.js"}
|
|
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.decodeRGB565 = decodeRGB565;
|
|
7
7
|
exports.encodeRGB565 = encodeRGB565;
|
|
8
8
|
|
|
9
|
-
function decodeRGB565(rgb565
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
function decodeRGB565(rgb565) {
|
|
10
|
+
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0];
|
|
11
|
+
var r5 = rgb565 >> 11 & 31;
|
|
12
|
+
var g6 = rgb565 >> 5 & 63;
|
|
13
|
+
var b5 = rgb565 & 31;
|
|
13
14
|
target[0] = r5 << 3;
|
|
14
15
|
target[1] = g6 << 2;
|
|
15
16
|
target[2] = b5 << 3;
|
|
@@ -17,9 +18,9 @@ function decodeRGB565(rgb565, target = [0, 0, 0]) {
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
function encodeRGB565(rgb) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
var r5 = Math.floor(rgb[0] / 8) + 4;
|
|
22
|
+
var g6 = Math.floor(rgb[1] / 4) + 2;
|
|
23
|
+
var b5 = Math.floor(rgb[2] / 8) + 4;
|
|
23
24
|
return r5 + (g6 << 5) + (b5 << 11);
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=rgb565.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/geometry/colors/rgb565.ts"],"names":["decodeRGB565","rgb565","target","r5","g6","b5","encodeRGB565","rgb","Math","floor"],"mappings":";;;;;;;;AAMO,SAASA,YAAT,CAAsBC,MAAtB,
|
|
1
|
+
{"version":3,"sources":["../../../../src/geometry/colors/rgb565.ts"],"names":["decodeRGB565","rgb565","target","r5","g6","b5","encodeRGB565","rgb","Math","floor"],"mappings":";;;;;;;;AAMO,SAASA,YAAT,CAAsBC,MAAtB,EAA8E;AAAA,MAAxCC,MAAwC,uEAArB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAqB;AACnF,MAAMC,EAAE,GAAIF,MAAM,IAAI,EAAX,GAAiB,EAA5B;AACA,MAAMG,EAAE,GAAIH,MAAM,IAAI,CAAX,GAAgB,EAA3B;AACA,MAAMI,EAAE,GAAGJ,MAAM,GAAG,EAApB;AAEAC,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAYC,EAAE,IAAI,CAAlB;AACAD,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAYE,EAAE,IAAI,CAAlB;AACAF,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAYG,EAAE,IAAI,CAAlB;AAEA,SAAOH,MAAP;AACD;;AAOM,SAASI,YAAT,CAAsBC,GAAtB,EAA6C;AAClD,MAAMJ,EAAE,GAAGK,IAAI,CAACC,KAAL,CAAWF,GAAG,CAAC,CAAD,CAAH,GAAS,CAApB,IAAyB,CAApC;AACA,MAAMH,EAAE,GAAGI,IAAI,CAACC,KAAL,CAAWF,GAAG,CAAC,CAAD,CAAH,GAAS,CAApB,IAAyB,CAApC;AACA,MAAMF,EAAE,GAAGG,IAAI,CAACC,KAAL,CAAWF,GAAG,CAAC,CAAD,CAAH,GAAS,CAApB,IAAyB,CAApC;AACA,SAAOJ,EAAE,IAAIC,EAAE,IAAI,CAAV,CAAF,IAAkBC,EAAE,IAAI,EAAxB,CAAP;AACD","sourcesContent":["/**\n * Decode color values\n * @param rgb565\n * @param target\n * @returns target\n */\nexport function decodeRGB565(rgb565: number, target: number[] = [0, 0, 0]): number[] {\n const r5 = (rgb565 >> 11) & 31;\n const g6 = (rgb565 >> 5) & 63;\n const b5 = rgb565 & 31;\n\n target[0] = r5 << 3;\n target[1] = g6 << 2;\n target[2] = b5 << 3;\n\n return target;\n}\n\n/**\n * Encode color values\n * @param rgb\n * @returns color\n */\nexport function encodeRGB565(rgb: number[]): number {\n const r5 = Math.floor(rgb[0] / 8) + 4;\n const g6 = Math.floor(rgb[1] / 4) + 2;\n const b5 = Math.floor(rgb[2] / 8) + 4;\n return r5 + (g6 << 5) + (b5 << 11);\n}\n"],"file":"rgb565.js"}
|
|
@@ -22,24 +22,26 @@ var _core = require("@math.gl/core");
|
|
|
22
22
|
|
|
23
23
|
var _assert = require("../utils/assert");
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
var RIGHT_SHIFT = 1.0 / 256.0;
|
|
26
|
+
var LEFT_SHIFT = 256.0;
|
|
27
|
+
var scratchVector2 = new _core.Vector2();
|
|
28
|
+
var scratchVector3 = new _core.Vector3();
|
|
29
|
+
var scratchEncodeVector2 = new _core.Vector2();
|
|
30
|
+
var octEncodeScratch = new _core.Vector2();
|
|
31
|
+
var uint8ForceArray = new Uint8Array(1);
|
|
32
32
|
|
|
33
33
|
function forceUint8(value) {
|
|
34
34
|
uint8ForceArray[0] = value;
|
|
35
35
|
return uint8ForceArray[0];
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function fromSNorm(value
|
|
38
|
+
function fromSNorm(value) {
|
|
39
|
+
var rangeMaximum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255;
|
|
39
40
|
return (0, _core.clamp)(value, 0.0, rangeMaximum) / rangeMaximum * 2.0 - 1.0;
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
function toSNorm(value
|
|
43
|
+
function toSNorm(value) {
|
|
44
|
+
var rangeMaximum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255;
|
|
43
45
|
return Math.round(((0, _core.clamp)(value, -1.0, 1.0) * 0.5 + 0.5) * rangeMaximum);
|
|
44
46
|
}
|
|
45
47
|
|
|
@@ -50,14 +52,14 @@ function signNotZero(value) {
|
|
|
50
52
|
function octEncodeInRange(vector, rangeMax, result) {
|
|
51
53
|
(0, _assert.assert)(vector);
|
|
52
54
|
(0, _assert.assert)(result);
|
|
53
|
-
|
|
55
|
+
var vector3 = scratchVector3.from(vector);
|
|
54
56
|
(0, _assert.assert)(Math.abs(vector3.magnitudeSquared() - 1.0) <= _core._MathUtils.EPSILON6);
|
|
55
57
|
result.x = vector.x / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));
|
|
56
58
|
result.y = vector.y / (Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z));
|
|
57
59
|
|
|
58
60
|
if (vector.z < 0) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
var x = result.x;
|
|
62
|
+
var y = result.y;
|
|
61
63
|
result.x = (1.0 - Math.abs(y)) * signNotZero(x);
|
|
62
64
|
result.y = (1.0 - Math.abs(x)) * signNotZero(y);
|
|
63
65
|
}
|
|
@@ -92,7 +94,7 @@ function octDecodeInRange(x, y, rangeMax, result) {
|
|
|
92
94
|
result.z = 1.0 - (Math.abs(result.x) + Math.abs(result.y));
|
|
93
95
|
|
|
94
96
|
if (result.z < 0.0) {
|
|
95
|
-
|
|
97
|
+
var oldVX = result.x;
|
|
96
98
|
result.x = (1.0 - Math.abs(result.y)) * signNotZero(oldVX);
|
|
97
99
|
result.y = (1.0 - Math.abs(oldVX)) * signNotZero(result.y);
|
|
98
100
|
}
|
|
@@ -107,22 +109,22 @@ function octDecode(x, y, result) {
|
|
|
107
109
|
function octDecodeFromVector4(encoded, result) {
|
|
108
110
|
(0, _assert.assert)(encoded);
|
|
109
111
|
(0, _assert.assert)(result);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
var x = encoded.x;
|
|
113
|
+
var y = encoded.y;
|
|
114
|
+
var z = encoded.z;
|
|
115
|
+
var w = encoded.w;
|
|
114
116
|
|
|
115
117
|
if (x < 0 || x > 255 || y < 0 || y > 255 || z < 0 || z > 255 || w < 0 || w > 255) {
|
|
116
118
|
throw new Error('x, y, z, and w must be unsigned normalized integers between 0 and 255');
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
var xOct16 = x * LEFT_SHIFT + y;
|
|
122
|
+
var yOct16 = z * LEFT_SHIFT + w;
|
|
121
123
|
return octDecodeInRange(xOct16, yOct16, 65535, result);
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
function octPackFloat(encoded) {
|
|
125
|
-
|
|
127
|
+
var vector2 = scratchVector2.from(encoded);
|
|
126
128
|
return 256.0 * vector2.x + vector2.y;
|
|
127
129
|
}
|
|
128
130
|
|
|
@@ -133,9 +135,9 @@ function octEncodeFloat(vector) {
|
|
|
133
135
|
|
|
134
136
|
function octDecodeFloat(value, result) {
|
|
135
137
|
(0, _assert.assert)(Number.isFinite(value));
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
var temp = value / 256.0;
|
|
139
|
+
var x = Math.floor(temp);
|
|
140
|
+
var y = (temp - x) * 256.0;
|
|
139
141
|
return octDecode(x, y, result);
|
|
140
142
|
}
|
|
141
143
|
|
|
@@ -144,35 +146,35 @@ function octPack(v1, v2, v3, result) {
|
|
|
144
146
|
(0, _assert.assert)(v2);
|
|
145
147
|
(0, _assert.assert)(v3);
|
|
146
148
|
(0, _assert.assert)(result);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
149
|
+
var encoded1 = octEncodeFloat(v1);
|
|
150
|
+
var encoded2 = octEncodeFloat(v2);
|
|
151
|
+
var encoded3 = octEncode(v3, scratchEncodeVector2);
|
|
150
152
|
result.x = 65536.0 * encoded3.x + encoded1;
|
|
151
153
|
result.y = 65536.0 * encoded3.y + encoded2;
|
|
152
154
|
return result;
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
function octUnpack(packed, v1, v2, v3) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
158
|
+
var temp = packed.x / 65536.0;
|
|
159
|
+
var x = Math.floor(temp);
|
|
160
|
+
var encodedFloat1 = (temp - x) * 65536.0;
|
|
159
161
|
temp = packed.y / 65536.0;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
+
var y = Math.floor(temp);
|
|
163
|
+
var encodedFloat2 = (temp - y) * 65536.0;
|
|
162
164
|
octDecodeFloat(encodedFloat1, v1);
|
|
163
165
|
octDecodeFloat(encodedFloat2, v2);
|
|
164
166
|
octDecode(x, y, v3);
|
|
165
167
|
}
|
|
166
168
|
|
|
167
169
|
function compressTextureCoordinates(textureCoordinates) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
var x = textureCoordinates.x * 4095.0 | 0;
|
|
171
|
+
var y = textureCoordinates.y * 4095.0 | 0;
|
|
170
172
|
return 4096.0 * x + y;
|
|
171
173
|
}
|
|
172
174
|
|
|
173
175
|
function decompressTextureCoordinates(compressed, result) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
+
var temp = compressed / 4096.0;
|
|
177
|
+
var xZeroTo4095 = Math.floor(temp);
|
|
176
178
|
result.x = xZeroTo4095 / 4095.0;
|
|
177
179
|
result.y = (compressed - xZeroTo4095 * 4096) / 4095;
|
|
178
180
|
return result;
|
|
@@ -191,11 +193,11 @@ function zigZagDeltaDecode(uBuffer, vBuffer, heightBuffer) {
|
|
|
191
193
|
return value >> 1 ^ -(value & 1);
|
|
192
194
|
}
|
|
193
195
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
196
|
+
var u = 0;
|
|
197
|
+
var v = 0;
|
|
198
|
+
var height = 0;
|
|
197
199
|
|
|
198
|
-
for (
|
|
200
|
+
for (var i = 0; i < uBuffer.length; ++i) {
|
|
199
201
|
u += zigZagDecode(uBuffer[i]);
|
|
200
202
|
v += zigZagDecode(vBuffer[i]);
|
|
201
203
|
uBuffer[i] = u;
|