@luma.gl/webgl 8.5.19 → 8.5.20

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.
Files changed (115) hide show
  1. package/dist/dist.js +6 -4
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/classes/accessor.js.map +1 -1
  5. package/dist/es5/classes/buffer.js.map +1 -1
  6. package/dist/es5/classes/clear.js.map +1 -1
  7. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  8. package/dist/es5/classes/framebuffer.js.map +1 -1
  9. package/dist/es5/classes/program-configuration.js.map +1 -1
  10. package/dist/es5/classes/program.js.map +1 -1
  11. package/dist/es5/classes/query.js.map +1 -1
  12. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  13. package/dist/es5/classes/renderbuffer.js.map +1 -1
  14. package/dist/es5/classes/resource.js.map +1 -1
  15. package/dist/es5/classes/shader.js.map +1 -1
  16. package/dist/es5/classes/texture-2d.js.map +1 -1
  17. package/dist/es5/classes/texture-3d.js.map +1 -1
  18. package/dist/es5/classes/texture-cube.js.map +1 -1
  19. package/dist/es5/classes/texture-formats.js.map +1 -1
  20. package/dist/es5/classes/texture.js.map +1 -1
  21. package/dist/es5/classes/transform-feedback.js.map +1 -1
  22. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  23. package/dist/es5/classes/uniforms.js.map +1 -1
  24. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  25. package/dist/es5/classes/vertex-array.js.map +1 -1
  26. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  27. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  28. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  29. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  30. package/dist/es5/features/check-old-ie.js.map +1 -1
  31. package/dist/es5/features/features.js.map +1 -1
  32. package/dist/es5/features/index.js.map +1 -1
  33. package/dist/es5/features/limits.js.map +1 -1
  34. package/dist/es5/features/webgl-features-table.js.map +1 -1
  35. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  36. package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
  37. package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
  38. package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
  39. package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
  40. package/dist/es5/glsl-utils/index.js.map +1 -1
  41. package/dist/es5/index.js.map +1 -1
  42. package/dist/es5/init.js +1 -1
  43. package/dist/es5/init.js.map +1 -1
  44. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  45. package/dist/es5/utils/assert.js.map +1 -1
  46. package/dist/es5/utils/check-props.js.map +1 -1
  47. package/dist/es5/utils/format-value.js.map +1 -1
  48. package/dist/es5/utils/is-old-ie.js.map +1 -1
  49. package/dist/es5/utils/load-file.js.map +1 -1
  50. package/dist/es5/utils/stub-methods.js.map +1 -1
  51. package/dist/es5/utils/utils.js.map +1 -1
  52. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  53. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  54. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  55. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  56. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  57. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  58. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  59. package/dist/esm/bundle.js.map +1 -1
  60. package/dist/esm/classes/accessor.js.map +1 -1
  61. package/dist/esm/classes/buffer.js.map +1 -1
  62. package/dist/esm/classes/clear.js.map +1 -1
  63. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  64. package/dist/esm/classes/framebuffer.js.map +1 -1
  65. package/dist/esm/classes/program-configuration.js.map +1 -1
  66. package/dist/esm/classes/program.js.map +1 -1
  67. package/dist/esm/classes/query.js.map +1 -1
  68. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  69. package/dist/esm/classes/renderbuffer.js.map +1 -1
  70. package/dist/esm/classes/resource.js.map +1 -1
  71. package/dist/esm/classes/shader.js.map +1 -1
  72. package/dist/esm/classes/texture-2d.js.map +1 -1
  73. package/dist/esm/classes/texture-3d.js.map +1 -1
  74. package/dist/esm/classes/texture-cube.js.map +1 -1
  75. package/dist/esm/classes/texture-formats.js.map +1 -1
  76. package/dist/esm/classes/texture.js.map +1 -1
  77. package/dist/esm/classes/transform-feedback.js.map +1 -1
  78. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  79. package/dist/esm/classes/uniforms.js.map +1 -1
  80. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  81. package/dist/esm/classes/vertex-array.js.map +1 -1
  82. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  83. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  84. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  85. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  86. package/dist/esm/features/check-old-ie.js.map +1 -1
  87. package/dist/esm/features/features.js.map +1 -1
  88. package/dist/esm/features/index.js.map +1 -1
  89. package/dist/esm/features/limits.js.map +1 -1
  90. package/dist/esm/features/webgl-features-table.js.map +1 -1
  91. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  92. package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
  93. package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
  94. package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
  95. package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
  96. package/dist/esm/glsl-utils/index.js.map +1 -1
  97. package/dist/esm/index.js.map +1 -1
  98. package/dist/esm/init.js +1 -1
  99. package/dist/esm/init.js.map +1 -1
  100. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  101. package/dist/esm/utils/assert.js.map +1 -1
  102. package/dist/esm/utils/check-props.js.map +1 -1
  103. package/dist/esm/utils/format-value.js.map +1 -1
  104. package/dist/esm/utils/is-old-ie.js.map +1 -1
  105. package/dist/esm/utils/load-file.js.map +1 -1
  106. package/dist/esm/utils/stub-methods.js.map +1 -1
  107. package/dist/esm/utils/utils.js.map +1 -1
  108. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  109. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  110. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  111. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  112. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  113. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  114. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  115. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/format-value.js"],"names":["formatArrayValue","v","opts","maxElts","size","string","i","length","formatValue","terminator","EPSILON","isInteger","Array","isArray","ArrayBuffer","isView","Number","isFinite","String","Math","abs","toFixed","toPrecision","decimal","indexOf","slice"],"mappings":";;;;;;;AAEA,SAASA,gBAAT,CAA0BC,CAA1B,EAA6BC,IAA7B,EAAmC;AACjC,sBAAiCA,IAAjC,CAAOC,OAAP;AAAA,MAAOA,OAAP,8BAAiB,EAAjB;AAAA,mBAAiCD,IAAjC,CAAqBE,IAArB;AAAA,MAAqBA,IAArB,2BAA4B,CAA5B;AACA,MAAIC,MAAM,GAAG,GAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,CAAC,CAACM,MAAN,IAAgBD,CAAC,GAAGH,OAApC,EAA6C,EAAEG,CAA/C,EAAkD;AAChD,QAAIA,CAAC,GAAG,CAAR,EAAW;AACTD,MAAAA,MAAM,eAAQC,CAAC,GAAGF,IAAJ,KAAa,CAAb,GAAiB,GAAjB,GAAuB,EAA/B,CAAN;AACD;;AACDC,IAAAA,MAAM,IAAIG,WAAW,CAACP,CAAC,CAACK,CAAD,CAAF,EAAOJ,IAAP,CAArB;AACD;;AACD,MAAMO,UAAU,GAAGR,CAAC,CAACM,MAAF,GAAWJ,OAAX,GAAqB,KAArB,GAA6B,GAAhD;AACA,mBAAUE,MAAV,SAAmBI,UAAnB;AACD;;AAEM,SAASD,WAAT,CAAqBP,CAArB,EAAmC;AAAA,MAAXC,IAAW,uEAAJ,EAAI;AACxC,MAAMQ,OAAO,GAAG,KAAhB;AACA,wBAA4BR,IAA5B,CAAOS,SAAP;AAAA,MAAOA,SAAP,gCAAmB,KAAnB;;AACA,MAAIC,KAAK,CAACC,OAAN,CAAcZ,CAAd,KAAoBa,WAAW,CAACC,MAAZ,CAAmBd,CAAnB,CAAxB,EAA+C;AAC7C,WAAOD,gBAAgB,CAACC,CAAD,EAAIC,IAAJ,CAAvB;AACD;;AACD,MAAI,CAACc,MAAM,CAACC,QAAP,CAAgBhB,CAAhB,CAAL,EAAyB;AACvB,WAAOiB,MAAM,CAACjB,CAAD,CAAb;AACD;;AACD,MAAIkB,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAcS,OAAlB,EAA2B;AACzB,WAAOC,SAAS,GAAG,GAAH,GAAS,IAAzB;AACD;;AACD,MAAIA,SAAJ,EAAe;AACb,WAAOV,CAAC,CAACoB,OAAF,CAAU,CAAV,CAAP;AACD;;AACD,MAAIF,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAc,GAAd,IAAqBkB,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAc,KAAvC,EAA8C;AAC5C,WAAOA,CAAC,CAACoB,OAAF,CAAU,CAAV,CAAP;AACD;;AACD,MAAMhB,MAAM,GAAGJ,CAAC,CAACqB,WAAF,CAAc,CAAd,CAAf;AACA,MAAMC,OAAO,GAAGlB,MAAM,CAACmB,OAAP,CAAe,IAAf,CAAhB;AACA,SAAOD,OAAO,KAAKlB,MAAM,CAACE,MAAP,GAAgB,CAA5B,GAAgCF,MAAM,CAACoB,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAhC,GAAsDpB,MAA7D;AACD","sourcesContent":["// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n"],"file":"format-value.js"}
