@luma.gl/webgl 8.5.15 → 8.5.16

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 (194) hide show
  1. package/dist/dist.js +732 -848
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/classes/accessor.js +31 -33
  5. package/dist/es5/classes/accessor.js.map +1 -1
  6. package/dist/es5/classes/buffer.js +24 -26
  7. package/dist/es5/classes/buffer.js.map +1 -1
  8. package/dist/es5/classes/clear.js.map +1 -1
  9. package/dist/es5/classes/copy-and-blit.js +3 -3
  10. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  11. package/dist/es5/classes/framebuffer.js +70 -72
  12. package/dist/es5/classes/framebuffer.js.map +1 -1
  13. package/dist/es5/classes/program-configuration.js.map +1 -1
  14. package/dist/es5/classes/program.js +11 -13
  15. package/dist/es5/classes/program.js.map +1 -1
  16. package/dist/es5/classes/query.js +47 -49
  17. package/dist/es5/classes/query.js.map +1 -1
  18. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  19. package/dist/es5/classes/renderbuffer.js +37 -39
  20. package/dist/es5/classes/renderbuffer.js.map +1 -1
  21. package/dist/es5/classes/resource.js +13 -15
  22. package/dist/es5/classes/resource.js.map +1 -1
  23. package/dist/es5/classes/shader.js +38 -44
  24. package/dist/es5/classes/shader.js.map +1 -1
  25. package/dist/es5/classes/texture-2d.js +16 -17
  26. package/dist/es5/classes/texture-2d.js.map +1 -1
  27. package/dist/es5/classes/texture-3d.js +15 -17
  28. package/dist/es5/classes/texture-3d.js.map +1 -1
  29. package/dist/es5/classes/texture-cube.js +10 -12
  30. package/dist/es5/classes/texture-cube.js.map +1 -1
  31. package/dist/es5/classes/texture-formats.js +1 -1
  32. package/dist/es5/classes/texture-formats.js.map +1 -1
  33. package/dist/es5/classes/texture.js +24 -26
  34. package/dist/es5/classes/texture.js.map +1 -1
  35. package/dist/es5/classes/transform-feedback.js +16 -22
  36. package/dist/es5/classes/transform-feedback.js.map +1 -1
  37. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  38. package/dist/es5/classes/uniforms.js +2 -2
  39. package/dist/es5/classes/uniforms.js.map +1 -1
  40. package/dist/es5/classes/vertex-array-object.js +69 -71
  41. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  42. package/dist/es5/classes/vertex-array.js.map +1 -1
  43. package/dist/es5/debug/debug-program-configuration.js +1 -1
  44. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  45. package/dist/es5/debug/debug-uniforms.js +1 -1
  46. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  47. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  48. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  49. package/dist/es5/features/check-old-ie.js.map +1 -1
  50. package/dist/es5/features/features.js +2 -2
  51. package/dist/es5/features/features.js.map +1 -1
  52. package/dist/es5/features/index.js +16 -16
  53. package/dist/es5/features/index.js.map +1 -1
  54. package/dist/es5/features/limits.js +1 -1
  55. package/dist/es5/features/limits.js.map +1 -1
  56. package/dist/es5/features/webgl-features-table.js.map +1 -1
  57. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  58. package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
  59. package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
  60. package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
  61. package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
  62. package/dist/es5/glsl-utils/index.js +11 -7
  63. package/dist/es5/glsl-utils/index.js.map +1 -1
  64. package/dist/es5/index.js +104 -104
  65. package/dist/es5/index.js.map +1 -1
  66. package/dist/es5/init.d.ts +1 -1
  67. package/dist/es5/init.js +4 -4
  68. package/dist/es5/init.js.map +1 -1
  69. package/dist/es5/utils/array-utils-flat.js +2 -2
  70. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  71. package/dist/es5/utils/assert.js.map +1 -1
  72. package/dist/es5/utils/check-props.js.map +1 -1
  73. package/dist/es5/utils/format-value.js.map +1 -1
  74. package/dist/es5/utils/is-old-ie.js.map +1 -1
  75. package/dist/es5/utils/load-file.js +1 -1
  76. package/dist/es5/utils/load-file.js.map +1 -1
  77. package/dist/es5/utils/stub-methods.js.map +1 -1
  78. package/dist/es5/utils/utils.js +2 -2
  79. package/dist/es5/utils/utils.js.map +1 -1
  80. package/dist/es5/webgl-utils/attribute-utils.js +3 -3
  81. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  82. package/dist/es5/webgl-utils/constants-to-keys.js +1 -1
  83. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  84. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  85. package/dist/es5/webgl-utils/get-error.js +1 -1
  86. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  87. package/dist/es5/webgl-utils/request-animation-frame.js +1 -1
  88. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  89. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  90. package/dist/es5/webgl-utils/typed-array-utils.js +1 -1
  91. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  92. package/dist/esm/bundle.js.map +1 -1
  93. package/dist/esm/classes/accessor.js +12 -3
  94. package/dist/esm/classes/accessor.js.map +1 -1
  95. package/dist/esm/classes/buffer.js +41 -28
  96. package/dist/esm/classes/buffer.js.map +1 -1
  97. package/dist/esm/classes/clear.js +14 -12
  98. package/dist/esm/classes/clear.js.map +1 -1
  99. package/dist/esm/classes/copy-and-blit.js +27 -21
  100. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  101. package/dist/esm/classes/framebuffer.js +89 -64
  102. package/dist/esm/classes/framebuffer.js.map +1 -1
  103. package/dist/esm/classes/program-configuration.js.map +1 -1
  104. package/dist/esm/classes/program.js +40 -32
  105. package/dist/esm/classes/program.js.map +1 -1
  106. package/dist/esm/classes/query.js +11 -6
  107. package/dist/esm/classes/query.js.map +1 -1
  108. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  109. package/dist/esm/classes/renderbuffer.js +25 -19
  110. package/dist/esm/classes/renderbuffer.js.map +1 -1
  111. package/dist/esm/classes/resource.js +34 -19
  112. package/dist/esm/classes/resource.js.map +1 -1
  113. package/dist/esm/classes/shader.js +13 -10
  114. package/dist/esm/classes/shader.js.map +1 -1
  115. package/dist/esm/classes/texture-2d.js +2 -1
  116. package/dist/esm/classes/texture-2d.js.map +1 -1
  117. package/dist/esm/classes/texture-3d.js +17 -14
  118. package/dist/esm/classes/texture-3d.js.map +1 -1
  119. package/dist/esm/classes/texture-cube.js +23 -19
  120. package/dist/esm/classes/texture-cube.js.map +1 -1
  121. package/dist/esm/classes/texture-formats.js.map +1 -1
  122. package/dist/esm/classes/texture.js +47 -35
  123. package/dist/esm/classes/texture.js.map +1 -1
  124. package/dist/esm/classes/transform-feedback.js +12 -6
  125. package/dist/esm/classes/transform-feedback.js.map +1 -1
  126. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  127. package/dist/esm/classes/uniforms.js +6 -6
  128. package/dist/esm/classes/uniforms.js.map +1 -1
  129. package/dist/esm/classes/vertex-array-object.js +17 -9
  130. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  131. package/dist/esm/classes/vertex-array.js +17 -7
  132. package/dist/esm/classes/vertex-array.js.map +1 -1
  133. package/dist/esm/debug/debug-program-configuration.js +4 -4
  134. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  135. package/dist/esm/debug/debug-uniforms.js +16 -14
  136. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  137. package/dist/esm/debug/debug-vertex-array.js +16 -14
  138. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  139. package/dist/esm/features/check-glsl-extension.js +3 -2
  140. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  141. package/dist/esm/features/check-old-ie.js +2 -1
  142. package/dist/esm/features/check-old-ie.js.map +1 -1
  143. package/dist/esm/features/features.js +1 -1
  144. package/dist/esm/features/features.js.map +1 -1
  145. package/dist/esm/features/index.js.map +1 -1
  146. package/dist/esm/features/limits.js.map +1 -1
  147. package/dist/esm/features/webgl-features-table.js +1 -1
  148. package/dist/esm/features/webgl-features-table.js.map +1 -1
  149. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  150. package/dist/esm/glsl-utils/format-glsl-error.js +9 -7
  151. package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
  152. package/dist/esm/glsl-utils/get-shader-name.js +2 -1
  153. package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
  154. package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
  155. package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
  156. package/dist/esm/glsl-utils/index.js.map +1 -1
  157. package/dist/esm/index.js.map +1 -1
  158. package/dist/esm/init.d.ts +1 -1
  159. package/dist/esm/init.js +4 -4
  160. package/dist/esm/init.js.map +1 -1
  161. package/dist/esm/utils/array-utils-flat.js +7 -6
  162. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  163. package/dist/esm/utils/assert.js.map +1 -1
  164. package/dist/esm/utils/check-props.js +4 -4
  165. package/dist/esm/utils/check-props.js.map +1 -1
  166. package/dist/esm/utils/format-value.js +4 -3
  167. package/dist/esm/utils/format-value.js.map +1 -1
  168. package/dist/esm/utils/is-old-ie.js +2 -1
  169. package/dist/esm/utils/is-old-ie.js.map +1 -1
  170. package/dist/esm/utils/load-file.js +3 -2
  171. package/dist/esm/utils/load-file.js.map +1 -1
  172. package/dist/esm/utils/stub-methods.js +2 -3
  173. package/dist/esm/utils/stub-methods.js.map +1 -1
  174. package/dist/esm/utils/utils.js +3 -2
  175. package/dist/esm/utils/utils.js.map +1 -1
  176. package/dist/esm/webgl-utils/attribute-utils.js +11 -8
  177. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  178. package/dist/esm/webgl-utils/constants-to-keys.js +3 -3
  179. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  180. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  181. package/dist/esm/webgl-utils/get-error.js +1 -1
  182. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  183. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  184. package/dist/esm/webgl-utils/texture-utils.js +1 -1
  185. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  186. package/dist/esm/webgl-utils/typed-array-utils.js +19 -15
  187. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  188. package/package.json +5 -5
  189. package/src/classes/framebuffer.js +1 -0
  190. package/src/classes/transform-feedback.js +1 -1
  191. package/src/classes/vertex-array-object.js +1 -1
  192. package/src/init.d.ts +1 -1
  193. package/src/init.js +1 -1
  194. package/src/webgl-utils/texture-utils.js +2 -0
