@deck.gl/aggregation-layers 9.0.0-alpha.4 → 9.0.0-alpha.6

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/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright Vis.gl contributors.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
package/dist/dist.dev.js CHANGED
@@ -758,21 +758,21 @@ var __exports__ = (() => {
758
758
  return GL2;
759
759
  }({});
760
760
 
761
- // ../../../luma.gl/modules/engine/dist/model/model.js
761
+ // ../../node_modules/@luma.gl/engine/dist/model/model.js
762
762
  var import_core3 = __toESM(require_core2(), 1);
763
763
  var import_core4 = __toESM(require_core2(), 1);
764
764
 
765
- // ../../../luma.gl/modules/shadertools/dist/lib/glsl-utils/highlight.js
765
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/highlight.js
766
766
  var glsl = (x) => `${x}`;
767
767
 
768
- // ../../../luma.gl/modules/shadertools/dist/lib/utils/assert.js
768
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/utils/assert.js
769
769
  function assert(condition, message2) {
770
770
  if (!condition) {
771
771
  throw new Error(message2 || "shadertools: assertion failed.");
772
772
  }
773
773
  }
774
774
 
775
- // ../../../luma.gl/modules/shadertools/dist/lib/filters/prop-types.js
775
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/filters/prop-types.js
776
776
  var DEFAULT_PROP_VALIDATORS = {
777
777
  number: {
778
778
  type: "number",
@@ -853,7 +853,7 @@ var __exports__ = (() => {
853
853
  return typeof value;
854
854
  }
855
855
 
856
- // ../../../luma.gl/modules/shadertools/dist/module-injectors.js
856
+ // ../../node_modules/@luma.gl/shadertools/dist/module-injectors.js
857
857
  var MODULE_INJECTORS_VS = glsl`\
858
858
  #ifdef MODULE_LOGDEPTH
859
859
  logdepth_adjustPosition(gl_Position);
@@ -882,7 +882,7 @@ var __exports__ = (() => {
882
882
  #endif
883
883
  `;
884
884
 
885
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/shader-injections.js
885
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-injections.js
886
886
  var MODULE_INJECTORS = {
887
887
  vertex: MODULE_INJECTORS_VS,
888
888
  fragment: MODULE_INJECTORS_FS
@@ -974,7 +974,7 @@ var __exports__ = (() => {
974
974
  return source;
975
975
  }
976
976
 
977
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-module/shader-module-instance.js
977
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module-instance.js
978
978
  var ShaderModuleInstance = class {
979
979
  static instantiateModules(modules) {
980
980
  return modules.map((module) => {
@@ -1004,7 +1004,7 @@ var __exports__ = (() => {
1004
1004
  vs,
1005
1005
  fs,
1006
1006
  dependencies = [],
1007
- uniformPropTypes = {},
1007
+ uniforms = {},
1008
1008
  getUniforms: getUniforms2,
1009
1009
  deprecations = [],
1010
1010
  defines = {},
@@ -1019,8 +1019,8 @@ var __exports__ = (() => {
1019
1019
  this.deprecations = this._parseDeprecationDefinitions(deprecations);
1020
1020
  this.defines = defines;
1021
1021
  this.injections = normalizeInjections(inject);
1022
- if (uniformPropTypes) {
1023
- this.uniforms = makePropValidators(uniformPropTypes);
1022
+ if (uniforms) {
1023
+ this.uniforms = makePropValidators(uniforms);
1024
1024
  }
1025
1025
  }
1026
1026
  getModuleSource(stage) {
@@ -1092,7 +1092,7 @@ ${moduleSource}// END MODULE_${this.name}
1092
1092
  }
1093
1093
  };
1094
1094
 
1095
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/resolve-modules.js
1095
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/resolve-modules.js
1096
1096
  function resolveModules(modules) {
1097
1097
  const instances = ShaderModuleInstance.instantiateModules(modules);
1098
1098
  return getShaderDependencies(instances);
@@ -1136,7 +1136,7 @@ ${moduleSource}// END MODULE_${this.name}
1136
1136
  }
1137
1137
  }
1138
1138
 
1139
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/platform-defines.js
1139
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/platform-defines.js
1140
1140
  function getPlatformShaderDefines(platformInfo) {
1141
1141
  switch (platformInfo === null || platformInfo === void 0 ? void 0 : platformInfo.gpu.toLowerCase()) {
1142
1142
  case "apple":
@@ -1236,7 +1236,7 @@ ${moduleSource}// END MODULE_${this.name}
1236
1236
  return versionDefines;
1237
1237
  }
1238
1238
 
1239
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-transpiler/transpile-glsl-shader.js
1239
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-transpiler/transpile-glsl-shader.js
1240
1240
  function transpileGLSLShader(source, targetGLSLVersion, stage) {
1241
1241
  switch (targetGLSLVersion) {
1242
1242
  case 300:
@@ -1302,7 +1302,7 @@ ${match}`).replace(new RegExp(`\\b${ES100_FRAGMENT_OUTPUT_NAME}\\b`, "g"), outpu
1302
1302
  return new RegExp(`\\b${qualifier}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`, "g");
1303
1303
  }
1304
1304
 
1305
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/shader-hooks.js
1305
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-hooks.js
1306
1306
  function getShaderHooks(hookFunctions, hookInjections) {
1307
1307
  let result = "";
1308
1308
  for (const hookName in hookFunctions) {
@@ -1362,7 +1362,7 @@ ${match}`).replace(new RegExp(`\\b${ES100_FRAGMENT_OUTPUT_NAME}\\b`, "g"), outpu
1362
1362
  return result;
1363
1363
  }
1364
1364
 
1365
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/assemble-shaders.js
1365
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/assemble-shaders.js
1366
1366
  var INJECT_SHADER_DECLARATIONS = `
1367
1367
 
1368
1368
  ${DECLARATION_INJECT_MARKER}
@@ -1634,7 +1634,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
1634
1634
  return sourceText;
1635
1635
  }
1636
1636
 
1637
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembly/select-shaders.js
1637
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/select-shaders.js
1638
1638
  function selectShaders(platformInfo, props) {
1639
1639
  if (!props.vs) {
1640
1640
  throw new Error("no vertex shader");
@@ -1668,7 +1668,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
1668
1668
  }
1669
1669
  }
1670
1670
 
1671
- // ../../../luma.gl/modules/shadertools/dist/lib/shader-assembler.js
1671
+ // ../../node_modules/@luma.gl/shadertools/dist/lib/shader-assembler.js
1672
1672
  var ShaderAssembler = class {
1673
1673
  constructor() {
1674
1674
  this._hookFunctions = [];
@@ -1731,7 +1731,216 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
1731
1731
  };
1732
1732
  ShaderAssembler.defaultShaderAssembler = void 0;
1733
1733
 
1734
- // ../../../luma.gl/modules/engine/dist/geometry/gpu-geometry.js
1734
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-utils.js
1735
+ function fp64ify(a) {
1736
+ let out = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
1737
+ let startIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
1738
+ const hiPart = Math.fround(a);
1739
+ const loPart = a - hiPart;
1740
+ out[startIndex] = hiPart;
1741
+ out[startIndex + 1] = loPart;
1742
+ return out;
1743
+ }
1744
+ function fp64LowPart(a) {
1745
+ return a - Math.fround(a);
1746
+ }
1747
+ function fp64ifyMatrix4(matrix) {
1748
+ const matrixFP64 = new Float32Array(32);
1749
+ for (let i = 0; i < 4; ++i) {
1750
+ for (let j = 0; j < 4; ++j) {
1751
+ const index = i * 4 + j;
1752
+ fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);
1753
+ }
1754
+ }
1755
+ return matrixFP64;
1756
+ }
1757
+
1758
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic.glsl.js
1759
+ var fp64arithmeticShader = glsl`\
1760
+ uniform float ONE;
1761
+
1762
+ /*
1763
+ About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
1764
+
1765
+ The purpose of this workaround is to prevent shader compilers from
1766
+ optimizing away necessary arithmetic operations by swapping their sequences
1767
+ or transform the equation to some 'equivalent' from.
1768
+
1769
+ The method is to multiply an artifical variable, ONE, which will be known to
1770
+ the compiler to be 1 only at runtime. The whole expression is then represented
1771
+ as a polynomial with respective to ONE. In the coefficients of all terms, only one a
1772
+ and one b should appear
1773
+
1774
+ err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
1775
+ */
1776
+
1777
+ // Divide float number to high and low floats to extend fraction bits
1778
+ vec2 split(float a) {
1779
+ const float SPLIT = 4097.0;
1780
+ float t = a * SPLIT;
1781
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1782
+ float a_hi = t * ONE - (t - a);
1783
+ float a_lo = a * ONE - a_hi;
1784
+ #else
1785
+ float a_hi = t - (t - a);
1786
+ float a_lo = a - a_hi;
1787
+ #endif
1788
+ return vec2(a_hi, a_lo);
1789
+ }
1790
+
1791
+ // Divide float number again when high float uses too many fraction bits
1792
+ vec2 split2(vec2 a) {
1793
+ vec2 b = split(a.x);
1794
+ b.y += a.y;
1795
+ return b;
1796
+ }
1797
+
1798
+ // Special sum operation when a > b
1799
+ vec2 quickTwoSum(float a, float b) {
1800
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1801
+ float sum = (a + b) * ONE;
1802
+ float err = b - (sum - a) * ONE;
1803
+ #else
1804
+ float sum = a + b;
1805
+ float err = b - (sum - a);
1806
+ #endif
1807
+ return vec2(sum, err);
1808
+ }
1809
+
1810
+ // General sum operation
1811
+ vec2 twoSum(float a, float b) {
1812
+ float s = (a + b);
1813
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1814
+ float v = (s * ONE - a) * ONE;
1815
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
1816
+ #else
1817
+ float v = s - a;
1818
+ float err = (a - (s - v)) + (b - v);
1819
+ #endif
1820
+ return vec2(s, err);
1821
+ }
1822
+
1823
+ vec2 twoSub(float a, float b) {
1824
+ float s = (a - b);
1825
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1826
+ float v = (s * ONE - a) * ONE;
1827
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
1828
+ #else
1829
+ float v = s - a;
1830
+ float err = (a - (s - v)) - (b + v);
1831
+ #endif
1832
+ return vec2(s, err);
1833
+ }
1834
+
1835
+ vec2 twoSqr(float a) {
1836
+ float prod = a * a;
1837
+ vec2 a_fp64 = split(a);
1838
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1839
+ float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
1840
+ a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
1841
+ #else
1842
+ float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
1843
+ #endif
1844
+ return vec2(prod, err);
1845
+ }
1846
+
1847
+ vec2 twoProd(float a, float b) {
1848
+ float prod = a * b;
1849
+ vec2 a_fp64 = split(a);
1850
+ vec2 b_fp64 = split(b);
1851
+ float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
1852
+ a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
1853
+ return vec2(prod, err);
1854
+ }
1855
+
1856
+ vec2 sum_fp64(vec2 a, vec2 b) {
1857
+ vec2 s, t;
1858
+ s = twoSum(a.x, b.x);
1859
+ t = twoSum(a.y, b.y);
1860
+ s.y += t.x;
1861
+ s = quickTwoSum(s.x, s.y);
1862
+ s.y += t.y;
1863
+ s = quickTwoSum(s.x, s.y);
1864
+ return s;
1865
+ }
1866
+
1867
+ vec2 sub_fp64(vec2 a, vec2 b) {
1868
+ vec2 s, t;
1869
+ s = twoSub(a.x, b.x);
1870
+ t = twoSub(a.y, b.y);
1871
+ s.y += t.x;
1872
+ s = quickTwoSum(s.x, s.y);
1873
+ s.y += t.y;
1874
+ s = quickTwoSum(s.x, s.y);
1875
+ return s;
1876
+ }
1877
+
1878
+ vec2 mul_fp64(vec2 a, vec2 b) {
1879
+ vec2 prod = twoProd(a.x, b.x);
1880
+ // y component is for the error
1881
+ prod.y += a.x * b.y;
1882
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
1883
+ prod = split2(prod);
1884
+ #endif
1885
+ prod = quickTwoSum(prod.x, prod.y);
1886
+ prod.y += a.y * b.x;
1887
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
1888
+ prod = split2(prod);
1889
+ #endif
1890
+ prod = quickTwoSum(prod.x, prod.y);
1891
+ return prod;
1892
+ }
1893
+
1894
+ vec2 div_fp64(vec2 a, vec2 b) {
1895
+ float xn = 1.0 / b.x;
1896
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
1897
+ vec2 yn = mul_fp64(a, vec2(xn, 0));
1898
+ #else
1899
+ vec2 yn = a * xn;
1900
+ #endif
1901
+ float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
1902
+ vec2 prod = twoProd(xn, diff);
1903
+ return sum_fp64(yn, prod);
1904
+ }
1905
+
1906
+ vec2 sqrt_fp64(vec2 a) {
1907
+ if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
1908
+ if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
1909
+
1910
+ float x = 1.0 / sqrt(a.x);
1911
+ float yn = a.x * x;
1912
+ #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
1913
+ vec2 yn_sqr = twoSqr(yn) * ONE;
1914
+ #else
1915
+ vec2 yn_sqr = twoSqr(yn);
1916
+ #endif
1917
+ float diff = sub_fp64(a, yn_sqr).x;
1918
+ vec2 prod = twoProd(x * 0.5, diff);
1919
+ #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
1920
+ return sum_fp64(split(yn), prod);
1921
+ #else
1922
+ return sum_fp64(vec2(yn, 0.0), prod);
1923
+ #endif
1924
+ }
1925
+ `;
1926
+
1927
+ // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64.js
1928
+ var CONST_UNIFORMS = {
1929
+ ONE: 1
1930
+ };
1931
+ function getUniforms() {
1932
+ return CONST_UNIFORMS;
1933
+ }
1934
+ var fp64arithmetic = {
1935
+ name: "fp64-arithmetic",
1936
+ vs: fp64arithmeticShader,
1937
+ getUniforms,
1938
+ fp64ify,
1939
+ fp64LowPart,
1940
+ fp64ifyMatrix4
1941
+ };
1942
+
1943
+ // ../../node_modules/@luma.gl/engine/dist/geometry/gpu-geometry.js
1735
1944
  var import_core = __toESM(require_core2(), 1);
1736
1945
  var GPUGeometry = class {
1737
1946
  constructor(props) {
@@ -1834,7 +2043,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
1834
2043
  };
1835
2044
  }
1836
2045
 
1837
- // ../../../luma.gl/modules/engine/dist/lib/pipeline-factory.js
2046
+ // ../../node_modules/@luma.gl/engine/dist/lib/pipeline-factory.js
1838
2047
  var import_core2 = __toESM(require_core2(), 1);
1839
2048
  var PipelineFactory = class {
1840
2049
  static getDefaultPipelineFactory(device) {
@@ -1928,7 +2137,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
1928
2137
  fs: void 0
1929
2138
  };
1930
2139
 
1931
- // ../../../luma.gl/modules/engine/dist/model/model.js
2140
+ // ../../node_modules/@luma.gl/engine/dist/model/model.js
1932
2141
  var Model = class {
1933
2142
  constructor(device, props) {
1934
2143
  this.device = void 0;
@@ -2200,7 +2409,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
2200
2409
  return layouts;
2201
2410
  }
2202
2411
 
2203
- // ../../../luma.gl/modules/engine/dist/transform/transform.js
2412
+ // ../../node_modules/@luma.gl/engine/dist/transform/transform.js
2204
2413
  var Transform = class {
2205
2414
  static isSupported(device) {
2206
2415
  return false;
@@ -2254,7 +2463,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
2254
2463
  }
2255
2464
  };
2256
2465
 
2257
- // ../../../luma.gl/modules/engine/dist/geometry/geometry.js
2466
+ // ../../node_modules/@luma.gl/engine/dist/geometry/geometry.js
2258
2467
  var import_core5 = __toESM(require_core2(), 1);
2259
2468
  var Geometry = class {
2260
2469
  constructor(props) {
@@ -2334,7 +2543,7 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
2334
2543
  }
2335
2544
  };
2336
2545
 
2337
- // ../../../luma.gl/modules/engine/dist/geometries/cube-geometry.js
2546
+ // ../../node_modules/@luma.gl/engine/dist/geometries/cube-geometry.js
2338
2547
  var import_core6 = __toESM(require_core2(), 1);
2339
2548
  var CubeGeometry = class extends Geometry {
2340
2549
  constructor() {
@@ -2403,218 +2612,6 @@ ${stage === "fragment" ? FRAGMENT_SHADER_PROLOGUE : ""}
2403
2612
  }
2404
2613
  };
2405
2614
 
2406
- // ../../node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/highlight.js
2407
- var glsl2 = (x) => `${x}`;
2408
-
2409
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-utils.js
2410
- function fp64ify(a) {
2411
- let out = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
2412
- let startIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
2413
- const hiPart = Math.fround(a);
2414
- const loPart = a - hiPart;
2415
- out[startIndex] = hiPart;
2416
- out[startIndex + 1] = loPart;
2417
- return out;
2418
- }
2419
- function fp64LowPart(a) {
2420
- return a - Math.fround(a);
2421
- }
2422
- function fp64ifyMatrix4(matrix) {
2423
- const matrixFP64 = new Float32Array(32);
2424
- for (let i = 0; i < 4; ++i) {
2425
- for (let j = 0; j < 4; ++j) {
2426
- const index = i * 4 + j;
2427
- fp64ify(matrix[j * 4 + i], matrixFP64, index * 2);
2428
- }
2429
- }
2430
- return matrixFP64;
2431
- }
2432
-
2433
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic.glsl.js
2434
- var fp64arithmeticShader = glsl2`\
2435
- uniform float ONE;
2436
-
2437
- /*
2438
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
2439
-
2440
- The purpose of this workaround is to prevent shader compilers from
2441
- optimizing away necessary arithmetic operations by swapping their sequences
2442
- or transform the equation to some 'equivalent' from.
2443
-
2444
- The method is to multiply an artifical variable, ONE, which will be known to
2445
- the compiler to be 1 only at runtime. The whole expression is then represented
2446
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
2447
- and one b should appear
2448
-
2449
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
2450
- */
2451
-
2452
- // Divide float number to high and low floats to extend fraction bits
2453
- vec2 split(float a) {
2454
- const float SPLIT = 4097.0;
2455
- float t = a * SPLIT;
2456
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2457
- float a_hi = t * ONE - (t - a);
2458
- float a_lo = a * ONE - a_hi;
2459
- #else
2460
- float a_hi = t - (t - a);
2461
- float a_lo = a - a_hi;
2462
- #endif
2463
- return vec2(a_hi, a_lo);
2464
- }
2465
-
2466
- // Divide float number again when high float uses too many fraction bits
2467
- vec2 split2(vec2 a) {
2468
- vec2 b = split(a.x);
2469
- b.y += a.y;
2470
- return b;
2471
- }
2472
-
2473
- // Special sum operation when a > b
2474
- vec2 quickTwoSum(float a, float b) {
2475
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2476
- float sum = (a + b) * ONE;
2477
- float err = b - (sum - a) * ONE;
2478
- #else
2479
- float sum = a + b;
2480
- float err = b - (sum - a);
2481
- #endif
2482
- return vec2(sum, err);
2483
- }
2484
-
2485
- // General sum operation
2486
- vec2 twoSum(float a, float b) {
2487
- float s = (a + b);
2488
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2489
- float v = (s * ONE - a) * ONE;
2490
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
2491
- #else
2492
- float v = s - a;
2493
- float err = (a - (s - v)) + (b - v);
2494
- #endif
2495
- return vec2(s, err);
2496
- }
2497
-
2498
- vec2 twoSub(float a, float b) {
2499
- float s = (a - b);
2500
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2501
- float v = (s * ONE - a) * ONE;
2502
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
2503
- #else
2504
- float v = s - a;
2505
- float err = (a - (s - v)) - (b + v);
2506
- #endif
2507
- return vec2(s, err);
2508
- }
2509
-
2510
- vec2 twoSqr(float a) {
2511
- float prod = a * a;
2512
- vec2 a_fp64 = split(a);
2513
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2514
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
2515
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
2516
- #else
2517
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
2518
- #endif
2519
- return vec2(prod, err);
2520
- }
2521
-
2522
- vec2 twoProd(float a, float b) {
2523
- float prod = a * b;
2524
- vec2 a_fp64 = split(a);
2525
- vec2 b_fp64 = split(b);
2526
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
2527
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
2528
- return vec2(prod, err);
2529
- }
2530
-
2531
- vec2 sum_fp64(vec2 a, vec2 b) {
2532
- vec2 s, t;
2533
- s = twoSum(a.x, b.x);
2534
- t = twoSum(a.y, b.y);
2535
- s.y += t.x;
2536
- s = quickTwoSum(s.x, s.y);
2537
- s.y += t.y;
2538
- s = quickTwoSum(s.x, s.y);
2539
- return s;
2540
- }
2541
-
2542
- vec2 sub_fp64(vec2 a, vec2 b) {
2543
- vec2 s, t;
2544
- s = twoSub(a.x, b.x);
2545
- t = twoSub(a.y, b.y);
2546
- s.y += t.x;
2547
- s = quickTwoSum(s.x, s.y);
2548
- s.y += t.y;
2549
- s = quickTwoSum(s.x, s.y);
2550
- return s;
2551
- }
2552
-
2553
- vec2 mul_fp64(vec2 a, vec2 b) {
2554
- vec2 prod = twoProd(a.x, b.x);
2555
- // y component is for the error
2556
- prod.y += a.x * b.y;
2557
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
2558
- prod = split2(prod);
2559
- #endif
2560
- prod = quickTwoSum(prod.x, prod.y);
2561
- prod.y += a.y * b.x;
2562
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
2563
- prod = split2(prod);
2564
- #endif
2565
- prod = quickTwoSum(prod.x, prod.y);
2566
- return prod;
2567
- }
2568
-
2569
- vec2 div_fp64(vec2 a, vec2 b) {
2570
- float xn = 1.0 / b.x;
2571
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
2572
- vec2 yn = mul_fp64(a, vec2(xn, 0));
2573
- #else
2574
- vec2 yn = a * xn;
2575
- #endif
2576
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
2577
- vec2 prod = twoProd(xn, diff);
2578
- return sum_fp64(yn, prod);
2579
- }
2580
-
2581
- vec2 sqrt_fp64(vec2 a) {
2582
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
2583
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
2584
-
2585
- float x = 1.0 / sqrt(a.x);
2586
- float yn = a.x * x;
2587
- #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
2588
- vec2 yn_sqr = twoSqr(yn) * ONE;
2589
- #else
2590
- vec2 yn_sqr = twoSqr(yn);
2591
- #endif
2592
- float diff = sub_fp64(a, yn_sqr).x;
2593
- vec2 prod = twoProd(x * 0.5, diff);
2594
- #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
2595
- return sum_fp64(split(yn), prod);
2596
- #else
2597
- return sum_fp64(vec2(yn, 0.0), prod);
2598
- #endif
2599
- }
2600
- `;
2601
-
2602
- // ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64.js
2603
- var CONST_UNIFORMS = {
2604
- ONE: 1
2605
- };
2606
- function getUniforms() {
2607
- return CONST_UNIFORMS;
2608
- }
2609
- var fp64arithmetic = {
2610
- name: "fp64-arithmetic",
2611
- vs: fp64arithmeticShader,
2612
- getUniforms,
2613
- fp64ify,
2614
- fp64LowPart,
2615
- fp64ifyMatrix4
2616
- };
2617
-
2618
2615
  // ../../node_modules/@luma.gl/webgl/dist/context/context/create-headless-context.js
2619
2616
  var ERR_HEADLESSGL_FAILED = "Failed to create WebGL context in Node.js, headless gl returned null";
2620
2617
  var ERR_HEADLESSGL_LOAD = " luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL contexts can not be created. This may not be an error. For example, this is a typical configuration for isorender applications running on the server.";