1
+ {"version":3,"file":"format-value.js","names":["formatArrayValue","v","opts","maxElts","size","string","i","length","formatValue","terminator","EPSILON","isInteger","Array","isArray","ArrayBuffer","isView","Number","isFinite","String","Math","abs","toFixed","toPrecision","decimal","indexOf","slice"],"sources":["../../../src/utils/format-value.js"],"sourcesContent":["// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n"],"mappings":";;;;;;;AAEA,SAASA,gBAAT,CAA0BC,CAA1B,EAA6BC,IAA7B,EAAmC;EACjC,oBAAiCA,IAAjC,CAAOC,OAAP;EAAA,IAAOA,OAAP,8BAAiB,EAAjB;EAAA,iBAAiCD,IAAjC,CAAqBE,IAArB;EAAA,IAAqBA,IAArB,2BAA4B,CAA5B;EACA,IAAIC,MAAM,GAAG,GAAb;;EACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,CAAC,CAACM,MAAN,IAAgBD,CAAC,GAAGH,OAApC,EAA6C,EAAEG,CAA/C,EAAkD;IAChD,IAAIA,CAAC,GAAG,CAAR,EAAW;MACTD,MAAM,eAAQC,CAAC,GAAGF,IAAJ,KAAa,CAAb,GAAiB,GAAjB,GAAuB,EAA/B,CAAN;IACD;;IACDC,MAAM,IAAIG,WAAW,CAACP,CAAC,CAACK,CAAD,CAAF,EAAOJ,IAAP,CAArB;EACD;;EACD,IAAMO,UAAU,GAAGR,CAAC,CAACM,MAAF,GAAWJ,OAAX,GAAqB,KAArB,GAA6B,GAAhD;EACA,iBAAUE,MAAV,SAAmBI,UAAnB;AACD;;AAEM,SAASD,WAAT,CAAqBP,CAArB,EAAmC;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACxC,IAAMQ,OAAO,GAAG,KAAhB;EACA,sBAA4BR,IAA5B,CAAOS,SAAP;EAAA,IAAOA,SAAP,gCAAmB,KAAnB;;EACA,IAAIC,KAAK,CAACC,OAAN,CAAcZ,CAAd,KAAoBa,WAAW,CAACC,MAAZ,CAAmBd,CAAnB,CAAxB,EAA+C;IAC7C,OAAOD,gBAAgB,CAACC,CAAD,EAAIC,IAAJ,CAAvB;EACD;;EACD,IAAI,CAACc,MAAM,CAACC,QAAP,CAAgBhB,CAAhB,CAAL,EAAyB;IACvB,OAAOiB,MAAM,CAACjB,CAAD,CAAb;EACD;;EACD,IAAIkB,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAcS,OAAlB,EAA2B;IACzB,OAAOC,SAAS,GAAG,GAAH,GAAS,IAAzB;EACD;;EACD,IAAIA,SAAJ,EAAe;IACb,OAAOV,CAAC,CAACoB,OAAF,CAAU,CAAV,CAAP;EACD;;EACD,IAAIF,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAc,GAAd,IAAqBkB,IAAI,CAACC,GAAL,CAASnB,CAAT,IAAc,KAAvC,EAA8C;IAC5C,OAAOA,CAAC,CAACoB,OAAF,CAAU,CAAV,CAAP;EACD;;EACD,IAAMhB,MAAM,GAAGJ,CAAC,CAACqB,WAAF,CAAc,CAAd,CAAf;EACA,IAAMC,OAAO,GAAGlB,MAAM,CAACmB,OAAP,CAAe,IAAf,CAAhB;EACA,OAAOD,OAAO,KAAKlB,MAAM,CAACE,MAAP,GAAgB,CAA5B,GAAgCF,MAAM,CAACoB,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAhC,GAAsDpB,MAA7D;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/is-old-ie.js"],"names":["isOldIE","opts","userAgent"],"mappings":";;;;;;;AAAA;;AAGO,SAASA,OAAT,GAA4B;AAAA,MAAXC,IAAW,uEAAJ,EAAI;AACjC,SAAO,qBAAWA,IAAI,CAACC,SAAhB,MAA+B,IAAtC;AACD","sourcesContent":["import {getBrowser} from '@probe.gl/env';\n\n// opts allows user agent to be overridden for testing\nexport function isOldIE(opts = {}) {\n return getBrowser(opts.userAgent) === 'IE';\n}\n"],"file":"is-old-ie.js"}
1
+ {"version":3,"file":"is-old-ie.js","names":["isOldIE","opts","getBrowser","userAgent"],"sources":["../../../src/utils/is-old-ie.js"],"sourcesContent":["import {getBrowser} from '@probe.gl/env';\n\n// opts allows user agent to be overridden for testing\nexport function isOldIE(opts = {}) {\n return getBrowser(opts.userAgent) === 'IE';\n}\n"],"mappings":";;;;;;;AAAA;;AAGO,SAASA,OAAT,GAA4B;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACjC,OAAO,IAAAC,eAAA,EAAWD,IAAI,CAACE,SAAhB,MAA+B,IAAtC;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/load-file.js"],"names":["pathPrefix","setPathPrefix","prefix","loadFile","url","options","dataType","fetch","then","res","loadImage","opts","Promise","resolve","reject","image","Image","onload","onerror","Error","crossOrigin","src","error"],"mappings":";;;;;;;;;AAAA;;AAEA,IAAIA,UAAU,GAAG,EAAjB;;AAKO,SAASC,aAAT,CAAuBC,MAAvB,EAA+B;AACpCF,EAAAA,UAAU,GAAGE,MAAb;AACD;;AAGM,SAASC,QAAT,CAAkBC,GAAlB,EAAqC;AAAA,MAAdC,OAAc,uEAAJ,EAAI;AAC1C,sBAAO,OAAOD,GAAP,KAAe,QAAtB;AACAA,EAAAA,GAAG,GAAGJ,UAAU,GAAGI,GAAnB;AACA,MAAME,QAAQ,GAAGD,OAAO,CAACC,QAAR,IAAoB,MAArC;AACA,SAAOC,KAAK,CAACH,GAAD,EAAMC,OAAN,CAAL,CAAoBG,IAApB,CAAyB,UAAAC,GAAG;AAAA,WAAIA,GAAG,CAACH,QAAD,CAAH,EAAJ;AAAA,GAA5B,CAAP;AACD;;AAOM,SAASI,SAAT,CAAmBN,GAAnB,EAAwBO,IAAxB,EAA8B;AACnC,sBAAO,OAAOP,GAAP,KAAe,QAAtB;AACAA,EAAAA,GAAG,GAAGJ,UAAU,GAAGI,GAAnB;AACA,SAAO,IAAIQ,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtC,QAAI;AACF,UAAMC,KAAK,GAAG,IAAIC,KAAJ,EAAd;;AACAD,MAAAA,KAAK,CAACE,MAAN,GAAe;AAAA,eAAMJ,OAAO,CAACE,KAAD,CAAb;AAAA,OAAf;;AACAA,MAAAA,KAAK,CAACG,OAAN,GAAgB;AAAA,eAAMJ,MAAM,CAAC,IAAIK,KAAJ,gCAAkCf,GAAlC,OAAD,CAAZ;AAAA,OAAhB;;AACAW,MAAAA,KAAK,CAACK,WAAN,GAAqBT,IAAI,IAAIA,IAAI,CAACS,WAAd,IAA8B,WAAlD;AACAL,MAAAA,KAAK,CAACM,GAAN,GAAYjB,GAAZ;AACD,KAND,CAME,OAAOkB,KAAP,EAAc;AACdR,MAAAA,MAAM,CAACQ,KAAD,CAAN;AACD;AACF,GAVM,CAAP;AAWD","sourcesContent":["import {assert} from '../utils/assert';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n"],"file":"load-file.js"}
1
+ {"version":3,"file":"load-file.js","names":["pathPrefix","setPathPrefix","prefix","loadFile","url","options","assert","dataType","fetch","then","res","loadImage","opts","Promise","resolve","reject","image","Image","onload","onerror","Error","crossOrigin","src","error"],"sources":["../../../src/utils/load-file.js"],"sourcesContent":["import {assert} from '../utils/assert';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n"],"mappings":";;;;;;;;;AAAA;;AAEA,IAAIA,UAAU,GAAG,EAAjB;;AAKO,SAASC,aAAT,CAAuBC,MAAvB,EAA+B;EACpCF,UAAU,GAAGE,MAAb;AACD;;AAGM,SAASC,QAAT,CAAkBC,GAAlB,EAAqC;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EAC1C,IAAAC,cAAA,EAAO,OAAOF,GAAP,KAAe,QAAtB;EACAA,GAAG,GAAGJ,UAAU,GAAGI,GAAnB;EACA,IAAMG,QAAQ,GAAGF,OAAO,CAACE,QAAR,IAAoB,MAArC;EACA,OAAOC,KAAK,CAACJ,GAAD,EAAMC,OAAN,CAAL,CAAoBI,IAApB,CAAyB,UAAAC,GAAG;IAAA,OAAIA,GAAG,CAACH,QAAD,CAAH,EAAJ;EAAA,CAA5B,CAAP;AACD;;AAOM,SAASI,SAAT,CAAmBP,GAAnB,EAAwBQ,IAAxB,EAA8B;EACnC,IAAAN,cAAA,EAAO,OAAOF,GAAP,KAAe,QAAtB;EACAA,GAAG,GAAGJ,UAAU,GAAGI,GAAnB;EACA,OAAO,IAAIS,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;IACtC,IAAI;MACF,IAAMC,KAAK,GAAG,IAAIC,KAAJ,EAAd;;MACAD,KAAK,CAACE,MAAN,GAAe;QAAA,OAAMJ,OAAO,CAACE,KAAD,CAAb;MAAA,CAAf;;MACAA,KAAK,CAACG,OAAN,GAAgB;QAAA,OAAMJ,MAAM,CAAC,IAAIK,KAAJ,gCAAkChB,GAAlC,OAAD,CAAZ;MAAA,CAAhB;;MACAY,KAAK,CAACK,WAAN,GAAqBT,IAAI,IAAIA,IAAI,CAACS,WAAd,IAA8B,WAAlD;MACAL,KAAK,CAACM,GAAN,GAAYlB,GAAZ;IACD,CAND,CAME,OAAOmB,KAAP,EAAc;MACdR,MAAM,CAACQ,KAAD,CAAN;IACD;EACF,CAVM,CAAP;AAWD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/stub-methods.js"],"names":["stubRemovedMethods","instance","className","version","methodNames","upgradeMessage","prototype","Object","getPrototypeOf","forEach","methodName","log","removed","Error"],"mappings":";;;;;;;AAAA;;AAGO,SAASA,kBAAT,CAA4BC,QAA5B,EAAsCC,SAAtC,EAAiDC,OAAjD,EAA0DC,WAA1D,EAAuE;AAC5E,MAAMC,cAAc,yBAAkBF,OAAlB,yDAApB;AAGA,MAAMG,SAAS,GAAGC,MAAM,CAACC,cAAP,CAAsBP,QAAtB,CAAlB;AAEAG,EAAAA,WAAW,CAACK,OAAZ,CAAoB,UAAAC,UAAU,EAAI;AAChC,QAAIJ,SAAS,CAACI,UAAd,EAA0B;AACxB;AACD;;AAEDJ,IAAAA,SAAS,CAACI,UAAD,CAAT,GAAwB,YAAM;AAC5BC,mBAAIC,OAAJ,kCAAsCV,SAAtC,cAAmDQ,UAAnD,SAAmEL,cAAnE;;AACA,YAAM,IAAIQ,KAAJ,CAAUH,UAAV,CAAN;AACD,KAHD;AAID,GATD;AAUD","sourcesContent":["import {log} from '@luma.gl/gltools';\n\n// Install stubs for removed methods\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \\\nhttps://luma.gl/docs/upgrade-guide`;\n\n const prototype = Object.getPrototypeOf(instance);\n\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n"],"file":"stub-methods.js"}
1
+ {"version":3,"file":"stub-methods.js","names":["stubRemovedMethods","instance","className","version","methodNames","upgradeMessage","prototype","Object","getPrototypeOf","forEach","methodName","log","removed","Error"],"sources":["../../../src/utils/stub-methods.js"],"sourcesContent":["import {log} from '@luma.gl/gltools';\n\n// Install stubs for removed methods\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \\\nhttps://luma.gl/docs/upgrade-guide`;\n\n const prototype = Object.getPrototypeOf(instance);\n\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n"],"mappings":";;;;;;;AAAA;;AAGO,SAASA,kBAAT,CAA4BC,QAA5B,EAAsCC,SAAtC,EAAiDC,OAAjD,EAA0DC,WAA1D,EAAuE;EAC5E,IAAMC,cAAc,yBAAkBF,OAAlB,yDAApB;EAGA,IAAMG,SAAS,GAAGC,MAAM,CAACC,cAAP,CAAsBP,QAAtB,CAAlB;EAEAG,WAAW,CAACK,OAAZ,CAAoB,UAAAC,UAAU,EAAI;IAChC,IAAIJ,SAAS,CAACI,UAAd,EAA0B;MACxB;IACD;;IAEDJ,SAAS,CAACI,UAAD,CAAT,GAAwB,YAAM;MAC5BC,YAAA,CAAIC,OAAJ,kCAAsCV,SAAtC,cAAmDQ,UAAnD,SAAmEL,cAAnE;;MACA,MAAM,IAAIQ,KAAJ,CAAUH,UAAV,CAAN;IACD,CAHD;EAID,CATD;AAUD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/utils.js"],"names":["uidCounters","uid","id","count","isPowerOfTwo","n","isObjectEmpty","obj","isEmpty","key"],"mappings":";;;;;;;;;AAAA;;AAEA,IAAMA,WAAW,GAAG,EAApB;;AAOO,SAASC,GAAT,GAAwB;AAAA,MAAXC,EAAW,uEAAN,IAAM;AAC7BF,EAAAA,WAAW,CAACE,EAAD,CAAX,GAAkBF,WAAW,CAACE,EAAD,CAAX,IAAmB,CAArC;AACA,MAAMC,KAAK,GAAGH,WAAW,CAACE,EAAD,CAAX,EAAd;AACA,mBAAUA,EAAV,cAAgBC,KAAhB;AACD;;AAOM,SAASC,YAAT,CAAsBC,CAAtB,EAAyB;AAC9B,sBAAO,OAAOA,CAAP,KAAa,QAApB,EAA8B,wBAA9B;AACA,SAAOA,CAAC,IAAI,CAACA,CAAC,GAAIA,CAAC,GAAG,CAAV,MAAkB,CAA9B;AACD;;AAGM,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;AACjC,MAAIC,OAAO,GAAG,IAAd;;AAEA,OAAK,IAAMC,GAAX,IAAkBF,GAAlB,EAAuB;AACrBC,IAAAA,OAAO,GAAG,KAAV;AACA;AACD;;AAED,SAAOA,OAAP;AACD","sourcesContent":["import {assert} from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {string} id= - Identifier base name\n * @return {string} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {boolean} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n"],"file":"utils.js"}
1
+ {"version":3,"file":"utils.js","names":["uidCounters","uid","id","count","isPowerOfTwo","n","assert","isObjectEmpty","obj","isEmpty","key"],"sources":["../../../src/utils/utils.js"],"sourcesContent":["import {assert} from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {string} id= - Identifier base name\n * @return {string} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {boolean} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n"],"mappings":";;;;;;;;;AAAA;;AAEA,IAAMA,WAAW,GAAG,EAApB;;AAOO,SAASC,GAAT,GAAwB;EAAA,IAAXC,EAAW,uEAAN,IAAM;EAC7BF,WAAW,CAACE,EAAD,CAAX,GAAkBF,WAAW,CAACE,EAAD,CAAX,IAAmB,CAArC;EACA,IAAMC,KAAK,GAAGH,WAAW,CAACE,EAAD,CAAX,EAAd;EACA,iBAAUA,EAAV,cAAgBC,KAAhB;AACD;;AAOM,SAASC,YAAT,CAAsBC,CAAtB,EAAyB;EAC9B,IAAAC,cAAA,EAAO,OAAOD,CAAP,KAAa,QAApB,EAA8B,wBAA9B;EACA,OAAOA,CAAC,IAAI,CAACA,CAAC,GAAIA,CAAC,GAAG,CAAV,MAAkB,CAA9B;AACD;;AAGM,SAASE,aAAT,CAAuBC,GAAvB,EAA4B;EACjC,IAAIC,OAAO,GAAG,IAAd;;EAEA,KAAK,IAAMC,GAAX,IAAkBF,GAAlB,EAAuB;IACrBC,OAAO,GAAG,KAAV;IACA;EACD;;EAED,OAAOA,OAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/attribute-utils.js"],"names":["GL_BYTE","GL_UNSIGNED_BYTE","GL_SHORT","GL_UNSIGNED_SHORT","GL_POINTS","GL_LINES","GL_LINE_LOOP","GL_LINE_STRIP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","GL_FLOAT","GL_FLOAT_VEC2","GL_FLOAT_VEC3","GL_FLOAT_VEC4","GL_INT","GL_INT_VEC2","GL_INT_VEC3","GL_INT_VEC4","GL_UNSIGNED_INT","GL_UNSIGNED_INT_VEC2","GL_UNSIGNED_INT_VEC3","GL_UNSIGNED_INT_VEC4","GL_BOOL","GL_BOOL_VEC2","GL_BOOL_VEC3","GL_BOOL_VEC4","GL_FLOAT_MAT2","GL_FLOAT_MAT3","GL_FLOAT_MAT4","GL_FLOAT_MAT2x3","GL_FLOAT_MAT2x4","GL_FLOAT_MAT3x2","GL_FLOAT_MAT3x4","GL_FLOAT_MAT4x2","GL_FLOAT_MAT4x3","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","getPrimitiveCount","vertexCount","getVertexCount","primitiveCount","decomposeCompositeGLType","compositeGLType","typeAndSize","type","components","getCompositeGLType","glType","compType","compComponents","name"],"mappings":";;;;;;;;;;;;;;;;;AACA;;;;AAEA,IAAMA,OAAO,GAAG,MAAhB;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,QAAQ,GAAG,MAAjB;AACA,IAAMC,iBAAiB,GAAG,MAA1B;AAEA,IAAMC,SAAS,GAAG,GAAlB;AACA,IAAMC,QAAQ,GAAG,GAAjB;AACA,IAAMC,YAAY,GAAG,GAArB;AACA,IAAMC,aAAa,GAAG,GAAtB;AACA,IAAMC,YAAY,GAAG,GAArB;AACA,IAAMC,iBAAiB,GAAG,GAA1B;AACA,IAAMC,eAAe,GAAG,GAAxB;AAGA,IAAMC,QAAQ,GAAG,MAAjB;AACA,IAAMC,aAAa,GAAG,MAAtB;AACA,IAAMC,aAAa,GAAG,MAAtB;AACA,IAAMC,aAAa,GAAG,MAAtB;AAEA,IAAMC,MAAM,GAAG,MAAf;AACA,IAAMC,WAAW,GAAG,MAApB;AACA,IAAMC,WAAW,GAAG,MAApB;AACA,IAAMC,WAAW,GAAG,MAApB;AAEA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AAEA,IAAMC,OAAO,GAAG,MAAhB;AACA,IAAMC,YAAY,GAAG,MAArB;AACA,IAAMC,YAAY,GAAG,MAArB;AACA,IAAMC,YAAY,GAAG,MAArB;AAEA,IAAMC,aAAa,GAAG,MAAtB;AACA,IAAMC,aAAa,GAAG,MAAtB;AACA,IAAMC,aAAa,GAAG,MAAtB;AAEA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,eAAe,GAAG,MAAxB;AAGA,IAAMC,kBAAkB,iFACrBzB,QADqB,EACV,CAACA,QAAD,EAAW,CAAX,EAAc,OAAd,CADU,sDAErBC,aAFqB,EAEL,CAACD,QAAD,EAAW,CAAX,EAAc,MAAd,CAFK,sDAGrBE,aAHqB,EAGL,CAACF,QAAD,EAAW,CAAX,EAAc,MAAd,CAHK,sDAIrBG,aAJqB,EAIL,CAACH,QAAD,EAAW,CAAX,EAAc,MAAd,CAJK,sDAMrBI,MANqB,EAMZ,CAACA,MAAD,EAAS,CAAT,EAAY,KAAZ,CANY,sDAOrBC,WAPqB,EAOP,CAACD,MAAD,EAAS,CAAT,EAAY,OAAZ,CAPO,sDAQrBE,WARqB,EAQP,CAACF,MAAD,EAAS,CAAT,EAAY,OAAZ,CARO,sDASrBG,WATqB,EASP,CAACH,MAAD,EAAS,CAAT,EAAY,OAAZ,CATO,sDAWrBI,eAXqB,EAWH,CAACA,eAAD,EAAkB,CAAlB,EAAqB,MAArB,CAXG,sDAYrBC,oBAZqB,EAYE,CAACD,eAAD,EAAkB,CAAlB,EAAqB,OAArB,CAZF,sDAarBE,oBAbqB,EAaE,CAACF,eAAD,EAAkB,CAAlB,EAAqB,OAArB,CAbF,sDAcrBG,oBAdqB,EAcE,CAACH,eAAD,EAAkB,CAAlB,EAAqB,OAArB,CAdF,sDAgBrBI,OAhBqB,EAgBX,CAACZ,QAAD,EAAW,CAAX,EAAc,MAAd,CAhBW,sDAiBrBa,YAjBqB,EAiBN,CAACb,QAAD,EAAW,CAAX,EAAc,OAAd,CAjBM,sDAkBrBc,YAlBqB,EAkBN,CAACd,QAAD,EAAW,CAAX,EAAc,OAAd,CAlBM,sDAmBrBe,YAnBqB,EAmBN,CAACf,QAAD,EAAW,CAAX,EAAc,OAAd,CAnBM,sDAqBrBgB,aArBqB,EAqBL,CAAChB,QAAD,EAAW,CAAX,EAAc,MAAd,CArBK,sDAsBrBmB,eAtBqB,EAsBH,CAACnB,QAAD,EAAW,CAAX,EAAc,QAAd,CAtBG,sDAuBrBoB,eAvBqB,EAuBH,CAACpB,QAAD,EAAW,CAAX,EAAc,QAAd,CAvBG,sDAyBrBiB,aAzBqB,EAyBL,CAACjB,QAAD,EAAW,EAAX,EAAe,MAAf,CAzBK,sDA0BrBqB,eA1BqB,EA0BH,CAACrB,QAAD,EAAW,EAAX,EAAe,QAAf,CA1BG,sDA2BrBsB,eA3BqB,EA2BH,CAACtB,QAAD,EAAW,EAAX,EAAe,QAAf,CA3BG,sDA6BrBkB,aA7BqB,EA6BL,CAAClB,QAAD,EAAW,EAAX,EAAe,MAAf,CA7BK,sDA8BrBuB,eA9BqB,EA8BH,CAACvB,QAAD,EAAW,EAAX,EAAe,QAAf,CA9BG,sDA+BrBwB,eA/BqB,EA+BH,CAACxB,QAAD,EAAW,EAAX,EAAe,QAAf,CA/BG,uBAAxB;;AAmCO,SAAS0B,oBAAT,CAA8BC,QAA9B,EAAwC;AAC7C,UAAQA,QAAR;AACE,SAAKlC,SAAL;AACE,aAAOA,SAAP;;AACF,SAAKC,QAAL;AACE,aAAOA,QAAP;;AACF,SAAKE,aAAL;AACE,aAAOF,QAAP;;AACF,SAAKC,YAAL;AACE,aAAOD,QAAP;;AACF,SAAKG,YAAL;AACE,aAAOA,YAAP;;AACF,SAAKC,iBAAL;AACE,aAAOD,YAAP;;AACF,SAAKE,eAAL;AACE,aAAOF,YAAP;;AACF;AACE,0BAAO,KAAP;AACA,aAAO,CAAP;AAjBJ;AAmBD;;AAGM,SAAS+B,iBAAT,OAAoD;AAAA,MAAxBD,QAAwB,QAAxBA,QAAwB;AAAA,MAAdE,WAAc,QAAdA,WAAc;;AACzD,UAAQF,QAAR;AACE,SAAKlC,SAAL;AACA,SAAKE,YAAL;AACE,aAAOkC,WAAP;;AACF,SAAKnC,QAAL;AACE,aAAOmC,WAAW,GAAG,CAArB;;AACF,SAAKjC,aAAL;AACE,aAAOiC,WAAW,GAAG,CAArB;;AACF,SAAKhC,YAAL;AACE,aAAOgC,WAAW,GAAG,CAArB;;AACF,SAAK/B,iBAAL;AACA,SAAKC,eAAL;AACE,aAAO8B,WAAW,GAAG,CAArB;;AACF;AACE,0BAAO,KAAP;AACA,aAAO,CAAP;AAfJ;AAiBD;;AAGM,SAASC,cAAT,QAAiD;AAAA,MAAxBH,QAAwB,SAAxBA,QAAwB;AAAA,MAAdE,WAAc,SAAdA,WAAc;AACtD,MAAME,cAAc,GAAGH,iBAAiB,CAAC;AAACD,IAAAA,QAAQ,EAARA,QAAD;AAAWE,IAAAA,WAAW,EAAXA;AAAX,GAAD,CAAxC;;AACA,UAAQH,oBAAoB,CAACC,QAAD,CAA5B;AACE,SAAKlC,SAAL;AACE,aAAOsC,cAAP;;AACF,SAAKrC,QAAL;AACE,aAAOqC,cAAc,GAAG,CAAxB;;AACF,SAAKlC,YAAL;AACE,aAAOkC,cAAc,GAAG,CAAxB;;AACF;AACE,0BAAO,KAAP;AACA,aAAO,CAAP;AATJ;AAWD;;AAGM,SAASC,wBAAT,CAAkCC,eAAlC,EAAmD;AACxD,MAAMC,WAAW,GAAGT,kBAAkB,CAACQ,eAAD,CAAtC;;AACA,MAAI,CAACC,WAAL,EAAkB;AAChB,WAAO,IAAP;AACD;;AACD,kDAA2BA,WAA3B;AAAA,MAAOC,IAAP;AAAA,MAAaC,UAAb;;AACA,SAAO;AAACD,IAAAA,IAAI,EAAJA,IAAD;AAAOC,IAAAA,UAAU,EAAVA;AAAP,GAAP;AACD;;AAEM,SAASC,kBAAT,CAA4BF,IAA5B,EAAkCC,UAAlC,EAA8C;AACnD,UAAQD,IAAR;AACE,SAAK9C,OAAL;AACA,SAAKC,gBAAL;AACA,SAAKC,QAAL;AACA,SAAKC,iBAAL;AACE2C,MAAAA,IAAI,GAAGnC,QAAP;AACA;;AACF;AAPF;;AAUA,OAAK,IAAMsC,MAAX,IAAqBb,kBAArB,EAAyC;AACvC,6DAAyCA,kBAAkB,CAACa,MAAD,CAA3D;AAAA,QAAOC,QAAP;AAAA,QAAiBC,cAAjB;AAAA,QAAiCC,IAAjC;;AACA,QAAIF,QAAQ,KAAKJ,IAAb,IAAqBK,cAAc,KAAKJ,UAA5C,EAAwD;AACtD,aAAO;AAACE,QAAAA,MAAM,EAANA,MAAD;AAASG,QAAAA,IAAI,EAAJA;AAAT,OAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD","sourcesContent":["/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n"],"file":"attribute-utils.js"}
1
+ {"version":3,"file":"attribute-utils.js","names":["GL_BYTE","GL_UNSIGNED_BYTE","GL_SHORT","GL_UNSIGNED_SHORT","GL_POINTS","GL_LINES","GL_LINE_LOOP","GL_LINE_STRIP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","GL_FLOAT","GL_FLOAT_VEC2","GL_FLOAT_VEC3","GL_FLOAT_VEC4","GL_INT","GL_INT_VEC2","GL_INT_VEC3","GL_INT_VEC4","GL_UNSIGNED_INT","GL_UNSIGNED_INT_VEC2","GL_UNSIGNED_INT_VEC3","GL_UNSIGNED_INT_VEC4","GL_BOOL","GL_BOOL_VEC2","GL_BOOL_VEC3","GL_BOOL_VEC4","GL_FLOAT_MAT2","GL_FLOAT_MAT3","GL_FLOAT_MAT4","GL_FLOAT_MAT2x3","GL_FLOAT_MAT2x4","GL_FLOAT_MAT3x2","GL_FLOAT_MAT3x4","GL_FLOAT_MAT4x2","GL_FLOAT_MAT4x3","COMPOSITE_GL_TYPES","getPrimitiveDrawMode","drawMode","assert","getPrimitiveCount","vertexCount","getVertexCount","primitiveCount","decomposeCompositeGLType","compositeGLType","typeAndSize","type","components","getCompositeGLType","glType","compType","compComponents","name"],"sources":["../../../src/webgl-utils/attribute-utils.js"],"sourcesContent":["/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/constants-to-keys.js"],"names":["getKeyValue","gl","name","number","Number","isNaN","replace","value","undefined","getKey","key","String","getKeyType"],"mappings":";;;;;;;;;AAAA;;AAGO,SAASA,WAAT,CAAqBC,EAArB,EAAyBC,IAAzB,EAA+B;AAEpC,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,WAAOA,IAAP;AACD;;AAGD,MAAMC,MAAM,GAAGC,MAAM,CAACF,IAAD,CAArB;;AACA,MAAI,CAACG,KAAK,CAACF,MAAD,CAAV,EAAoB;AAClB,WAAOA,MAAP;AACD;;AAGDD,EAAAA,IAAI,GAAGA,IAAI,CAACI,OAAL,CAAa,OAAb,EAAsB,EAAtB,CAAP;AACA,MAAMC,KAAK,GAAGN,EAAE,CAACC,IAAD,CAAhB;AACA,sBAAOK,KAAK,KAAKC,SAAjB,4CAA+DN,IAA/D;AACA,SAAOK,KAAP;AACD;;AAEM,SAASE,MAAT,CAAgBR,EAAhB,EAAoBM,KAApB,EAA2B;AAChCA,EAAAA,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;AACA,OAAK,IAAMG,GAAX,IAAkBT,EAAlB,EAAsB;AACpB,QAAIA,EAAE,CAACS,GAAD,CAAF,KAAYH,KAAhB,EAAuB;AACrB,0BAAaG,GAAb;AACD;AACF;;AACD,SAAOC,MAAM,CAACJ,KAAD,CAAb;AACD;;AAEM,SAASK,UAAT,CAAoBX,EAApB,EAAwBM,KAAxB,EAA+B;AACpC,sBAAOA,KAAK,KAAKC,SAAjB,EAA4B,eAA5B;AACAD,EAAAA,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;AACA,OAAK,IAAMG,GAAX,IAAkBT,EAAlB,EAAsB;AACpB,QAAIA,EAAE,CAACS,GAAD,CAAF,KAAYH,KAAhB,EAAuB;AACrB,0BAAaG,GAAb;AACD;AACF;;AACD,SAAOC,MAAM,CAACJ,KAAD,CAAb;AACD","sourcesContent":["import {assert} from '../utils/assert';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n"],"file":"constants-to-keys.js"}
1
+ {"version":3,"file":"constants-to-keys.js","names":["getKeyValue","gl","name","number","Number","isNaN","replace","value","assert","undefined","getKey","key","String","getKeyType"],"sources":["../../../src/webgl-utils/constants-to-keys.js"],"sourcesContent":["import {assert} from '../utils/assert';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n"],"mappings":";;;;;;;;;AAAA;;AAGO,SAASA,WAAT,CAAqBC,EAArB,EAAyBC,IAAzB,EAA+B;EAEpC,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EACD;;EAGD,IAAMC,MAAM,GAAGC,MAAM,CAACF,IAAD,CAArB;;EACA,IAAI,CAACG,KAAK,CAACF,MAAD,CAAV,EAAoB;IAClB,OAAOA,MAAP;EACD;;EAGDD,IAAI,GAAGA,IAAI,CAACI,OAAL,CAAa,OAAb,EAAsB,EAAtB,CAAP;EACA,IAAMC,KAAK,GAAGN,EAAE,CAACC,IAAD,CAAhB;EACA,IAAAM,cAAA,EAAOD,KAAK,KAAKE,SAAjB,4CAA+DP,IAA/D;EACA,OAAOK,KAAP;AACD;;AAEM,SAASG,MAAT,CAAgBT,EAAhB,EAAoBM,KAApB,EAA2B;EAChCA,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;EACA,KAAK,IAAMI,GAAX,IAAkBV,EAAlB,EAAsB;IACpB,IAAIA,EAAE,CAACU,GAAD,CAAF,KAAYJ,KAAhB,EAAuB;MACrB,oBAAaI,GAAb;IACD;EACF;;EACD,OAAOC,MAAM,CAACL,KAAD,CAAb;AACD;;AAEM,SAASM,UAAT,CAAoBZ,EAApB,EAAwBM,KAAxB,EAA+B;EACpC,IAAAC,cAAA,EAAOD,KAAK,KAAKE,SAAjB,EAA4B,eAA5B;EACAF,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAd;;EACA,KAAK,IAAMI,GAAX,IAAkBV,EAAlB,EAAsB;IACpB,IAAIA,EAAE,CAACU,GAAD,CAAF,KAAYJ,KAAhB,EAAuB;MACrB,oBAAaI,GAAb;IACD;EACF;;EACD,OAAOC,MAAM,CAACL,KAAD,CAAb;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/format-utils.js"],"names":["glFormatToComponents","format","glTypeToBytes","type"],"mappings":";;;;;;;;AACA;;AAGO,SAASA,oBAAT,CAA8BC,MAA9B,EAAsC;AAC3C,UAAQA,MAAR;AACE;AACA;AACA;AACE,aAAO,CAAP;;AACF;AACA;AACE,aAAO,CAAP;;AACF;AACA;AACE,aAAO,CAAP;;AACF;AACA;AACE,aAAO,CAAP;;AAEF;AACE,0BAAO,KAAP;AACA,aAAO,CAAP;AAjBJ;AAmBD;;AAGM,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;AAClC,UAAQA,IAAR;AACE;AACE,aAAO,CAAP;;AACF;AACA;AACA;AACE,aAAO,CAAP;;AACF;AACE,aAAO,CAAP;;AAEF;AACE,0BAAO,KAAP;AACA,aAAO,CAAP;AAZJ;AAcD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n"],"file":"format-utils.js"}
1
+ {"version":3,"file":"format-utils.js","names":["glFormatToComponents","format","assert","glTypeToBytes","type"],"sources":["../../../src/webgl-utils/format-utils.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n"],"mappings":";;;;;;;;AACA;;AAGO,SAASA,oBAAT,CAA8BC,MAA9B,EAAsC;EAC3C,QAAQA,MAAR;IACE;IACA;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IACF;IACA;MACE,OAAO,CAAP;;IAEF;MACE,IAAAC,cAAA,EAAO,KAAP;MACA,OAAO,CAAP;EAjBJ;AAmBD;;AAGM,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;EAClC,QAAQA,IAAR;IACE;MACE,OAAO,CAAP;;IACF;IACA;IACA;MACE,OAAO,CAAP;;IACF;MACE,OAAO,CAAP;;IAEF;MACE,IAAAF,cAAA,EAAO,KAAP;MACA,OAAO,CAAP;EAZJ;AAcD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/get-error.js"],"names":["GL_NO_ERROR","GL_INVALID_ENUM","GL_INVALID_VALUE","GL_INVALID_OPERATION","GL_OUT_OF_MEMORY","GL_CONTEXT_LOST_WEBGL","GL_INVALID_FRAMEBUFFER_OPERATION","GL_ERROR_MESSAGES","glGetErrorMessage","gl","glError","glGetError","errorStack","getError","push","length","Error","join","glCheckError","debug","error"],"mappings":";;;;;;;;;;;;;;AAIA,IAAMA,WAAW,GAAG,CAApB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,qBAAqB,GAAG,MAA9B;AACA,IAAMC,gCAAgC,GAAG,MAAzC;AAIA,IAAMC,iBAAiB,+EAIpBF,qBAJoB,EAII,oBAJJ,qDAMpBJ,eANoB,EAMF,mCANE,qDAQpBC,gBARoB,EAQD,qBARC,qDAUpBC,oBAVoB,EAUG,yBAVH,qDAapBG,gCAboB,EAae,qCAbf,qDAepBF,gBAfoB,EAeD,qBAfC,sBAAvB;;AAkBA,SAASI,iBAAT,CAA2BC,EAA3B,EAA+BC,OAA/B,EAAwC;AACtC,SAAOH,iBAAiB,CAACG,OAAD,CAAjB,kCAAqDA,OAArD,CAAP;AACD;;AAGM,SAASC,UAAT,CAAoBF,EAApB,EAAwB;AAE7B,MAAMG,UAAU,GAAG,EAAnB;AACA,MAAIF,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAd;;AACA,SAAOH,OAAO,KAAKV,WAAnB,EAAgC;AAC9BY,IAAAA,UAAU,CAACE,IAAX,CAAgBN,iBAAiB,CAACC,EAAD,EAAKC,OAAL,CAAjC;AACAA,IAAAA,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAV;AACD;;AACD,SAAOD,UAAU,CAACG,MAAX,GAAoB,IAAIC,KAAJ,CAAUJ,UAAU,CAACK,IAAX,CAAgB,IAAhB,CAAV,CAApB,GAAuD,IAA9D;AACD;;AAEM,SAASC,YAAT,CAAsBT,EAAtB,EAA0B;AAC/B,MAAIA,EAAE,CAACU,KAAP,EAAc;AACZ,QAAMC,KAAK,GAAGT,UAAU,CAACF,EAAD,CAAxB;;AACA,QAAIW,KAAJ,EAAW;AACT,YAAMA,KAAN;AACD;AACF;AACF","sourcesContent":["// Helper definitions for validation of webgl parameters\n/* eslint-disable no-inline-comments, max-len */\n\n// Errors - Constants returned from getError().\nconst GL_NO_ERROR = 0; // Returned from getError.\nconst GL_INVALID_ENUM = 0x0500; // Returned from getError.\nconst GL_INVALID_VALUE = 0x0501; // Returned from getError.\nconst GL_INVALID_OPERATION = 0x0502; // Returned from getError.\nconst GL_OUT_OF_MEMORY = 0x0505; // Returned from getError.\nconst GL_CONTEXT_LOST_WEBGL = 0x9242; // Returned from getError.\nconst GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506;\n\n// GL errors\n\nconst GL_ERROR_MESSAGES = {\n // If the WebGL context is lost, this error is returned on the\n // first call to getError. Afterwards and until the context has been\n // restored, it returns gl.NO_ERROR.\n [GL_CONTEXT_LOST_WEBGL]: 'WebGL context lost',\n // An unacceptable value has been specified for an enumerated argument.\n [GL_INVALID_ENUM]: 'WebGL invalid enumerated argument',\n // A numeric argument is out of range.\n [GL_INVALID_VALUE]: 'WebGL invalid value',\n // The specified command is not allowed for the current state.\n [GL_INVALID_OPERATION]: 'WebGL invalid operation',\n // The currently bound framebuffer is not framebuffer complete\n // when trying to render to or to read from it.\n [GL_INVALID_FRAMEBUFFER_OPERATION]: 'WebGL invalid framebuffer operation',\n // Not enough memory is left to execute the command.\n [GL_OUT_OF_MEMORY]: 'WebGL out of memory'\n};\n\nfunction glGetErrorMessage(gl, glError) {\n return GL_ERROR_MESSAGES[glError] || `WebGL unknown error ${glError}`;\n}\n\n// Returns an Error representing the Latest webGl error or null\nexport function glGetError(gl) {\n // Loop to ensure all errors are cleared\n const errorStack = [];\n let glError = gl.getError();\n while (glError !== GL_NO_ERROR) {\n errorStack.push(glGetErrorMessage(gl, glError));\n glError = gl.getError();\n }\n return errorStack.length ? new Error(errorStack.join('\\n')) : null;\n}\n\nexport function glCheckError(gl) {\n if (gl.debug) {\n const error = glGetError(gl);\n if (error) {\n throw error;\n }\n }\n}\n"],"file":"get-error.js"}
1
+ {"version":3,"file":"get-error.js","names":["GL_NO_ERROR","GL_INVALID_ENUM","GL_INVALID_VALUE","GL_INVALID_OPERATION","GL_OUT_OF_MEMORY","GL_CONTEXT_LOST_WEBGL","GL_INVALID_FRAMEBUFFER_OPERATION","GL_ERROR_MESSAGES","glGetErrorMessage","gl","glError","glGetError","errorStack","getError","push","length","Error","join","glCheckError","debug","error"],"sources":["../../../src/webgl-utils/get-error.js"],"sourcesContent":["// Helper definitions for validation of webgl parameters\n/* eslint-disable no-inline-comments, max-len */\n\n// Errors - Constants returned from getError().\nconst GL_NO_ERROR = 0; // Returned from getError.\nconst GL_INVALID_ENUM = 0x0500; // Returned from getError.\nconst GL_INVALID_VALUE = 0x0501; // Returned from getError.\nconst GL_INVALID_OPERATION = 0x0502; // Returned from getError.\nconst GL_OUT_OF_MEMORY = 0x0505; // Returned from getError.\nconst GL_CONTEXT_LOST_WEBGL = 0x9242; // Returned from getError.\nconst GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506;\n\n// GL errors\n\nconst GL_ERROR_MESSAGES = {\n // If the WebGL context is lost, this error is returned on the\n // first call to getError. Afterwards and until the context has been\n // restored, it returns gl.NO_ERROR.\n [GL_CONTEXT_LOST_WEBGL]: 'WebGL context lost',\n // An unacceptable value has been specified for an enumerated argument.\n [GL_INVALID_ENUM]: 'WebGL invalid enumerated argument',\n // A numeric argument is out of range.\n [GL_INVALID_VALUE]: 'WebGL invalid value',\n // The specified command is not allowed for the current state.\n [GL_INVALID_OPERATION]: 'WebGL invalid operation',\n // The currently bound framebuffer is not framebuffer complete\n // when trying to render to or to read from it.\n [GL_INVALID_FRAMEBUFFER_OPERATION]: 'WebGL invalid framebuffer operation',\n // Not enough memory is left to execute the command.\n [GL_OUT_OF_MEMORY]: 'WebGL out of memory'\n};\n\nfunction glGetErrorMessage(gl, glError) {\n return GL_ERROR_MESSAGES[glError] || `WebGL unknown error ${glError}`;\n}\n\n// Returns an Error representing the Latest webGl error or null\nexport function glGetError(gl) {\n // Loop to ensure all errors are cleared\n const errorStack = [];\n let glError = gl.getError();\n while (glError !== GL_NO_ERROR) {\n errorStack.push(glGetErrorMessage(gl, glError));\n glError = gl.getError();\n }\n return errorStack.length ? new Error(errorStack.join('\\n')) : null;\n}\n\nexport function glCheckError(gl) {\n if (gl.debug) {\n const error = glGetError(gl);\n if (error) {\n throw error;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAIA,IAAMA,WAAW,GAAG,CAApB;AACA,IAAMC,eAAe,GAAG,MAAxB;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,oBAAoB,GAAG,MAA7B;AACA,IAAMC,gBAAgB,GAAG,MAAzB;AACA,IAAMC,qBAAqB,GAAG,MAA9B;AACA,IAAMC,gCAAgC,GAAG,MAAzC;AAIA,IAAMC,iBAAiB,+EAIpBF,qBAJoB,EAII,oBAJJ,qDAMpBJ,eANoB,EAMF,mCANE,qDAQpBC,gBARoB,EAQD,qBARC,qDAUpBC,oBAVoB,EAUG,yBAVH,qDAapBG,gCAboB,EAae,qCAbf,qDAepBF,gBAfoB,EAeD,qBAfC,sBAAvB;;AAkBA,SAASI,iBAAT,CAA2BC,EAA3B,EAA+BC,OAA/B,EAAwC;EACtC,OAAOH,iBAAiB,CAACG,OAAD,CAAjB,kCAAqDA,OAArD,CAAP;AACD;;AAGM,SAASC,UAAT,CAAoBF,EAApB,EAAwB;EAE7B,IAAMG,UAAU,GAAG,EAAnB;EACA,IAAIF,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAd;;EACA,OAAOH,OAAO,KAAKV,WAAnB,EAAgC;IAC9BY,UAAU,CAACE,IAAX,CAAgBN,iBAAiB,CAACC,EAAD,EAAKC,OAAL,CAAjC;IACAA,OAAO,GAAGD,EAAE,CAACI,QAAH,EAAV;EACD;;EACD,OAAOD,UAAU,CAACG,MAAX,GAAoB,IAAIC,KAAJ,CAAUJ,UAAU,CAACK,IAAX,CAAgB,IAAhB,CAAV,CAApB,GAAuD,IAA9D;AACD;;AAEM,SAASC,YAAT,CAAsBT,EAAtB,EAA0B;EAC/B,IAAIA,EAAE,CAACU,KAAP,EAAc;IACZ,IAAMC,KAAK,GAAGT,UAAU,CAACF,EAAD,CAAxB;;IACA,IAAIW,KAAJ,EAAW;MACT,MAAMA,KAAN;IACD;EACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/request-animation-frame.js"],"names":["requestAnimationFrame","callback","window","setTimeout","cancelAnimationFrame","timerId","clearTimeout"],"mappings":";;;;;;;;AAEO,SAASA,qBAAT,CAA+BC,QAA/B,EAAyC;AAC9C,SAAO,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACF,qBAAxC,GACHE,MAAM,CAACF,qBAAP,CAA6BC,QAA7B,CADG,GAEHE,UAAU,CAACF,QAAD,EAAW,OAAO,EAAlB,CAFd;AAGD;;AAEM,SAASG,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,SAAO,OAAOH,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACE,oBAAxC,GACHF,MAAM,CAACE,oBAAP,CAA4BC,OAA5B,CADG,GAEHC,YAAY,CAACD,OAAD,CAFhB;AAGD","sourcesContent":["// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame\n\nexport function requestAnimationFrame(callback) {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame(callback)\n : setTimeout(callback, 1000 / 60);\n}\n\nexport function cancelAnimationFrame(timerId) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame(timerId)\n : clearTimeout(timerId);\n}\n"],"file":"request-animation-frame.js"}
1
+ {"version":3,"file":"request-animation-frame.js","names":["requestAnimationFrame","callback","window","setTimeout","cancelAnimationFrame","timerId","clearTimeout"],"sources":["../../../src/webgl-utils/request-animation-frame.js"],"sourcesContent":["// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame\n\nexport function requestAnimationFrame(callback) {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame(callback)\n : setTimeout(callback, 1000 / 60);\n}\n\nexport function cancelAnimationFrame(timerId) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame(timerId)\n : clearTimeout(timerId);\n}\n"],"mappings":";;;;;;;;AAEO,SAASA,qBAAT,CAA+BC,QAA/B,EAAyC;EAC9C,OAAO,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACF,qBAAxC,GACHE,MAAM,CAACF,qBAAP,CAA6BC,QAA7B,CADG,GAEHE,UAAU,CAACF,QAAD,EAAW,OAAO,EAAlB,CAFd;AAGD;;AAEM,SAASG,oBAAT,CAA8BC,OAA9B,EAAuC;EAC5C,OAAO,OAAOH,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACE,oBAAxC,GACHF,MAAM,CAACE,oBAAP,CAA4BC,OAA5B,CADG,GAEHC,YAAY,CAACD,OAAD,CAFhB;AAGD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/texture-utils.js"],"names":["cloneTextureFrom","refTexture","overrides","Texture2D","TextureCube","Texture3D","TextureType","constructor","gl","width","height","format","type","dataFormat","border","mipmaps","textureOptions","Object","assign","toFramebuffer","texture","opts","id","framebuffer","Framebuffer","attachments"],"mappings":";;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAIO,SAASA,gBAAT,CAA0BC,UAA1B,EAAsCC,SAAtC,EAAiD;AACtD,sBACED,UAAU,YAAYE,kBAAtB,IACEF,UAAU,YAAYG,oBADxB,IAEEH,UAAU,YAAYI,kBAH1B;AAMA,MAAMC,WAAW,GAAGL,UAAU,CAACM,WAA/B;AAGA,MAAOC,EAAP,GAAuEP,UAAvE,CAAOO,EAAP;AAAA,MAAWC,KAAX,GAAuER,UAAvE,CAAWQ,KAAX;AAAA,MAAkBC,MAAlB,GAAuET,UAAvE,CAAkBS,MAAlB;AAAA,MAA0BC,MAA1B,GAAuEV,UAAvE,CAA0BU,MAA1B;AAAA,MAAkCC,IAAlC,GAAuEX,UAAvE,CAAkCW,IAAlC;AAAA,MAAwCC,UAAxC,GAAuEZ,UAAvE,CAAwCY,UAAxC;AAAA,MAAoDC,MAApD,GAAuEb,UAAvE,CAAoDa,MAApD;AAAA,MAA4DC,OAA5D,GAAuEd,UAAvE,CAA4Dc,OAA5D;AAEA,MAAMC,cAAc,GAAGC,MAAM,CAACC,MAAP,CACrB;AACET,IAAAA,KAAK,EAALA,KADF;AAEEC,IAAAA,MAAM,EAANA,MAFF;AAGEC,IAAAA,MAAM,EAANA,MAHF;AAIEC,IAAAA,IAAI,EAAJA,IAJF;AAKEC,IAAAA,UAAU,EAAVA,UALF;AAMEC,IAAAA,MAAM,EAANA,MANF;AAOEC,IAAAA,OAAO,EAAPA;AAPF,GADqB,EAUrBb,SAVqB,CAAvB;AAeA,SAAO,IAAII,WAAJ,CAAgBE,EAAhB,EAAoBQ,cAApB,CAAP;AACD;;AAKM,SAASG,aAAT,CAAuBC,OAAvB,EAAgCC,IAAhC,EAAsC;AAC3C,MAAOb,EAAP,GAAgCY,OAAhC,CAAOZ,EAAP;AAAA,MAAWC,KAAX,GAAgCW,OAAhC,CAAWX,KAAX;AAAA,MAAkBC,MAAlB,GAAgCU,OAAhC,CAAkBV,MAAlB;AAAA,MAA0BY,EAA1B,GAAgCF,OAAhC,CAA0BE,EAA1B;AACA,MAAMC,WAAW,GAAG,IAAIC,oBAAJ,CAClBhB,EADkB,EAElBS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBG,IAAlB,EAAwB;AACtBC,IAAAA,EAAE,4BAAqBA,EAArB,CADoB;AAEtBb,IAAAA,KAAK,EAALA,KAFsB;AAGtBC,IAAAA,MAAM,EAANA,MAHsB;AAItBe,IAAAA,WAAW,2CACeL,OADf;AAJW,GAAxB,CAFkB,CAApB;AAWA,SAAOG,WAAP;AACD","sourcesContent":["// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Clone a new texture object from a reference texture object.\n/** @type {import('./texture-utils').cloneTextureFrom} */\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n // @ts-expect-error\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n // @ts-expect-error\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\n/** @type {import('./texture-utils').toFramebuffer} */\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n"],"file":"texture-utils.js"}
1
+ {"version":3,"file":"texture-utils.js","names":["cloneTextureFrom","refTexture","overrides","assert","Texture2D","TextureCube","Texture3D","TextureType","constructor","gl","width","height","format","type","dataFormat","border","mipmaps","textureOptions","Object","assign","toFramebuffer","texture","opts","id","framebuffer","Framebuffer","attachments"],"sources":["../../../src/webgl-utils/texture-utils.js"],"sourcesContent":["// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Clone a new texture object from a reference texture object.\n/** @type {import('./texture-utils').cloneTextureFrom} */\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n // @ts-expect-error\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n // @ts-expect-error\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\n/** @type {import('./texture-utils').toFramebuffer} */\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n"],"mappings":";;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAIO,SAASA,gBAAT,CAA0BC,UAA1B,EAAsCC,SAAtC,EAAiD;EACtD,IAAAC,cAAA,EACEF,UAAU,YAAYG,kBAAtB,IACEH,UAAU,YAAYI,oBADxB,IAEEJ,UAAU,YAAYK,kBAH1B;EAMA,IAAMC,WAAW,GAAGN,UAAU,CAACO,WAA/B;EAGA,IAAOC,EAAP,GAAuER,UAAvE,CAAOQ,EAAP;EAAA,IAAWC,KAAX,GAAuET,UAAvE,CAAWS,KAAX;EAAA,IAAkBC,MAAlB,GAAuEV,UAAvE,CAAkBU,MAAlB;EAAA,IAA0BC,MAA1B,GAAuEX,UAAvE,CAA0BW,MAA1B;EAAA,IAAkCC,IAAlC,GAAuEZ,UAAvE,CAAkCY,IAAlC;EAAA,IAAwCC,UAAxC,GAAuEb,UAAvE,CAAwCa,UAAxC;EAAA,IAAoDC,MAApD,GAAuEd,UAAvE,CAAoDc,MAApD;EAAA,IAA4DC,OAA5D,GAAuEf,UAAvE,CAA4De,OAA5D;EAEA,IAAMC,cAAc,GAAGC,MAAM,CAACC,MAAP,CACrB;IACET,KAAK,EAALA,KADF;IAEEC,MAAM,EAANA,MAFF;IAGEC,MAAM,EAANA,MAHF;IAIEC,IAAI,EAAJA,IAJF;IAKEC,UAAU,EAAVA,UALF;IAMEC,MAAM,EAANA,MANF;IAOEC,OAAO,EAAPA;EAPF,CADqB,EAUrBd,SAVqB,CAAvB;EAeA,OAAO,IAAIK,WAAJ,CAAgBE,EAAhB,EAAoBQ,cAApB,CAAP;AACD;;AAKM,SAASG,aAAT,CAAuBC,OAAvB,EAAgCC,IAAhC,EAAsC;EAC3C,IAAOb,EAAP,GAAgCY,OAAhC,CAAOZ,EAAP;EAAA,IAAWC,KAAX,GAAgCW,OAAhC,CAAWX,KAAX;EAAA,IAAkBC,MAAlB,GAAgCU,OAAhC,CAAkBV,MAAlB;EAAA,IAA0BY,EAA1B,GAAgCF,OAAhC,CAA0BE,EAA1B;EACA,IAAMC,WAAW,GAAG,IAAIC,oBAAJ,CAClBhB,EADkB,EAElBS,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBG,IAAlB,EAAwB;IACtBC,EAAE,4BAAqBA,EAArB,CADoB;IAEtBb,KAAK,EAALA,KAFsB;IAGtBC,MAAM,EAANA,MAHsB;IAItBe,WAAW,2CACeL,OADf;EAJW,CAAxB,CAFkB,CAApB;EAWA,OAAOG,WAAP;AACD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/webgl-utils/typed-array-utils.js"],"names":["ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","arrayOrType","type","ArrayBuffer","isView","constructor","Float32Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","Int8Array","Int16Array","Int32Array","Error","getTypedArrayFromGLType","glType","clamped","flipRows","data","width","height","bytesPerPixel","temp","bytesPerRow","y","topOffset","bottomOffset","set","subarray","copyWithin","scalePixels","newWidth","Math","round","newHeight","newData","x","c"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n"],"file":"typed-array-utils.js"}
1
+ {"version":3,"file":"typed-array-utils.js","names":["ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","arrayOrType","type","ArrayBuffer","isView","constructor","Float32Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","Int8Array","Int16Array","Int32Array","Error","getTypedArrayFromGLType","glType","clamped","flipRows","data","width","height","bytesPerPixel","temp","bytesPerRow","y","topOffset","bottomOffset","set","subarray","copyWithin","scalePixels","newWidth","Math","round","newHeight","newData","x","c"],"sources":["../../../src/webgl-utils/typed-array-utils.js"],"sourcesContent":["import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.js"],"names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"mappings":"AAAA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAGAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB","sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"file":"bundle.js"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"sources":["../../src/bundle.js"],"sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"mappings":"AAAA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAGAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/accessor.js"],"names":["getTypedArrayFromGLType","assert","checkProps","DEFAULT_ACCESSOR_VALUES","offset","stride","type","size","divisor","normalized","integer","PROP_CHECKS","deprecatedProps","instanced","isInstanced","Accessor","getBytesPerElement","accessor","ArrayType","BYTES_PER_ELEMENT","getBytesPerVertex","resolve","accessors","constructor","forEach","_assign","Object","freeze","toString","JSON","stringify","BYTES_PER_VERTEX","props","undefined","buffer","index"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n"],"file":"accessor.js"}
1
+ {"version":3,"file":"accessor.js","names":["getTypedArrayFromGLType","assert","checkProps","DEFAULT_ACCESSOR_VALUES","offset","stride","type","size","divisor","normalized","integer","PROP_CHECKS","deprecatedProps","instanced","isInstanced","Accessor","getBytesPerElement","accessor","ArrayType","BYTES_PER_ELEMENT","getBytesPerVertex","resolve","accessors","constructor","forEach","_assign","Object","freeze","toString","JSON","stringify","BYTES_PER_VERTEX","props","undefined","buffer","index"],"sources":["../../../src/classes/accessor.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/buffer.js"],"names":["Resource","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","assertWebGL2Context","log","assert","checkProps","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","Buffer","Symbol","toStringTag","constructor","gl","props","stubRemovedMethods","target","webgl2","initialize","Object","seal","getElementCount","accessor","Math","round","byteLength","getBytesPerElement","getVertexCount","getBytesPerVertex","ArrayBuffer","isView","data","Number","isFinite","usage","debugData","setAccessor","assign","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","subData","srcOffset","length","bindBuffer","handle","undefined","bufferSubData","_inferType","copyData","sourceBuffer","readOffset","writeOffset","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_trackDeallocatedMemory","_getTarget","bufferData","slice","_trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","_createHandle","createBuffer","_deleteHandle","deleteBuffer","_getParameter","pname","value","getBufferParameter","deprecated","setByteLength","updateAccessor","opts"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n"],"file":"buffer.js"}
1
+ {"version":3,"file":"buffer.js","names":["Resource","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","assertWebGL2Context","log","assert","checkProps","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","Buffer","Symbol","toStringTag","constructor","gl","props","stubRemovedMethods","target","webgl2","initialize","Object","seal","getElementCount","accessor","Math","round","byteLength","getBytesPerElement","getVertexCount","getBytesPerVertex","ArrayBuffer","isView","data","Number","isFinite","usage","debugData","setAccessor","assign","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","subData","srcOffset","length","bindBuffer","handle","undefined","bufferSubData","_inferType","copyData","sourceBuffer","readOffset","writeOffset","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_trackDeallocatedMemory","_getTarget","bufferData","slice","_trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","_createHandle","createBuffer","_deleteHandle","deleteBuffer","_getParameter","pname","value","getBufferParameter","deprecated","setByteLength","updateAccessor","opts"],"sources":["../../../src/classes/buffer.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/clear.js"],"names":["assertWebGL2Context","withParameters","assert","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_COLOR_BUFFER_BIT","GL_COLOR","GL_DEPTH","GL_STENCIL","GL_DEPTH_STENCIL","ERR_ARGUMENTS","clear","gl","framebuffer","color","depth","stencil","parameters","clearFlags","clearColor","clearDepth","clearStencil","clearBuffer","buffer","drawBuffer","value","constructor","Int32Array","clearBufferiv","Uint32Array","clearBufferuiv","Float32Array","clearBufferfv","clearBufferfi"],"mappings":"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","sourcesContent":["import {assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\n/** @type {import('./clear').clear} */\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\n/** @type {import('./clear').clearBuffer} */\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n"],"file":"clear.js"}
1
+ {"version":3,"file":"clear.js","names":["assertWebGL2Context","withParameters","assert","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_COLOR_BUFFER_BIT","GL_COLOR","GL_DEPTH","GL_STENCIL","GL_DEPTH_STENCIL","ERR_ARGUMENTS","clear","gl","framebuffer","color","depth","stencil","parameters","clearFlags","clearColor","clearDepth","clearStencil","clearBuffer","buffer","drawBuffer","value","constructor","Int32Array","clearBufferiv","Uint32Array","clearBufferuiv","Float32Array","clearBufferfv","clearBufferfi"],"sources":["../../../src/classes/clear.js"],"sourcesContent":["import {assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\n/** @type {import('./clear').clear} */\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\n/** @type {import('./clear').clearBuffer} */\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n"],"mappings":"AAAA,SAAQA,mBAAR,EAA6BC,cAA7B,QAAkD,kBAAlD;AACA,SAAQC,MAAR,QAAqB,iBAArB;AAGA,MAAMC,mBAAmB,GAAG,UAA5B;AACA,MAAMC,qBAAqB,GAAG,UAA9B;AACA,MAAMC,mBAAmB,GAAG,UAA5B;AAEA,MAAMC,QAAQ,GAAG,MAAjB;AACA,MAAMC,QAAQ,GAAG,MAAjB;AACA,MAAMC,UAAU,GAAG,MAAnB;AACA,MAAMC,gBAAgB,GAAG,MAAzB;AAGA,MAAMC,aAAa,GAAG,sBAAtB;AAIA,OAAO,SAASC,KAAT,CAAeC,EAAf,EAA0F;EAAA,IAAvE;IAACC,WAAW,GAAG,IAAf;IAAqBC,KAAK,GAAG,IAA7B;IAAmCC,KAAK,GAAG,IAA3C;IAAiDC,OAAO,GAAG;EAA3D,CAAuE,uEAAJ,EAAI;EAC/F,MAAMC,UAAU,GAAG,EAAnB;;EAEA,IAAIJ,WAAJ,EAAiB;IACfI,UAAU,CAACJ,WAAX,GAAyBA,WAAzB;EACD;;EAED,IAAIK,UAAU,GAAG,CAAjB;;EAEA,IAAIJ,KAAJ,EAAW;IACTI,UAAU,IAAIb,mBAAd;;IACA,IAAIS,KAAK,KAAK,IAAd,EAAoB;MAClBG,UAAU,CAACE,UAAX,GAAwBL,KAAxB;IACD;EACF;;EAED,IAAIC,KAAJ,EAAW;IACTG,UAAU,IAAIf,mBAAd;;IACA,IAAIY,KAAK,KAAK,IAAd,EAAoB;MAClBE,UAAU,CAACG,UAAX,GAAwBL,KAAxB;IACD;EACF;;EAED,IAAIC,OAAJ,EAAa;IACXE,UAAU,IAAId,qBAAd;;IACA,IAAIW,KAAK,KAAK,IAAd,EAAoB;MAClBE,UAAU,CAACI,YAAX,GAA0BN,KAA1B;IACD;EACF;;EAEDb,MAAM,CAACgB,UAAU,KAAK,CAAhB,EAAmBR,aAAnB,CAAN;EAGAT,cAAc,CAACW,EAAD,EAAKK,UAAL,EAAiB,MAAM;IACnCL,EAAE,CAACD,KAAH,CAASO,UAAT;EACD,CAFa,CAAd;AAGD;AAID,OAAO,SAASI,WAAT,CACLV,EADK,EAGL;EAAA,IADA;IAACC,WAAW,GAAG,IAAf;IAAqBU,MAAM,GAAGjB,QAA9B;IAAwCkB,UAAU,GAAG,CAArD;IAAwDC,KAAK,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;EAAhE,CACA,uEADgF,EAChF;EACAzB,mBAAmB,CAACY,EAAD,CAAnB;EAEAX,cAAc,CAACW,EAAD,EAAK;IAACC;EAAD,CAAL,EAAoB,MAAM;IAEtC,QAAQU,MAAR;MACE,KAAKjB,QAAL;QACE,QAAQmB,KAAK,CAACC,WAAd;UACE,KAAKC,UAAL;YACEf,EAAE,CAACgB,aAAH,CAAiBL,MAAjB,EAAyBC,UAAzB,EAAqCC,KAArC;YACA;;UACF,KAAKI,WAAL;YACEjB,EAAE,CAACkB,cAAH,CAAkBP,MAAlB,EAA0BC,UAA1B,EAAsCC,KAAtC;YACA;;UACF,KAAKM,YAAL;UACA;YACEnB,EAAE,CAACoB,aAAH,CAAiBT,MAAjB,EAAyBC,UAAzB,EAAqCC,KAArC;QATJ;;QAWA;;MAEF,KAAKlB,QAAL;QACEK,EAAE,CAACoB,aAAH,CAAiBzB,QAAjB,EAA2B,CAA3B,EAA8B,CAACkB,KAAD,CAA9B;QACA;;MAEF,KAAKjB,UAAL;QACEI,EAAE,CAACgB,aAAH,CAAiBpB,UAAjB,EAA6B,CAA7B,EAAgC,CAACiB,KAAD,CAAhC;QACA;;MAEF,KAAKhB,gBAAL;QACE,MAAM,CAACM,KAAD,EAAQC,OAAR,IAAmBS,KAAzB;QACAb,EAAE,CAACqB,aAAH,CAAiBxB,gBAAjB,EAAmC,CAAnC,EAAsCM,KAAtC,EAA6CC,OAA7C;QACA;;MAEF;QACEd,MAAM,CAAC,KAAD,EAAQQ,aAAR,CAAN;IA7BJ;EA+BD,CAjCa,CAAd;AAkCD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/copy-and-blit.js"],"names":["Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","log","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","assert","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","sourceAttachment","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","type","getPixelArray","prevHandle","bindFramebuffer","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","components","byteCount","byteLength","accessor","size","bind","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","targetImage","dataUrl","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","isFinite","copyTexImage2D","copyTexSubImage2D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","warn","undefined","prevDrawHandle","prevReadHandle","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"file":"copy-and-blit.js"}
1
+ {"version":3,"file":"copy-and-blit.js","names":["Buffer","Framebuffer","Texture","assertWebGL2Context","withParameters","log","flipRows","scalePixels","getTypedArrayFromGLType","getGLTypeFromTypedArray","glFormatToComponents","glTypeToBytes","toFramebuffer","assert","readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","sourceAttachment","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","type","getPixelArray","prevHandle","bindFramebuffer","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","components","byteCount","byteLength","accessor","size","bind","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","targetImage","dataUrl","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","isFinite","copyTexImage2D","copyTexSubImage2D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","warn","undefined","prevDrawHandle","prevReadHandle","blitFramebuffer","pixelArray","format","ArrayType","clamped"],"sources":["../../../src/classes/copy-and-blit.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n"],"mappings":"AACA,OAAOA,MAAP,MAAmB,UAAnB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAAQC,mBAAR,EAA6BC,cAA7B,EAA6CC,GAA7C,QAAuD,kBAAvD;AACA,SAAQC,QAAR,EAAkBC,WAAlB,QAAoC,kCAApC;AACA,SAAQC,uBAAR,EAAiCC,uBAAjC,QAA+D,kCAA/D;AACA,SAAQC,oBAAR,EAA8BC,aAA9B,QAAkD,6BAAlD;AACA,SAAQC,aAAR,QAA4B,8BAA5B;AACA,SAAQC,MAAR,QAAqB,iBAArB;AAOA,OAAO,SAASC,iBAAT,CAA2BC,MAA3B,EAAiD;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EACtD,MAAM;IAACC,OAAO,GAAG,CAAX;IAAcC,OAAO,GAAG,CAAxB;IAA2BC,YAAY;EAAvC,IAAqDH,OAA3D;EACA,IAAI;IACFI,gBAAgB,QADd;IAEFC,MAAM,GAAG,IAFP;IAIFC,WAJE;IAKFC,YALE;IAMFC;EANE,IAOAR,OAPJ;EASA,MAAM;IAACS,WAAD;IAAcC;EAAd,IAAmCC,cAAc,CAACZ,MAAD,CAAvD;EACAF,MAAM,CAACY,WAAD,CAAN;EACA,MAAM;IAACG,EAAD;IAAKC,MAAL;IAAaC;EAAb,IAA4BL,WAAlC;EACAH,WAAW,GAAGA,WAAW,IAAIG,WAAW,CAACM,KAAzC;EACAR,YAAY,GAAGA,YAAY,IAAIE,WAAW,CAACO,MAA3C;;EAGA,IAAIZ,gBAAgB,UAAhB,IAA6CS,MAAM,KAAK,IAA5D,EAAkE;IAChET,gBAAgB,OAAhB;EACD;;EAEDP,MAAM,CAACiB,WAAW,CAACV,gBAAD,CAAZ,CAAN;EAGAI,UAAU,GAAGA,UAAU,IAAIM,WAAW,CAACV,gBAAD,CAAX,CAA8Ba,IAAzD;EAGAZ,MAAM,GAAGa,aAAa,CAACb,MAAD,EAASG,UAAT,EAAqBL,YAArB,EAAmCG,WAAnC,EAAgDC,YAAhD,CAAtB;EAGAC,UAAU,GAAGA,UAAU,IAAIf,uBAAuB,CAACY,MAAD,CAAlD;EAEA,MAAMc,UAAU,GAAGP,EAAE,CAACQ,eAAH,QAAmCP,MAAnC,CAAnB;EACAD,EAAE,CAACS,UAAH,CAAcpB,OAAd,EAAuBC,OAAvB,EAAgCI,WAAhC,EAA6CC,YAA7C,EAA2DJ,YAA3D,EAAyEK,UAAzE,EAAqFH,MAArF;EAEAO,EAAE,CAACQ,eAAH,QAAmCD,UAAU,IAAI,IAAjD;;EACA,IAAIT,iBAAJ,EAAuB;IACrBD,WAAW,CAACa,MAAZ;EACD;;EACD,OAAOjB,MAAP;AACD;AAID,OAAO,SAASkB,kBAAT,CACLxB,MADK,QAaL;EAAA,IAXA;IACEE,OAAO,GAAG,CADZ;IAEEC,OAAO,GAAG,CAFZ;IAGEC,YAAY,OAHd;IAIEE,MAAM,GAAG,IAJX;IAKEmB,gBAAgB,GAAG,CALrB;IAOElB,WAPF;IAQEC,YARF;IASEC;EATF,CAWA;EACA,MAAM;IAACC,WAAD;IAAcC;EAAd,IAAmCC,cAAc,CAACZ,MAAD,CAAvD;EACAF,MAAM,CAACY,WAAD,CAAN;EACAH,WAAW,GAAGA,WAAW,IAAIG,WAAW,CAACM,KAAzC;EACAR,YAAY,GAAGA,YAAY,IAAIE,WAAW,CAACO,MAA3C;EAGA,MAAMS,GAAG,GAAGtC,mBAAmB,CAACsB,WAAW,CAACG,EAAb,CAA/B;EAGAJ,UAAU,GAAGA,UAAU,KAAKH,MAAM,GAAGA,MAAM,CAACY,IAAV,OAAX,CAAvB;;EAEA,IAAI,CAACZ,MAAL,EAAa;IAEX,MAAMqB,UAAU,GAAGhC,oBAAoB,CAACS,YAAD,CAAvC;IACA,MAAMwB,SAAS,GAAGhC,aAAa,CAACa,UAAD,CAA/B;IACA,MAAMoB,UAAU,GAAGJ,gBAAgB,GAAGlB,WAAW,GAAGC,YAAd,GAA6BmB,UAA7B,GAA0CC,SAAhF;IACAtB,MAAM,GAAG,IAAIrB,MAAJ,CAAWyC,GAAX,EAAgB;MAACG,UAAD;MAAaC,QAAQ,EAAE;QAACZ,IAAI,EAAET,UAAP;QAAmBsB,IAAI,EAAEJ;MAAzB;IAAvB,CAAhB,CAAT;EACD;;EAEDrB,MAAM,CAAC0B,IAAP,CAAY;IAAC1B,MAAM;EAAP,CAAZ;EACAjB,cAAc,CAACqC,GAAD,EAAM;IAAChB;EAAD,CAAN,EAAqB,MAAM;IACvCgB,GAAG,CAACJ,UAAJ,CACEpB,OADF,EAEEC,OAFF,EAGEI,WAHF,EAIEC,YAJF,EAKEJ,YALF,EAMEK,UANF,EAOEgB,gBAPF;EASD,CAVa,CAAd;EAWAnB,MAAM,CAAC2B,MAAP,CAAc;IAAC3B,MAAM;EAAP,CAAd;;EACA,IAAIK,iBAAJ,EAAuB;IACrBD,WAAW,CAACa,MAAZ;EACD;;EAED,OAAOjB,MAAP;AACD;AAGD,OAAO,SAAS4B,aAAT,CACLlC,MADK,EAML;EAAA,IAJA;IACEK,gBAAgB,QADlB;IAEE8B,eAAe,GAAGC,MAAM,CAACC;EAF3B,CAIA,uEADI,EACJ;EACA,IAAIC,IAAI,GAAGvC,iBAAiB,CAACC,MAAD,EAAS;IAACK;EAAD,CAAT,CAA5B;EAGA,IAAI;IAACW,KAAD;IAAQC;EAAR,IAAkBjB,MAAtB;;EACA,OAAOiB,MAAM,GAAGkB,eAAhB,EAAiC;IAC/B,CAAC;MAACG,IAAD;MAAOtB,KAAP;MAAcC;IAAd,IAAwBzB,WAAW,CAAC;MAAC8C,IAAD;MAAOtB,KAAP;MAAcC;IAAd,CAAD,CAApC;EACD;;EAGD1B,QAAQ,CAAC;IAAC+C,IAAD;IAAOtB,KAAP;IAAcC;EAAd,CAAD,CAAR;EAEA,MAAMsB,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;EACAF,MAAM,CAACvB,KAAP,GAAeA,KAAf;EACAuB,MAAM,CAACtB,MAAP,GAAgBA,MAAhB;EACA,MAAMyB,OAAO,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAhB;EAGA,MAAMC,SAAS,GAAGF,OAAO,CAACG,eAAR,CAAwB7B,KAAxB,EAA+BC,MAA/B,CAAlB;EACA2B,SAAS,CAACN,IAAV,CAAeQ,GAAf,CAAmBR,IAAnB;EACAI,OAAO,CAACK,YAAR,CAAqBH,SAArB,EAAgC,CAAhC,EAAmC,CAAnC;EAEA,OAAOL,MAAM,CAACS,SAAP,EAAP;AACD;AAGD,OAAO,SAASC,WAAT,CACLjD,MADK,EAML;EAAA,IAJA;IACEK,gBAAgB,QADlB;IAEE6C,WAAW,GAAG;EAFhB,CAIA,uEADI,EACJ;EACA,MAAMC,OAAO,GAAGjB,aAAa,CAAClC,MAAD,EAAS;IAACK;EAAD,CAAT,CAA7B;EACA6C,WAAW,GAAGA,WAAW,IAAI,IAAIE,KAAJ,EAA7B;EACAF,WAAW,CAACG,GAAZ,GAAkBF,OAAlB;EACA,OAAOD,WAAP;AACD;AAID,OAAO,SAASI,aAAT,CAAuBtD,MAAvB,EAA+BM,MAA/B,EAAqD;EAAA,IAAdL,OAAc,uEAAJ,EAAI;EAC1D,MAAM;IACJC,OAAO,GAAG,CADN;IAEJC,OAAO,GAAG,CAFN;IAIJoD,iBAAiB,GAAG,CAJhB;IAKJC,oBAAoB;EALhB,IAMFvD,OANJ;EAOA,IAAI;IACFwD,OADE;IAEFC,OAFE;IAGFC,OAHE;IAIF3C,KAJE;IAKFC;EALE,IAMAhB,OANJ;EAQA,MAAM;IAACS,WAAD;IAAcC;EAAd,IAAmCC,cAAc,CAACZ,MAAD,CAAvD;EACAF,MAAM,CAACY,WAAD,CAAN;EACA,MAAM;IAACG,EAAD;IAAKC;EAAL,IAAeJ,WAArB;EACA,MAAMkD,SAAS,GACb,OAAOH,OAAP,KAAmB,WAAnB,IACA,OAAOC,OAAP,KAAmB,WADnB,IAEA,OAAOC,OAAP,KAAmB,WAHrB;EAIAF,OAAO,GAAGA,OAAO,IAAI,CAArB;EACAC,OAAO,GAAGA,OAAO,IAAI,CAArB;EACAC,OAAO,GAAGA,OAAO,IAAI,CAArB;EACA,MAAMvC,UAAU,GAAGP,EAAE,CAACQ,eAAH,QAAmCP,MAAnC,CAAnB;EAGAhB,MAAM,CAACQ,MAAD,CAAN;EACA,IAAIuD,OAAO,GAAG,IAAd;;EACA,IAAIvD,MAAM,YAAYnB,OAAtB,EAA+B;IAC7B0E,OAAO,GAAGvD,MAAV;IACAU,KAAK,GAAGoB,MAAM,CAAC0B,QAAP,CAAgB9C,KAAhB,IAAyBA,KAAzB,GAAiC6C,OAAO,CAAC7C,KAAjD;IACAC,MAAM,GAAGmB,MAAM,CAAC0B,QAAP,CAAgB7C,MAAhB,IAA0BA,MAA1B,GAAmC4C,OAAO,CAAC5C,MAApD;IACA4C,OAAO,CAAC7B,IAAR,CAAa,CAAb;IACA1B,MAAM,GAAGuD,OAAO,CAACvD,MAAjB;EACD;;EAED,IAAI,CAACsD,SAAL,EAAgB;IACd/C,EAAE,CAACkD,cAAH,CACEzD,MADF,EAEEiD,iBAFF,EAGEC,oBAHF,EAIEtD,OAJF,EAKEC,OALF,EAMEa,KANF,EAOEC,MAPF,EAQE,CARF;EAUD,CAXD,MAWO;IACL,QAAQX,MAAR;MACE;MACA;QACEO,EAAE,CAACmD,iBAAH,CACE1D,MADF,EAEEiD,iBAFF,EAGEE,OAHF,EAIEC,OAJF,EAKExD,OALF,EAMEC,OANF,EAOEa,KAPF,EAQEC,MARF;QAUA;;MACF;MACA;QACE,MAAMS,GAAG,GAAGtC,mBAAmB,CAACyB,EAAD,CAA/B;QACAa,GAAG,CAACuC,iBAAJ,CACE3D,MADF,EAEEiD,iBAFF,EAGEE,OAHF,EAIEC,OAJF,EAKEC,OALF,EAMEzD,OANF,EAOEC,OAPF,EAQEa,KARF,EASEC,MATF;QAWA;;MACF;IA7BF;EA+BD;;EACD,IAAI4C,OAAJ,EAAa;IACXA,OAAO,CAAC5B,MAAR;EACD;;EAEDpB,EAAE,CAACQ,eAAH,QAAmCD,UAAU,IAAI,IAAjD;;EACA,IAAIT,iBAAJ,EAAuB;IACrBD,WAAW,CAACa,MAAZ;EACD;;EACD,OAAOsC,OAAP;AACD;AAKD,OAAO,SAASK,IAAT,CAAclE,MAAd,EAAsBM,MAAtB,EAA4C;EAAA,IAAdL,OAAc,uEAAJ,EAAI;EACjD,MAAM;IACJkE,QAAQ,GAAG,CADP;IAEJC,QAAQ,GAAG,CAFP;IAGJC,QAAQ,GAAG,CAHP;IAIJC,QAAQ,GAAG,CAJP;IAKJC,KAAK,GAAG,IALJ;IAMJC,KAAK,GAAG,KANJ;IAOJC,OAAO,GAAG,KAPN;IAQJC,MAAM;EARF,IASFzE,OATJ;EAWA,IAAI;IACF0E,QADE;IAEFC,QAFE;IAGFC,QAHE;IAIFC,QAJE;IAKFzE,gBAAgB,QALd;IAMF0E,IAAI,GAAG;EANL,IAOA9E,OAPJ;EASA,MAAM;IAACS,WAAW,EAAEsE,cAAd;IAA8BrE,iBAAiB,EAAEsE;EAAjD,IAAyErE,cAAc,CAC3FZ,MAD2F,CAA7F;EAGA,MAAM;IAACU,WAAW,EAAEwE,cAAd;IAA8BvE,iBAAiB,EAAEwE;EAAjD,IAAyEvE,cAAc,CAC3FN,MAD2F,CAA7F;EAIAR,MAAM,CAACkF,cAAD,CAAN;EACAlF,MAAM,CAACoF,cAAD,CAAN;EAEA,MAAM;IAACrE,EAAD;IAAKC,MAAL;IAAaE,KAAb;IAAoBC,MAApB;IAA4BmE;EAA5B,IAA0CF,cAAhD;EACA,MAAMxD,GAAG,GAAGtC,mBAAmB,CAACyB,EAAD,CAA/B;;EAEA,IAAI,CAACmE,cAAc,CAAClE,MAAhB,IAA0BT,gBAAgB,UAA9C,EAAyE;IACvEA,gBAAgB,OAAhB;EACD;;EAED,IAAIkE,KAAJ,EAAW;IACTQ,IAAI,SAAJ;EACD;;EACD,IAAIP,KAAJ,EAAW;IACTO,IAAI,OAAJ;EACD;;EACD,IAAIN,OAAJ,EAAa;IACXM,IAAI,QAAJ;EACD;;EAED,IAAIE,oBAAoB,IAAIE,oBAA5B,EAAkD;IAGhD,IAAIJ,IAAI,IAAI,UAAJ,CAAR,EAA0D;MACxDA,IAAI,QAAJ;MACAzF,GAAG,CAAC+F,IAAJ,CAAS,6EAAT;IACD;EACF;;EACDvF,MAAM,CAACiF,IAAD,CAAN;EAEAJ,QAAQ,GAAGA,QAAQ,KAAKW,SAAb,GAAyBN,cAAc,CAAChE,KAAxC,GAAgD2D,QAA3D;EACAC,QAAQ,GAAGA,QAAQ,KAAKU,SAAb,GAAyBN,cAAc,CAAC/D,MAAxC,GAAiD2D,QAA5D;EACAC,QAAQ,GAAGA,QAAQ,KAAKS,SAAb,GAAyBtE,KAAzB,GAAiC6D,QAA5C;EACAC,QAAQ,GAAGA,QAAQ,KAAKQ,SAAb,GAAyBrE,MAAzB,GAAkC6D,QAA7C;EAEA,MAAMS,cAAc,GAAG1E,EAAE,CAACQ,eAAH,QAAwCP,MAAxC,CAAvB;EACA,MAAM0E,cAAc,GAAG3E,EAAE,CAACQ,eAAH,QAAwC2D,cAAc,CAAClE,MAAvD,CAAvB;EACAY,GAAG,CAAC0D,UAAJ,CAAe/E,gBAAf;EACAqB,GAAG,CAAC+D,eAAJ,CACEtB,QADF,EAEEC,QAFF,EAGEO,QAHF,EAIEC,QAJF,EAKEP,QALF,EAMEC,QANF,EAOEO,QAPF,EAQEC,QARF,EASEC,IATF,EAUEL,MAVF;EAYAhD,GAAG,CAAC0D,UAAJ,CAAeA,UAAf;EAEA1D,GAAG,CAACL,eAAJ,QAAyCmE,cAAc,IAAI,IAA3D;EAEA9D,GAAG,CAACL,eAAJ,QAAyCkE,cAAc,IAAI,IAA3D;;EACA,IAAIN,oBAAJ,EAA0B;IACxBD,cAAc,CAACzD,MAAf;EACD;;EACD,IAAI4D,oBAAJ,EAA0B;IACxBD,cAAc,CAAC3D,MAAf;EACD;;EAED,OAAO2D,cAAP;AACD;;AAID,SAAStE,cAAT,CAAwBZ,MAAxB,EAAgC;EAC9B,IAAI,EAAEA,MAAM,YAAYd,WAApB,CAAJ,EAAsC;IACpC,OAAO;MAACwB,WAAW,EAAEb,aAAa,CAACG,MAAD,CAA3B;MAAqCW,iBAAiB,EAAE;IAAxD,CAAP;EACD;;EACD,OAAO;IAACD,WAAW,EAAEV,MAAd;IAAsBW,iBAAiB,EAAE;EAAzC,CAAP;AACD;;AAED,SAASQ,aAAT,CAAuBuE,UAAvB,EAAmCxE,IAAnC,EAAyCyE,MAAzC,EAAiD3E,KAAjD,EAAwDC,MAAxD,EAAgE;EAC9D,IAAIyE,UAAJ,EAAgB;IACd,OAAOA,UAAP;EACD;;EAEDxE,IAAI,GAAGA,IAAI,QAAX;EACA,MAAM0E,SAAS,GAAGnG,uBAAuB,CAACyB,IAAD,EAAO;IAAC2E,OAAO,EAAE;EAAV,CAAP,CAAzC;EACA,MAAMlE,UAAU,GAAGhC,oBAAoB,CAACgG,MAAD,CAAvC;EAEA,OAAO,IAAIC,SAAJ,CAAc5E,KAAK,GAAGC,MAAR,GAAiBU,UAA/B,CAAP;AACD"}