@@ -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":"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,EAAmB;AAACC,EAAAA,WAAW,GAAG,IAAf;AAAqBC,EAAAA,KAAK,GAAG,IAA7B;AAAmCC,EAAAA,KAAK,GAAG,IAA3C;AAAiDC,EAAAA,OAAO,GAAG;AAA3D,IAAmE,EAAtF,EAA0F;AAC/F,QAAMC,UAAU,GAAG,EAAnB;;AAEA,MAAIJ,WAAJ,EAAiB;AACfI,IAAAA,UAAU,CAACJ,WAAX,GAAyBA,WAAzB;AACD;;AAED,MAAIK,UAAU,GAAG,CAAjB;;AAEA,MAAIJ,KAAJ,EAAW;AACTI,IAAAA,UAAU,IAAIb,mBAAd;;AACA,QAAIS,KAAK,KAAK,IAAd,EAAoB;AAClBG,MAAAA,UAAU,CAACE,UAAX,GAAwBL,KAAxB;AACD;AACF;;AAED,MAAIC,KAAJ,EAAW;AACTG,IAAAA,UAAU,IAAIf,mBAAd;;AACA,QAAIY,KAAK,KAAK,IAAd,EAAoB;AAClBE,MAAAA,UAAU,CAACG,UAAX,GAAwBL,KAAxB;AACD;AACF;;AAED,MAAIC,OAAJ,EAAa;AACXE,IAAAA,UAAU,IAAId,qBAAd;;AACA,QAAIW,KAAK,KAAK,IAAd,EAAoB;AAClBE,MAAAA,UAAU,CAACI,YAAX,GAA0BN,KAA1B;AACD;AACF;;AAEDb,EAAAA,MAAM,CAACgB,UAAU,KAAK,CAAhB,EAAmBR,aAAnB,CAAN;AAGAT,EAAAA,cAAc,CAACW,EAAD,EAAKK,UAAL,EAAiB,MAAM;AACnCL,IAAAA,EAAE,CAACD,KAAH,CAASO,UAAT;AACD,GAFa,CAAd;AAGD;AAID,OAAO,SAASI,WAAT,CACLV,EADK,EAEL;AAACC,EAAAA,WAAW,GAAG,IAAf;AAAqBU,EAAAA,MAAM,GAAGjB,QAA9B;AAAwCkB,EAAAA,UAAU,GAAG,CAArD;AAAwDC,EAAAA,KAAK,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV;AAAhE,IAAgF,EAF3E,EAGL;AACAzB,EAAAA,mBAAmB,CAACY,EAAD,CAAnB;AAEAX,EAAAA,cAAc,CAACW,EAAD,EAAK;AAACC,IAAAA;AAAD,GAAL,EAAoB,MAAM;AAEtC,YAAQU,MAAR;AACE,WAAKjB,QAAL;AACE,gBAAQmB,KAAK,CAACC,WAAd;AACE,eAAKC,UAAL;AACEf,YAAAA,EAAE,CAACgB,aAAH,CAAiBL,MAAjB,EAAyBC,UAAzB,EAAqCC,KAArC;AACA;;AACF,eAAKI,WAAL;AACEjB,YAAAA,EAAE,CAACkB,cAAH,CAAkBP,MAAlB,EAA0BC,UAA1B,EAAsCC,KAAtC;AACA;;AACF,eAAKM,YAAL;AACA;AACEnB,YAAAA,EAAE,CAACoB,aAAH,CAAiBT,MAAjB,EAAyBC,UAAzB,EAAqCC,KAArC;AATJ;;AAWA;;AAEF,WAAKlB,QAAL;AACEK,QAAAA,EAAE,CAACoB,aAAH,CAAiBzB,QAAjB,EAA2B,CAA3B,EAA8B,CAACkB,KAAD,CAA9B;AACA;;AAEF,WAAKjB,UAAL;AACEI,QAAAA,EAAE,CAACgB,aAAH,CAAiBpB,UAAjB,EAA6B,CAA7B,EAAgC,CAACiB,KAAD,CAAhC;AACA;;AAEF,WAAKhB,gBAAL;AACE,cAAM,CAACM,KAAD,EAAQC,OAAR,IAAmBS,KAAzB;AACAb,QAAAA,EAAE,CAACqB,aAAH,CAAiBxB,gBAAjB,EAAmC,CAAnC,EAAsCM,KAAtC,EAA6CC,OAA7C;AACA;;AAEF;AACEd,QAAAA,MAAM,CAAC,KAAD,EAAQQ,aAAR,CAAN;AA7BJ;AA+BD,GAjCa,CAAd;AAkCD","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"}
@@ -7,7 +7,8 @@ import { getTypedArrayFromGLType, getGLTypeFromTypedArray } from '../webgl-utils
7
7
  import { glFormatToComponents, glTypeToBytes } from '../webgl-utils/format-utils';
8
8
  import { toFramebuffer } from '../webgl-utils/texture-utils';
9
9
  import { assert } from '../utils/assert';
10
- export function readPixelsToArray(source, options = {}) {
10
+ export function readPixelsToArray(source) {
11
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11
12
  const {
12
13
  sourceX = 0,
13
14
  sourceY = 0,
@@ -51,16 +52,17 @@ export function readPixelsToArray(source, options = {}) {
51
52
 
52
53
  return target;
53
54
  }
54
- export function readPixelsToBuffer(source, {
55
- sourceX = 0,
56
- sourceY = 0,
57
- sourceFormat = 6408,
58
- target = null,
59
- targetByteOffset = 0,
60
- sourceWidth,
61
- sourceHeight,
62
- sourceType
63
- }) {
55
+ export function readPixelsToBuffer(source, _ref) {
56
+ let {
57
+ sourceX = 0,
58
+ sourceY = 0,
59
+ sourceFormat = 6408,
60
+ target = null,
61
+ targetByteOffset = 0,
62
+ sourceWidth,
63
+ sourceHeight,
64
+ sourceType
65
+ } = _ref;
64
66
  const {
65
67
  framebuffer,
66
68
  deleteFramebuffer
@@ -102,10 +104,11 @@ export function readPixelsToBuffer(source, {
102
104
 
103
105
  return target;
104
106
  }
105
- export function copyToDataUrl(source, {
106
- sourceAttachment = 36064,
107
- targetMaxHeight = Number.MAX_SAFE_INTEGER
108
- } = {}) {
107
+ export function copyToDataUrl(source) {
108
+ let {
109
+ sourceAttachment = 36064,
110
+ targetMaxHeight = Number.MAX_SAFE_INTEGER
111
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
109
112
  let data = readPixelsToArray(source, {
110
113
  sourceAttachment
111
114
  });
@@ -140,10 +143,11 @@ export function copyToDataUrl(source, {
140
143
  context.putImageData(imageData, 0, 0);
141
144
  return canvas.toDataURL();
142
145
  }
143
- export function copyToImage(source, {
144
- sourceAttachment = 36064,
145
- targetImage = null
146
- } = {}) {
146
+ export function copyToImage(source) {
147
+ let {
148
+ sourceAttachment = 36064,
149
+ targetImage = null
150
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
147
151
  const dataUrl = copyToDataUrl(source, {
148
152
  sourceAttachment
149
153
  });
@@ -151,7 +155,8 @@ export function copyToImage(source, {
151
155
  targetImage.src = dataUrl;
152
156
  return targetImage;
153
157
  }
154
- export function copyToTexture(source, target, options = {}) {
158
+ export function copyToTexture(source, target) {
159
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
155
160
  const {
156
161
  sourceX = 0,
157
162
  sourceY = 0,
@@ -221,7 +226,8 @@ export function copyToTexture(source, target, options = {}) {
221
226
 
222
227
  return texture;
223
228
  }
224
- export function blit(source, target, options = {}) {
229
+ export function blit(source, target) {
230
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
225
231
  const {
226
232
  sourceX0 = 0,
227
233
  sourceY0 = 0,
@@ -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":"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"}
@@ -13,7 +13,8 @@ export default class Framebuffer extends Resource {
13
13
  return 'Framebuffer';
14
14
  }
15
15
 
16
- static isSupported(gl, options = {}) {
16
+ static isSupported(gl) {
17
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17
18
  const {
18
19
  colorBufferFloat,
19
20
  colorBufferHalfFloat
@@ -51,7 +52,8 @@ export default class Framebuffer extends Resource {
51
52
  return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
52
53
  }
53
54
 
54
- constructor(gl, opts = {}) {
55
+ constructor(gl) {
56
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
55
57
  super(gl, opts);
56
58
  this.width = null;
57
59
  this.height = null;
@@ -79,17 +81,18 @@ export default class Framebuffer extends Resource {
79
81
  return this.attachments[36128] || this.attachments[33306] || null;
80
82
  }
81
83
 
82
- initialize({
83
- width = 1,
84
- height = 1,
85
- attachments = null,
86
- color = true,
87
- depth = true,
88
- stencil = false,
89
- check = true,
90
- readBuffer = undefined,
91
- drawBuffers = undefined
92
- }) {
84
+ initialize(_ref) {
85
+ let {
86
+ width = 1,
87
+ height = 1,
88
+ attachments = null,
89
+ color = true,
90
+ depth = true,
91
+ stencil = false,
92
+ check = true,
93
+ readBuffer = undefined,
94
+ drawBuffers = undefined
95
+ } = _ref;
93
96
  assert(width >= 0 && height >= 0, 'Width and height need to be integers');
94
97
  this.width = width;
95
98
  this.height = height;
@@ -128,13 +131,14 @@ export default class Framebuffer extends Resource {
128
131
  return this;
129
132
  }
130
133
 
131
- update({
132
- attachments = {},
133
- readBuffer,
134
- drawBuffers,
135
- clearAttachments = false,
136
- resizeAttachments = true
137
- }) {
134
+ update(_ref2) {
135
+ let {
136
+ attachments = {},
137
+ readBuffer,
138
+ drawBuffers,
139
+ clearAttachments = false,
140
+ resizeAttachments = true
141
+ } = _ref2;
138
142
  this.attach(attachments, {
139
143
  clearAttachments,
140
144
  resizeAttachments
@@ -156,7 +160,8 @@ export default class Framebuffer extends Resource {
156
160
  return this;
157
161
  }
158
162
 
159
- resize(options = {}) {
163
+ resize() {
164
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
160
165
  let {
161
166
  width,
162
167
  height
@@ -178,7 +183,7 @@ export default class Framebuffer extends Resource {
178
183
  }
179
184
 
180
185
  if (width !== this.width && height !== this.height) {
181
- log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();
186
+ log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
182
187
  }
183
188
 
184
189
  for (const attachmentPoint in this.attachments) {
@@ -193,10 +198,11 @@ export default class Framebuffer extends Resource {
193
198
  return this;
194
199
  }
195
200
 
196
- attach(attachments, {
197
- clearAttachments = false,
198
- resizeAttachments = true
199
- } = {}) {
201
+ attach(attachments) {
202
+ let {
203
+ clearAttachments = false,
204
+ resizeAttachments = true
205
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
200
206
  const newAttachments = {};
201
207
 
202
208
  if (clearAttachments) {
@@ -278,7 +284,8 @@ export default class Framebuffer extends Resource {
278
284
  return status;
279
285
  }
280
286
 
281
- clear(options = {}) {
287
+ clear() {
288
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
282
289
  const {
283
290
  color,
284
291
  depth,
@@ -305,43 +312,50 @@ export default class Framebuffer extends Resource {
305
312
  return this;
306
313
  }
307
314
 
308
- readPixels(opts = {}) {
315
+ readPixels() {
316
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
309
317
  log.error('Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)')();
310
318
  return null;
311
319
  }
312
320
 
313
- readPixelsToBuffer(opts = {}) {
321
+ readPixelsToBuffer() {
322
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
314
323
  log.error('Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)')();
315
324
  return null;
316
325
  }
317
326
 
318
- copyToDataUrl(opts = {}) {
327
+ copyToDataUrl() {
328
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
319
329
  log.error('Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)')();
320
330
  return null;
321
331
  }
322
332
 
323
- copyToImage(opts = {}) {
333
+ copyToImage() {
334
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
324
335
  log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();
325
336
  return null;
326
337
  }
327
338
 
328
- copyToTexture(opts = {}) {
339
+ copyToTexture() {
340
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
329
341
  log.error('Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})')();
330
342
  return null;
331
343
  }
332
344
 
333
- blit(opts = {}) {
345
+ blit() {
346
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
334
347
  log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();
335
348
  return null;
336
349
  }
337
350
 
338
- invalidate({
339
- attachments = [],
340
- x = 0,
341
- y = 0,
342
- width,
343
- height
344
- }) {
351
+ invalidate(_ref3) {
352
+ let {
353
+ attachments = [],
354
+ x = 0,
355
+ y = 0,
356
+ width,
357
+ height
358
+ } = _ref3;
345
359
  const gl2 = assertWebGL2Context(this.gl);
346
360
  const prevHandle = gl2.bindFramebuffer(36008, this.handle);
347
361
  const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
@@ -372,7 +386,10 @@ export default class Framebuffer extends Resource {
372
386
  return value;
373
387
  }
374
388
 
375
- getAttachmentParameters(attachment = 36064, keys, parameters = this.constructor.ATTACHMENT_PARAMETERS || []) {
389
+ getAttachmentParameters() {
390
+ let attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 36064;
391
+ let keys = arguments.length > 1 ? arguments[1] : undefined;
392
+ let parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];
376
393
  const values = {};
377
394
 
378
395
  for (const pname of parameters) {
@@ -383,7 +400,8 @@ export default class Framebuffer extends Resource {
383
400
  return values;
384
401
  }
385
402
 
386
- getParameters(keys = true) {
403
+ getParameters() {
404
+ let keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
387
405
  const attachments = Object.keys(this.attachments);
388
406
  const parameters = {};
389
407
 
@@ -404,12 +422,15 @@ export default class Framebuffer extends Resource {
404
422
  return this;
405
423
  }
406
424
 
407
- log(logLevel = 0, message = '') {
425
+ log() {
426
+ let logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
427
+ let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
428
+
408
429
  if (logLevel > log.level || typeof window === 'undefined') {
409
430
  return this;
410
431
  }
411
432
 
412
- message = message || `Framebuffer ${this.id}`;
433
+ message = message || "Framebuffer ".concat(this.id);
413
434
  const image = copyToDataUrl(this, {
414
435
  targetMaxHeight: 100
415
436
  });
@@ -421,16 +442,18 @@ export default class Framebuffer extends Resource {
421
442
  return this;
422
443
  }
423
444
 
424
- bind({
425
- target = 36160
426
- } = {}) {
445
+ bind() {
446
+ let {
447
+ target = 36160
448
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
427
449
  this.gl.bindFramebuffer(target, this.handle);
428
450
  return this;
429
451
  }
430
452
 
431
- unbind({
432
- target = 36160
433
- } = {}) {
453
+ unbind() {
454
+ let {
455
+ target = 36160
456
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
434
457
  this.gl.bindFramebuffer(target, null);
435
458
  return this;
436
459
  }
@@ -441,7 +464,7 @@ export default class Framebuffer extends Resource {
441
464
  if (color) {
442
465
  defaultAttachments = defaultAttachments || {};
443
466
  defaultAttachments[36064] = new Texture2D(this.gl, {
444
- id: `${this.id}-color0`,
467
+ id: "".concat(this.id, "-color0"),
445
468
  pixels: null,
446
469
  format: 6408,
447
470
  type: 5121,
@@ -461,7 +484,7 @@ export default class Framebuffer extends Resource {
461
484
  if (depth && stencil) {
462
485
  defaultAttachments = defaultAttachments || {};
463
486
  defaultAttachments[33306] = new Renderbuffer(this.gl, {
464
- id: `${this.id}-depth-stencil`,
487
+ id: "".concat(this.id, "-depth-stencil"),
465
488
  format: 35056,
466
489
  width,
467
490
  height: 111
@@ -470,7 +493,7 @@ export default class Framebuffer extends Resource {
470
493
  } else if (depth) {
471
494
  defaultAttachments = defaultAttachments || {};
472
495
  defaultAttachments[36096] = new Renderbuffer(this.gl, {
473
- id: `${this.id}-depth`,
496
+ id: "".concat(this.id, "-depth"),
474
497
  format: 33189,
475
498
  width,
476
499
  height
@@ -499,10 +522,11 @@ export default class Framebuffer extends Resource {
499
522
  delete this.attachments[attachment];
500
523
  }
501
524
 
502
- _attachRenderbuffer({
503
- attachment = 36064,
504
- renderbuffer
505
- }) {
525
+ _attachRenderbuffer(_ref4) {
526
+ let {
527
+ attachment = 36064,
528
+ renderbuffer
529
+ } = _ref4;
506
530
  const {
507
531
  gl
508
532
  } = this;
@@ -510,12 +534,13 @@ export default class Framebuffer extends Resource {
510
534
  this.attachments[attachment] = renderbuffer;
511
535
  }
512
536
 
513
- _attachTexture({
514
- attachment = 36064,
515
- texture,
516
- layer,
517
- level
518
- }) {
537
+ _attachTexture(_ref5) {
538
+ let {
539
+ attachment = 36064,
540
+ texture,
541
+ layer,
542
+ level
543
+ } = _ref5;
519
544
  const {
520
545
  gl
521
546
  } = this;
@@ -624,7 +649,7 @@ function mapIndexToCubeMapFace(layer) {
624
649
 
625
650
  function _getFrameBufferStatus(status) {
626
651
  const STATUS = Framebuffer.STATUS || {};
627
- return STATUS[status] || `Framebuffer error ${status}`;
652
+ return STATUS[status] || "Framebuffer error ".concat(status);
628
653
  }
629
654
 
630
655
  export const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [36049, 36048, 33296, 33298, 33299, 33300, 33301, 33302, 33303];