@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/classes/accessor.js +2 -2
  6. package/dist/classes/accessor.js.map +1 -1
  7. package/dist/classes/accessor.ts.disabled +1 -1
  8. package/dist/classes/clear.d.ts +3 -2
  9. package/dist/classes/clear.d.ts.map +1 -1
  10. package/dist/classes/clear.js +7 -4
  11. package/dist/classes/clear.js.map +1 -1
  12. package/dist/classes/copy-and-blit.d.ts +18 -1
  13. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  14. package/dist/classes/copy-and-blit.js +30 -25
  15. package/dist/classes/copy-and-blit.js.map +1 -1
  16. package/dist/classes/framebuffer.d.ts +10 -1
  17. package/dist/classes/framebuffer.d.ts.map +1 -1
  18. package/dist/classes/framebuffer.js +15 -15
  19. package/dist/classes/framebuffer.js.map +1 -1
  20. package/dist/classes/program-configuration.d.ts +2 -2
  21. package/dist/classes/program-configuration.d.ts.map +1 -1
  22. package/dist/classes/program-configuration.js +1 -1
  23. package/dist/classes/program-configuration.js.map +1 -1
  24. package/dist/classes/program.d.ts +6 -6
  25. package/dist/classes/program.d.ts.map +1 -1
  26. package/dist/classes/program.js +11 -9
  27. package/dist/classes/program.js.map +1 -1
  28. package/dist/classes/query.d.ts.map +1 -1
  29. package/dist/classes/query.js +6 -5
  30. package/dist/classes/query.js.map +1 -1
  31. package/dist/classes/renderbuffer-formats.js +1 -1
  32. package/dist/classes/renderbuffer-formats.js.map +1 -1
  33. package/dist/classes/renderbuffer.d.ts.map +1 -1
  34. package/dist/classes/renderbuffer.js +4 -3
  35. package/dist/classes/renderbuffer.js.map +1 -1
  36. package/dist/classes/texture-2d.d.ts +4 -3
  37. package/dist/classes/texture-2d.d.ts.map +1 -1
  38. package/dist/classes/texture-2d.js +5 -8
  39. package/dist/classes/texture-2d.js.map +1 -1
  40. package/dist/classes/texture-3d.d.ts +3 -2
  41. package/dist/classes/texture-3d.d.ts.map +1 -1
  42. package/dist/classes/texture-3d.js +15 -6
  43. package/dist/classes/texture-3d.js.map +1 -1
  44. package/dist/classes/texture-cube.d.ts +2 -1
  45. package/dist/classes/texture-cube.d.ts.map +1 -1
  46. package/dist/classes/texture-cube.js +3 -4
  47. package/dist/classes/texture-cube.js.map +1 -1
  48. package/dist/classes/texture-formats.js +1 -1
  49. package/dist/classes/texture-formats.js.map +1 -1
  50. package/dist/classes/texture.d.ts +14 -9
  51. package/dist/classes/texture.d.ts.map +1 -1
  52. package/dist/classes/texture.js +19 -18
  53. package/dist/classes/texture.js.map +1 -1
  54. package/dist/classes/transform-feedback.d.ts.map +1 -1
  55. package/dist/classes/transform-feedback.js +5 -4
  56. package/dist/classes/transform-feedback.js.map +1 -1
  57. package/dist/classes/uniform-buffer-layout.js +1 -1
  58. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  59. package/dist/classes/uniforms.d.ts +0 -1
  60. package/dist/classes/uniforms.d.ts.map +1 -1
  61. package/dist/classes/uniforms.js +1 -2
  62. package/dist/classes/uniforms.js.map +1 -1
  63. package/dist/classes/vertex-array-object.d.ts +1 -1
  64. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  65. package/dist/classes/vertex-array-object.js +8 -9
  66. package/dist/classes/vertex-array-object.js.map +1 -1
  67. package/dist/classes/vertex-array.d.ts +1 -1
  68. package/dist/classes/vertex-array.d.ts.map +1 -1
  69. package/dist/classes/vertex-array.js +1 -2
  70. package/dist/classes/vertex-array.js.map +1 -1
  71. package/dist/classes/webgl-buffer.d.ts +2 -0
  72. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  73. package/dist/classes/webgl-buffer.js +8 -5
  74. package/dist/classes/webgl-buffer.js.map +1 -1
  75. package/dist/classes/webgl-resource.d.ts +6 -4
  76. package/dist/classes/webgl-resource.d.ts.map +1 -1
  77. package/dist/classes/webgl-resource.js +12 -8
  78. package/dist/classes/webgl-resource.js.map +1 -1
  79. package/dist/classes/webgl-shader.d.ts +3 -1
  80. package/dist/classes/webgl-shader.d.ts.map +1 -1
  81. package/dist/classes/webgl-shader.js +7 -4
  82. package/dist/classes/webgl-shader.js.map +1 -1
  83. package/dist/context/context/context-state.d.ts +18 -0
  84. package/dist/context/context/context-state.d.ts.map +1 -0
  85. package/dist/context/context/context-state.js +26 -0
  86. package/dist/context/context/context-state.js.map +1 -0
  87. package/dist/context/context/create-context.d.ts +40 -0
  88. package/dist/context/context/create-context.d.ts.map +1 -0
  89. package/dist/context/context/create-context.js +37 -0
  90. package/dist/context/context/create-context.js.map +1 -0
  91. package/dist/context/context/device-pixels.d.ts +25 -0
  92. package/dist/context/context/device-pixels.d.ts.map +1 -0
  93. package/dist/context/context/device-pixels.js +98 -0
  94. package/dist/context/context/device-pixels.js.map +1 -0
  95. package/dist/context/context/get-canvas.d.ts +13 -0
  96. package/dist/context/context/get-canvas.d.ts.map +1 -0
  97. package/dist/context/context/get-canvas.js +31 -0
  98. package/dist/context/context/get-canvas.js.map +1 -0
  99. package/dist/context/context/resize-context.d.ts +20 -0
  100. package/dist/context/context/resize-context.d.ts.map +1 -0
  101. package/dist/context/context/resize-context.js +15 -0
  102. package/dist/context/context/resize-context.js.map +1 -0
  103. package/dist/context/context/webgl-checks.d.ts +13 -0
  104. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  105. package/dist/context/context/webgl-checks.js +34 -0
  106. package/dist/context/context/webgl-checks.js.map +1 -0
  107. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  109. package/dist/context/parameters/unified-parameter-api.js +65 -0
  110. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  113. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  114. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  116. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  117. package/dist/context/parameters/webgl-parameters.js +2 -0
  118. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  119. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  120. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  121. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  122. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  123. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  124. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  125. package/dist/context/polyfill/polyfill-context.js +91 -0
  126. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  127. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  128. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  129. package/dist/context/polyfill/polyfill-table.js +160 -0
  130. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  132. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  133. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  135. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  136. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  141. package/dist/context/state-tracker/track-context-state.js +169 -0
  142. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  143. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  144. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  145. package/dist/context/state-tracker/with-parameters.js +36 -0
  146. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  147. package/dist/debug/debug-uniforms.js +1 -1
  148. package/dist/debug/debug-uniforms.js.map +1 -1
  149. package/dist/debug/debug-vertex-array.js +2 -2
  150. package/dist/debug/debug-vertex-array.js.map +1 -1
  151. package/dist/device/check-glsl-extension.d.ts +4 -0
  152. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  153. package/dist/device/check-glsl-extension.js +22 -0
  154. package/dist/device/check-glsl-extension.js.map +1 -0
  155. package/dist/device/device-features.d.ts +12 -0
  156. package/dist/device/device-features.d.ts.map +1 -0
  157. package/dist/device/device-features.js +123 -0
  158. package/dist/device/device-features.js.map +1 -0
  159. package/dist/device/device-limits.d.ts +51 -0
  160. package/dist/device/device-limits.d.ts.map +1 -0
  161. package/dist/device/device-limits.js +90 -0
  162. package/dist/device/device-limits.js.map +1 -0
  163. package/dist/device/get-device-info.d.ts +4 -0
  164. package/dist/device/get-device-info.d.ts.map +1 -0
  165. package/dist/device/get-device-info.js +44 -0
  166. package/dist/device/get-device-info.js.map +1 -0
  167. package/dist/device/webgl-device.d.ts +111 -0
  168. package/dist/device/webgl-device.d.ts.map +1 -0
  169. package/dist/device/webgl-device.js +208 -0
  170. package/dist/device/webgl-device.js.map +1 -0
  171. package/dist/es5/api/device2.js +42 -0
  172. package/dist/es5/api/device2.js.map +1 -0
  173. package/dist/es5/bundle.js +1 -1
  174. package/dist/es5/bundle.js.map +1 -1
  175. package/dist/es5/classes/accessor.js +104 -74
  176. package/dist/es5/classes/accessor.js.map +1 -1
  177. package/dist/es5/classes/accessor.ts.disabled +1 -1
  178. package/dist/es5/classes/clear.js +55 -34
  179. package/dist/es5/classes/clear.js.map +1 -1
  180. package/dist/es5/classes/copy-and-blit.js +175 -156
  181. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  182. package/dist/es5/classes/framebuffer.js +647 -518
  183. package/dist/es5/classes/framebuffer.js.map +1 -1
  184. package/dist/es5/classes/program-configuration.js +138 -121
  185. package/dist/es5/classes/program-configuration.js.map +1 -1
  186. package/dist/es5/classes/program.js +368 -292
  187. package/dist/es5/classes/program.js.map +1 -1
  188. package/dist/es5/classes/query.js +172 -107
  189. package/dist/es5/classes/query.js.map +1 -1
  190. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  191. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  192. package/dist/es5/classes/renderbuffer.js +151 -98
  193. package/dist/es5/classes/renderbuffer.js.map +1 -1
  194. package/dist/es5/classes/texture-2d.js +44 -17
  195. package/dist/es5/classes/texture-2d.js.map +1 -1
  196. package/dist/es5/classes/texture-3d.js +107 -48
  197. package/dist/es5/classes/texture-3d.js.map +1 -1
  198. package/dist/es5/classes/texture-cube.js +169 -110
  199. package/dist/es5/classes/texture-cube.js.map +1 -1
  200. package/dist/es5/classes/texture-formats.js +42 -71
  201. package/dist/es5/classes/texture-formats.js.map +1 -1
  202. package/dist/es5/classes/texture.js +780 -665
  203. package/dist/es5/classes/texture.js.map +1 -1
  204. package/dist/es5/classes/transform-feedback.js +206 -150
  205. package/dist/es5/classes/transform-feedback.js.map +1 -1
  206. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  207. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  208. package/dist/es5/classes/uniforms.js +39 -80
  209. package/dist/es5/classes/uniforms.js.map +1 -1
  210. package/dist/es5/classes/vertex-array-object.js +268 -209
  211. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  212. package/dist/es5/classes/vertex-array.js +348 -303
  213. package/dist/es5/classes/vertex-array.js.map +1 -1
  214. package/dist/es5/classes/webgl-buffer.js +374 -303
  215. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  216. package/dist/es5/classes/webgl-resource.js +231 -161
  217. package/dist/es5/classes/webgl-resource.js.map +1 -1
  218. package/dist/es5/classes/webgl-shader.js +230 -134
  219. package/dist/es5/classes/webgl-shader.js.map +1 -1
  220. package/dist/es5/context/context/context-state.js +31 -0
  221. package/dist/es5/context/context/context-state.js.map +1 -0
  222. package/dist/es5/context/context/create-context.js +57 -0
  223. package/dist/es5/context/context/create-context.js.map +1 -0
  224. package/dist/es5/context/context/device-pixels.js +115 -0
  225. package/dist/es5/context/context/device-pixels.js.map +1 -0
  226. package/dist/es5/context/context/get-canvas.js +40 -0
  227. package/dist/es5/context/context/get-canvas.js.map +1 -0
  228. package/dist/es5/context/context/resize-context.js +23 -0
  229. package/dist/es5/context/context/resize-context.js.map +1 -0
  230. package/dist/es5/context/context/webgl-checks.js +54 -0
  231. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  232. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  233. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  234. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  235. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  236. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  237. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  238. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  239. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  240. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  241. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  242. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  243. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  244. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  245. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  246. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  247. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  248. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  249. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  250. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  251. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  252. package/dist/es5/debug/debug-program-configuration.js +48 -20
  253. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  254. package/dist/es5/debug/debug-uniforms.js +110 -70
  255. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  256. package/dist/es5/debug/debug-vertex-array.js +49 -54
  257. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  258. package/dist/es5/device/check-glsl-extension.js +33 -0
  259. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  260. package/dist/es5/device/device-features.js +152 -0
  261. package/dist/es5/device/device-features.js.map +1 -0
  262. package/dist/es5/device/device-limits.js +64 -0
  263. package/dist/es5/device/device-limits.js.map +1 -0
  264. package/dist/es5/device/get-device-info.js +55 -0
  265. package/dist/es5/device/get-device-info.js.map +1 -0
  266. package/dist/es5/device/webgl-device.js +279 -0
  267. package/dist/es5/device/webgl-device.js.map +1 -0
  268. package/dist/es5/index.js +179 -189
  269. package/dist/es5/index.js.map +1 -1
  270. package/dist/es5/init.js +18 -14
  271. package/dist/es5/init.js.map +1 -1
  272. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  273. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  274. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  275. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  276. package/dist/es5/webgl-utils/format-utils.js +4 -4
  277. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  278. package/dist/es5/webgl-utils/get-error.js +18 -18
  279. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  280. package/dist/es5/webgl-utils/index.js +10 -10
  281. package/dist/es5/webgl-utils/is-old-ie.js +16 -0
  282. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  283. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  284. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  285. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  286. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  287. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  288. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  289. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  290. package/dist/esm/api/device2.js +23 -0
  291. package/dist/esm/api/device2.js.map +1 -0
  292. package/dist/esm/classes/accessor.js +2 -2
  293. package/dist/esm/classes/accessor.js.map +1 -1
  294. package/dist/esm/classes/accessor.ts.disabled +1 -1
  295. package/dist/esm/classes/clear.js +7 -4
  296. package/dist/esm/classes/clear.js.map +1 -1
  297. package/dist/esm/classes/copy-and-blit.js +30 -25
  298. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  299. package/dist/esm/classes/framebuffer.js +15 -15
  300. package/dist/esm/classes/framebuffer.js.map +1 -1
  301. package/dist/esm/classes/program-configuration.js +1 -1
  302. package/dist/esm/classes/program-configuration.js.map +1 -1
  303. package/dist/esm/classes/program.js +11 -9
  304. package/dist/esm/classes/program.js.map +1 -1
  305. package/dist/esm/classes/query.js +6 -5
  306. package/dist/esm/classes/query.js.map +1 -1
  307. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  308. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  309. package/dist/esm/classes/renderbuffer.js +4 -3
  310. package/dist/esm/classes/renderbuffer.js.map +1 -1
  311. package/dist/esm/classes/texture-2d.js +5 -8
  312. package/dist/esm/classes/texture-2d.js.map +1 -1
  313. package/dist/esm/classes/texture-3d.js +15 -6
  314. package/dist/esm/classes/texture-3d.js.map +1 -1
  315. package/dist/esm/classes/texture-cube.js +3 -4
  316. package/dist/esm/classes/texture-cube.js.map +1 -1
  317. package/dist/esm/classes/texture-formats.js +1 -1
  318. package/dist/esm/classes/texture-formats.js.map +1 -1
  319. package/dist/esm/classes/texture.js +19 -18
  320. package/dist/esm/classes/texture.js.map +1 -1
  321. package/dist/esm/classes/transform-feedback.js +5 -4
  322. package/dist/esm/classes/transform-feedback.js.map +1 -1
  323. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  324. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  325. package/dist/esm/classes/uniforms.js +1 -2
  326. package/dist/esm/classes/uniforms.js.map +1 -1
  327. package/dist/esm/classes/vertex-array-object.js +8 -9
  328. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  329. package/dist/esm/classes/vertex-array.js +1 -2
  330. package/dist/esm/classes/vertex-array.js.map +1 -1
  331. package/dist/esm/classes/webgl-buffer.js +8 -5
  332. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  333. package/dist/esm/classes/webgl-resource.js +12 -8
  334. package/dist/esm/classes/webgl-resource.js.map +1 -1
  335. package/dist/esm/classes/webgl-shader.js +7 -4
  336. package/dist/esm/classes/webgl-shader.js.map +1 -1
  337. package/dist/esm/context/context/context-state.js +26 -0
  338. package/dist/esm/context/context/context-state.js.map +1 -0
  339. package/dist/esm/context/context/create-context.js +37 -0
  340. package/dist/esm/context/context/create-context.js.map +1 -0
  341. package/dist/esm/context/context/device-pixels.js +98 -0
  342. package/dist/esm/context/context/device-pixels.js.map +1 -0
  343. package/dist/esm/context/context/get-canvas.js +31 -0
  344. package/dist/esm/context/context/get-canvas.js.map +1 -0
  345. package/dist/esm/context/context/resize-context.js +15 -0
  346. package/dist/esm/context/context/resize-context.js.map +1 -0
  347. package/dist/esm/context/context/webgl-checks.js +34 -0
  348. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  349. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  350. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  351. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  352. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  353. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  354. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  355. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  356. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  357. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  358. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  359. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  360. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  361. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  362. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  363. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  364. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  365. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  366. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  367. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  368. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  369. package/dist/esm/debug/debug-uniforms.js +1 -1
  370. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  371. package/dist/esm/debug/debug-vertex-array.js +2 -2
  372. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  373. package/dist/esm/device/check-glsl-extension.js +22 -0
  374. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  375. package/dist/esm/device/device-features.js +123 -0
  376. package/dist/esm/device/device-features.js.map +1 -0
  377. package/dist/esm/device/device-limits.js +90 -0
  378. package/dist/esm/device/device-limits.js.map +1 -0
  379. package/dist/esm/device/get-device-info.js +44 -0
  380. package/dist/esm/device/get-device-info.js.map +1 -0
  381. package/dist/esm/device/webgl-device.js +208 -0
  382. package/dist/esm/device/webgl-device.js.map +1 -0
  383. package/dist/esm/index.js +22 -20
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/init.js +11 -8
  386. package/dist/esm/init.js.map +1 -1
  387. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  388. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  389. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  390. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  391. package/dist/esm/webgl-utils/format-utils.js +1 -1
  392. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  393. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  394. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  395. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  396. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  397. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  398. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  399. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  400. package/dist/index.d.ts +36 -20
  401. package/dist/index.d.ts.map +1 -1
  402. package/dist/index.js +22 -20
  403. package/dist/index.js.map +1 -1
  404. package/dist/init.d.ts.map +1 -1
  405. package/dist/init.js +11 -8
  406. package/dist/init.js.map +1 -1
  407. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  408. package/dist/webgl-utils/attribute-utils.js +1 -1
  409. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  410. package/dist/webgl-utils/constants-to-keys.js +1 -1
  411. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  412. package/dist/webgl-utils/format-utils.d.ts +2 -2
  413. package/dist/webgl-utils/format-utils.js +1 -1
  414. package/dist/webgl-utils/format-utils.js.map +1 -1
  415. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  416. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  417. package/dist/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  418. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  419. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  420. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  421. package/dist/webgl-utils/texture-utils.js +2 -2
  422. package/dist/webgl-utils/texture-utils.js.map +1 -1
  423. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  424. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  425. package/dist/webgl-utils/typed-array-utils.js +22 -18
  426. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  427. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  428. package/package.json +5 -6
  429. package/src/.DS_Store +0 -0
  430. package/src/api/device2.ts +71 -0
  431. package/src/classes/accessor.js +2 -2
  432. package/src/classes/accessor.ts.disabled +1 -1
  433. package/src/classes/clear.ts +9 -4
  434. package/src/classes/copy-and-blit.ts +49 -52
  435. package/src/classes/framebuffer.ts +38 -35
  436. package/src/classes/program-configuration.ts +6 -6
  437. package/src/classes/program.ts +21 -15
  438. package/src/classes/query.ts +6 -6
  439. package/src/classes/renderbuffer-formats.ts +1 -1
  440. package/src/classes/renderbuffer.ts +5 -4
  441. package/src/classes/texture-2d.ts +6 -11
  442. package/src/classes/texture-3d.ts +16 -11
  443. package/src/classes/texture-cube.ts +7 -7
  444. package/src/classes/texture-formats.ts +1 -1
  445. package/src/classes/texture.ts +39 -40
  446. package/src/classes/transform-feedback.ts +14 -13
  447. package/src/classes/uniform-buffer-layout.ts +1 -1
  448. package/src/classes/uniforms.ts +4 -10
  449. package/src/classes/vertex-array-object.ts +10 -14
  450. package/src/classes/vertex-array.ts +2 -3
  451. package/src/classes/webgl-buffer.ts +7 -5
  452. package/src/classes/webgl-resource.ts +20 -18
  453. package/src/classes/webgl-shader.ts +6 -4
  454. package/src/context/context/context-state.ts +39 -0
  455. package/src/context/context/create-context.ts +83 -0
  456. package/src/context/context/device-pixels.ts +147 -0
  457. package/src/context/context/get-canvas.ts +37 -0
  458. package/src/context/context/resize-context.ts +37 -0
  459. package/src/context/context/webgl-checks.ts +49 -0
  460. package/src/context/parameters/unified-parameter-api.ts +127 -0
  461. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  462. package/src/context/parameters/webgl-parameters.ts +197 -0
  463. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  464. package/src/context/polyfill/polyfill-context.ts +98 -0
  465. package/src/context/polyfill/polyfill-table.ts +162 -0
  466. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  467. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  468. package/src/context/state-tracker/track-context-state.ts +250 -0
  469. package/src/context/state-tracker/with-parameters.ts +50 -0
  470. package/src/debug/debug-uniforms.ts +1 -1
  471. package/src/debug/debug-vertex-array.ts +2 -4
  472. package/src/device/check-glsl-extension.ts +44 -0
  473. package/src/device/device-features.ts +227 -0
  474. package/src/device/device-limits.ts +150 -0
  475. package/src/device/get-device-info.ts +49 -0
  476. package/src/device/webgl-device.ts +406 -0
  477. package/src/index.ts +76 -22
  478. package/src/init.ts +12 -9
  479. package/src/types.ts +1 -1
  480. package/src/webgl-utils/attribute-utils.ts +1 -1
  481. package/src/webgl-utils/constants-to-keys.ts +1 -1
  482. package/src/webgl-utils/format-utils.ts +1 -1
  483. package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
  484. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  485. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  486. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  487. package/dist/context/gl-context.d.ts +0 -15
  488. package/dist/context/gl-context.d.ts.map +0 -1
  489. package/dist/context/gl-context.js +0 -32
  490. package/dist/context/gl-context.js.map +0 -1
  491. package/dist/context/luma-context-data.d.ts +0 -31
  492. package/dist/context/luma-context-data.d.ts.map +0 -1
  493. package/dist/context/luma-context-data.js +0 -5
  494. package/dist/context/luma-context-data.js.map +0 -1
  495. package/dist/es5/context/gl-context.js +0 -46
  496. package/dist/es5/context/gl-context.js.map +0 -1
  497. package/dist/es5/context/luma-context-data.js +0 -12
  498. package/dist/es5/context/luma-context-data.js.map +0 -1
  499. package/dist/es5/features/check-glsl-extension.js +0 -40
  500. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  501. package/dist/es5/features/check-old-ie.js +0 -15
  502. package/dist/es5/features/check-old-ie.js.map +0 -1
  503. package/dist/es5/features/features.js +0 -85
  504. package/dist/es5/features/features.js.map +0 -1
  505. package/dist/es5/features/index.js +0 -64
  506. package/dist/es5/features/index.js.map +0 -1
  507. package/dist/es5/features/limits.js +0 -72
  508. package/dist/es5/features/limits.js.map +0 -1
  509. package/dist/es5/features/webgl-features-table.js +0 -84
  510. package/dist/es5/features/webgl-features-table.js.map +0 -1
  511. package/dist/es5/features/webgl-limits-table.js +0 -172
  512. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  513. package/dist/es5/utils/array-utils-flat.js +0 -50
  514. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  515. package/dist/es5/utils/assert.js +0 -13
  516. package/dist/es5/utils/assert.js.map +0 -1
  517. package/dist/es5/utils/check-props.js +0 -50
  518. package/dist/es5/utils/check-props.js.map +0 -1
  519. package/dist/es5/utils/format-value.js +0 -57
  520. package/dist/es5/utils/format-value.js.map +0 -1
  521. package/dist/es5/utils/index.js +0 -68
  522. package/dist/es5/utils/index.js.map +0 -1
  523. package/dist/es5/utils/is-old-ie.js +0 -13
  524. package/dist/es5/utils/is-old-ie.js.map +0 -1
  525. package/dist/es5/utils/load-file.js +0 -43
  526. package/dist/es5/utils/load-file.js.map +0 -1
  527. package/dist/es5/utils/stub-methods.js +0 -25
  528. package/dist/es5/utils/stub-methods.js.map +0 -1
  529. package/dist/es5/utils/utils.js +0 -31
  530. package/dist/es5/utils/utils.js.map +0 -1
  531. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  532. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  533. package/dist/esm/context/gl-context.js +0 -32
  534. package/dist/esm/context/gl-context.js.map +0 -1
  535. package/dist/esm/context/luma-context-data.js +0 -5
  536. package/dist/esm/context/luma-context-data.js.map +0 -1
  537. package/dist/esm/features/check-glsl-extension.js +0 -27
  538. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  539. package/dist/esm/features/check-old-ie.js.map +0 -1
  540. package/dist/esm/features/features.js +0 -67
  541. package/dist/esm/features/features.js.map +0 -1
  542. package/dist/esm/features/index.js +0 -5
  543. package/dist/esm/features/index.js.map +0 -1
  544. package/dist/esm/features/limits.js +0 -55
  545. package/dist/esm/features/limits.js.map +0 -1
  546. package/dist/esm/features/webgl-features-table.js +0 -71
  547. package/dist/esm/features/webgl-features-table.js.map +0 -1
  548. package/dist/esm/features/webgl-limits-table.js +0 -161
  549. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  550. package/dist/esm/utils/array-utils-flat.js +0 -39
  551. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  552. package/dist/esm/utils/assert.js +0 -6
  553. package/dist/esm/utils/assert.js.map +0 -1
  554. package/dist/esm/utils/check-props.js +0 -38
  555. package/dist/esm/utils/check-props.js.map +0 -1
  556. package/dist/esm/utils/format-value.js +0 -50
  557. package/dist/esm/utils/format-value.js.map +0 -1
  558. package/dist/esm/utils/index.js +0 -7
  559. package/dist/esm/utils/index.js.map +0 -1
  560. package/dist/esm/utils/is-old-ie.js +0 -5
  561. package/dist/esm/utils/is-old-ie.js.map +0 -1
  562. package/dist/esm/utils/load-file.js +0 -30
  563. package/dist/esm/utils/load-file.js.map +0 -1
  564. package/dist/esm/utils/stub-methods.js +0 -16
  565. package/dist/esm/utils/stub-methods.js.map +0 -1
  566. package/dist/esm/utils/utils.js +0 -20
  567. package/dist/esm/utils/utils.js.map +0 -1
  568. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  569. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  570. package/dist/features/check-glsl-extension.d.ts +0 -2
  571. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  572. package/dist/features/check-glsl-extension.js +0 -27
  573. package/dist/features/check-glsl-extension.js.map +0 -1
  574. package/dist/features/check-old-ie.d.ts +0 -2
  575. package/dist/features/check-old-ie.d.ts.map +0 -1
  576. package/dist/features/check-old-ie.js.map +0 -1
  577. package/dist/features/features.d.ts +0 -6
  578. package/dist/features/features.d.ts.map +0 -1
  579. package/dist/features/features.js +0 -67
  580. package/dist/features/features.js.map +0 -1
  581. package/dist/features/index.d.ts +0 -5
  582. package/dist/features/index.d.ts.map +0 -1
  583. package/dist/features/index.js +0 -5
  584. package/dist/features/index.js.map +0 -1
  585. package/dist/features/limits.d.ts +0 -28
  586. package/dist/features/limits.d.ts.map +0 -1
  587. package/dist/features/limits.js +0 -55
  588. package/dist/features/limits.js.map +0 -1
  589. package/dist/features/webgl-features-table.d.ts +0 -30
  590. package/dist/features/webgl-features-table.d.ts.map +0 -1
  591. package/dist/features/webgl-features-table.js +0 -71
  592. package/dist/features/webgl-features-table.js.map +0 -1
  593. package/dist/features/webgl-limits-table.d.ts +0 -161
  594. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  595. package/dist/features/webgl-limits-table.js +0 -161
  596. package/dist/features/webgl-limits-table.js.map +0 -1
  597. package/dist/utils/array-utils-flat.d.ts +0 -9
  598. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  599. package/dist/utils/array-utils-flat.js +0 -39
  600. package/dist/utils/array-utils-flat.js.map +0 -1
  601. package/dist/utils/assert.d.ts +0 -2
  602. package/dist/utils/assert.d.ts.map +0 -1
  603. package/dist/utils/assert.js +0 -6
  604. package/dist/utils/assert.js.map +0 -1
  605. package/dist/utils/check-props.d.ts +0 -2
  606. package/dist/utils/check-props.d.ts.map +0 -1
  607. package/dist/utils/check-props.js +0 -38
  608. package/dist/utils/check-props.js.map +0 -1
  609. package/dist/utils/format-value.d.ts +0 -5
  610. package/dist/utils/format-value.d.ts.map +0 -1
  611. package/dist/utils/format-value.js +0 -50
  612. package/dist/utils/format-value.js.map +0 -1
  613. package/dist/utils/index.d.ts +0 -7
  614. package/dist/utils/index.d.ts.map +0 -1
  615. package/dist/utils/index.js +0 -7
  616. package/dist/utils/index.js.map +0 -1
  617. package/dist/utils/is-old-ie.d.ts +0 -4
  618. package/dist/utils/is-old-ie.d.ts.map +0 -1
  619. package/dist/utils/is-old-ie.js +0 -5
  620. package/dist/utils/is-old-ie.js.map +0 -1
  621. package/dist/utils/load-file.d.ts +0 -4
  622. package/dist/utils/load-file.d.ts.map +0 -1
  623. package/dist/utils/load-file.js +0 -30
  624. package/dist/utils/load-file.js.map +0 -1
  625. package/dist/utils/stub-methods.d.ts +0 -2
  626. package/dist/utils/stub-methods.d.ts.map +0 -1
  627. package/dist/utils/stub-methods.js +0 -16
  628. package/dist/utils/stub-methods.js.map +0 -1
  629. package/dist/utils/utils.d.ts +0 -15
  630. package/dist/utils/utils.d.ts.map +0 -1
  631. package/dist/utils/utils.js +0 -20
  632. package/dist/utils/utils.js.map +0 -1
  633. package/src/context/gl-context.ts +0 -31
  634. package/src/context/luma-context-data.ts +0 -27
  635. package/src/features/check-glsl-extension.ts +0 -34
  636. package/src/features/features.ts +0 -80
  637. package/src/features/index.ts +0 -5
  638. package/src/features/limits.ts +0 -66
  639. package/src/features/webgl-features-table.ts +0 -104
  640. package/src/features/webgl-limits-table.ts +0 -51
  641. package/src/utils/array-utils-flat.ts +0 -56
  642. package/src/utils/assert.ts +0 -7
  643. package/src/utils/check-props.ts +0 -68
  644. package/src/utils/format-value.ts +0 -37
  645. package/src/utils/index.ts +0 -6
  646. package/src/utils/is-old-ie.ts +0 -6
  647. package/src/utils/load-file.ts +0 -40
  648. package/src/utils/stub-methods.ts +0 -20
  649. package/src/utils/utils.ts +0 -35
  650. package/src/webgl-utils/texture-utils.d.ts +0 -11
  651. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -12,6 +12,8 @@ exports.copyToImage = copyToImage;
12
12
  exports.copyToTexture = copyToTexture;
13
13
  exports.blit = blit;
14
14
 
15
+ var _api = require("@luma.gl/api");
16
+
15
17
  var _constants = _interopRequireDefault(require("@luma.gl/constants"));
16
18
 
17
19
  var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
@@ -20,9 +22,9 @@ var _framebuffer = _interopRequireDefault(require("./framebuffer"));
20
22
 
21
23
  var _texture = _interopRequireDefault(require("./texture"));
22
24
 
23
- var _gltools = require("@luma.gl/gltools");
25
+ var _webglChecks = require("../context/context/webgl-checks");
24
26
 
25
- var _webglUtils = require("../webgl-utils");
27
+ var _withParameters = require("../context/state-tracker/with-parameters");
26
28
 
27
29
  var _typedArrayUtils = require("../webgl-utils/typed-array-utils");
28
30
 
@@ -30,31 +32,32 @@ var _formatUtils = require("../webgl-utils/format-utils");
30
32
 
31
33
  var _textureUtils = require("../webgl-utils/texture-utils");
32
34
 
33
- var _utils = require("../utils");
34
-
35
- function readPixelsToArray(source, options = {}) {
36
- const {
37
- sourceX = 0,
38
- sourceY = 0,
39
- sourceFormat = _constants.default.RGBA
40
- } = options;
41
- let {
42
- sourceAttachment = _constants.default.COLOR_ATTACHMENT0,
43
- target = null,
44
- sourceWidth,
45
- sourceHeight,
46
- sourceType
47
- } = options;
48
- const {
49
- framebuffer,
50
- deleteFramebuffer
51
- } = getFramebuffer(source);
52
- (0, _utils.assert)(framebuffer);
53
- const {
54
- gl,
55
- handle,
56
- attachments
57
- } = framebuffer;
35
+ function readPixelsToArray(source, options) {
36
+ var _ref = options || {},
37
+ _ref$sourceX = _ref.sourceX,
38
+ sourceX = _ref$sourceX === void 0 ? 0 : _ref$sourceX,
39
+ _ref$sourceY = _ref.sourceY,
40
+ sourceY = _ref$sourceY === void 0 ? 0 : _ref$sourceY,
41
+ _ref$sourceFormat = _ref.sourceFormat,
42
+ sourceFormat = _ref$sourceFormat === void 0 ? _constants.default.RGBA : _ref$sourceFormat;
43
+
44
+ var _ref2 = options || {},
45
+ _ref2$sourceAttachmen = _ref2.sourceAttachment,
46
+ sourceAttachment = _ref2$sourceAttachmen === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _ref2$sourceAttachmen,
47
+ _ref2$target = _ref2.target,
48
+ target = _ref2$target === void 0 ? null : _ref2$target,
49
+ sourceWidth = _ref2.sourceWidth,
50
+ sourceHeight = _ref2.sourceHeight,
51
+ sourceType = _ref2.sourceType;
52
+
53
+ var _getFramebuffer = getFramebuffer(source),
54
+ framebuffer = _getFramebuffer.framebuffer,
55
+ deleteFramebuffer = _getFramebuffer.deleteFramebuffer;
56
+
57
+ (0, _api.assert)(framebuffer);
58
+ var gl = framebuffer.gl,
59
+ handle = framebuffer.handle,
60
+ attachments = framebuffer.attachments;
58
61
  sourceWidth = sourceWidth || framebuffer.width;
59
62
  sourceHeight = sourceHeight || framebuffer.height;
60
63
 
@@ -62,11 +65,11 @@ function readPixelsToArray(source, options = {}) {
62
65
  sourceAttachment = _constants.default.FRONT;
63
66
  }
64
67
 
65
- (0, _utils.assert)(attachments[sourceAttachment]);
68
+ (0, _api.assert)(attachments[sourceAttachment]);
66
69
  sourceType = sourceType || attachments[sourceAttachment].type;
67
70
  target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);
68
71
  sourceType = sourceType || (0, _typedArrayUtils.getGLTypeFromTypedArray)(target);
69
- const prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
72
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
70
73
  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
71
74
  gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
72
75
 
@@ -77,32 +80,39 @@ function readPixelsToArray(source, options = {}) {
77
80
  return target;
78
81
  }
79
82
 
80
- function readPixelsToBuffer(source, {
81
- sourceX = 0,
82
- sourceY = 0,
83
- sourceFormat = _constants.default.RGBA,
84
- target = null,
85
- targetByteOffset = 0,
86
- sourceWidth,
87
- sourceHeight,
88
- sourceType
89
- }) {
90
- const {
91
- framebuffer,
92
- deleteFramebuffer
93
- } = getFramebuffer(source);
94
- (0, _utils.assert)(framebuffer);
83
+ function readPixelsToBuffer(source, options) {
84
+ var _ref3 = options || {},
85
+ _ref3$sourceX = _ref3.sourceX,
86
+ sourceX = _ref3$sourceX === void 0 ? 0 : _ref3$sourceX,
87
+ _ref3$sourceY = _ref3.sourceY,
88
+ sourceY = _ref3$sourceY === void 0 ? 0 : _ref3$sourceY,
89
+ _ref3$sourceFormat = _ref3.sourceFormat,
90
+ sourceFormat = _ref3$sourceFormat === void 0 ? _constants.default.RGBA : _ref3$sourceFormat,
91
+ _ref3$targetByteOffse = _ref3.targetByteOffset,
92
+ targetByteOffset = _ref3$targetByteOffse === void 0 ? 0 : _ref3$targetByteOffse;
93
+
94
+ var _ref4 = options || {},
95
+ target = _ref4.target,
96
+ sourceWidth = _ref4.sourceWidth,
97
+ sourceHeight = _ref4.sourceHeight,
98
+ sourceType = _ref4.sourceType;
99
+
100
+ var _getFramebuffer2 = getFramebuffer(source),
101
+ framebuffer = _getFramebuffer2.framebuffer,
102
+ deleteFramebuffer = _getFramebuffer2.deleteFramebuffer;
103
+
104
+ (0, _api.assert)(framebuffer);
95
105
  sourceWidth = sourceWidth || framebuffer.width;
96
106
  sourceHeight = sourceHeight || framebuffer.height;
97
- const gl2 = (0, _gltools.assertWebGL2Context)(framebuffer.gl);
107
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(framebuffer.gl);
98
108
  sourceType = sourceType || (target ? target.type : _constants.default.UNSIGNED_BYTE);
99
109
 
100
110
  if (!target) {
101
- const components = (0, _formatUtils.glFormatToComponents)(sourceFormat);
102
- const byteCount = (0, _formatUtils.glTypeToBytes)(sourceType);
103
- const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
111
+ var components = (0, _formatUtils.glFormatToComponents)(sourceFormat);
112
+ var byteCount = (0, _formatUtils.glTypeToBytes)(sourceType);
113
+ var byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
104
114
  target = new _webglBuffer.default(gl2, {
105
- byteLength,
115
+ byteLength: byteLength,
106
116
  accessor: {
107
117
  type: sourceType,
108
118
  size: components
@@ -113,9 +123,9 @@ function readPixelsToBuffer(source, {
113
123
  target.bind({
114
124
  target: _constants.default.PIXEL_PACK_BUFFER
115
125
  });
116
- (0, _gltools.withParameters)(gl2, {
117
- framebuffer
118
- }, () => {
126
+ (0, _withParameters.withParameters)(gl2, {
127
+ framebuffer: framebuffer
128
+ }, function () {
119
129
  gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);
120
130
  });
121
131
  target.unbind({
@@ -129,106 +139,112 @@ function readPixelsToBuffer(source, {
129
139
  return target;
130
140
  }
131
141
 
132
- function copyToDataUrl(source, {
133
- sourceAttachment = _constants.default.COLOR_ATTACHMENT0,
134
- targetMaxHeight = Number.MAX_SAFE_INTEGER
135
- } = {}) {
136
- let data = readPixelsToArray(source, {
137
- sourceAttachment
142
+ function copyToDataUrl(source) {
143
+ var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
144
+ _ref5$sourceAttachmen = _ref5.sourceAttachment,
145
+ sourceAttachment = _ref5$sourceAttachmen === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _ref5$sourceAttachmen,
146
+ _ref5$targetMaxHeight = _ref5.targetMaxHeight,
147
+ targetMaxHeight = _ref5$targetMaxHeight === void 0 ? Number.MAX_SAFE_INTEGER : _ref5$targetMaxHeight;
148
+
149
+ var data = readPixelsToArray(source, {
150
+ sourceAttachment: sourceAttachment
138
151
  });
139
- let {
140
- width,
141
- height
142
- } = source;
152
+ var width = source.width,
153
+ height = source.height;
143
154
 
144
155
  while (height > targetMaxHeight) {
145
- ({
146
- data,
147
- width,
148
- height
149
- } = (0, _webglUtils.scalePixels)({
150
- data,
151
- width,
152
- height
153
- }));
156
+ var _scalePixels = (0, _typedArrayUtils.scalePixels)({
157
+ data: data,
158
+ width: width,
159
+ height: height
160
+ });
161
+
162
+ data = _scalePixels.data;
163
+ width = _scalePixels.width;
164
+ height = _scalePixels.height;
154
165
  }
155
166
 
156
- (0, _webglUtils.flipRows)({
157
- data,
158
- width,
159
- height
167
+ (0, _typedArrayUtils.flipRows)({
168
+ data: data,
169
+ width: width,
170
+ height: height
160
171
  });
161
- const canvas = document.createElement('canvas');
172
+ var canvas = document.createElement('canvas');
162
173
  canvas.width = width;
163
174
  canvas.height = height;
164
- const context = canvas.getContext('2d');
165
- const imageData = context.createImageData(width, height);
175
+ var context = canvas.getContext('2d');
176
+ var imageData = context.createImageData(width, height);
166
177
  imageData.data.set(data);
167
178
  context.putImageData(imageData, 0, 0);
168
179
  return canvas.toDataURL();
169
180
  }
170
181
 
171
182
  function copyToImage(source, options) {
172
- const dataUrl = copyToDataUrl(source, {
183
+ var dataUrl = copyToDataUrl(source, {
173
184
  sourceAttachment: (options === null || options === void 0 ? void 0 : options.sourceAttachment) || _constants.default.COLOR_ATTACHMENT0
174
185
  });
175
- const targetImage = (options === null || options === void 0 ? void 0 : options.targetImage) || new Image();
186
+ var targetImage = (options === null || options === void 0 ? void 0 : options.targetImage) || new Image();
176
187
  targetImage.src = dataUrl;
177
188
  return targetImage;
178
189
  }
179
190
 
180
191
  function copyToTexture(source, target, options) {
181
- const {
182
- sourceX = 0,
183
- sourceY = 0,
184
- targetMipmaplevel = 0,
185
- targetInternalFormat = _constants.default.RGBA
186
- } = options;
187
- let {
188
- targetX,
189
- targetY,
190
- targetZ,
191
- width,
192
- height
193
- } = options;
194
- const {
195
- framebuffer,
196
- deleteFramebuffer
197
- } = getFramebuffer(source);
198
- (0, _utils.assert)(framebuffer);
199
- const {
200
- gl,
201
- handle
202
- } = framebuffer;
203
- const isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';
192
+ var _ref6 = options || {},
193
+ _ref6$sourceX = _ref6.sourceX,
194
+ sourceX = _ref6$sourceX === void 0 ? 0 : _ref6$sourceX,
195
+ _ref6$sourceY = _ref6.sourceY,
196
+ sourceY = _ref6$sourceY === void 0 ? 0 : _ref6$sourceY,
197
+ _ref6$targetMipmaplev = _ref6.targetMipmaplevel,
198
+ targetMipmaplevel = _ref6$targetMipmaplev === void 0 ? 0 : _ref6$targetMipmaplev,
199
+ _ref6$targetInternalF = _ref6.targetInternalFormat,
200
+ targetInternalFormat = _ref6$targetInternalF === void 0 ? _constants.default.RGBA : _ref6$targetInternalF;
201
+
202
+ var _ref7 = options || {},
203
+ targetX = _ref7.targetX,
204
+ targetY = _ref7.targetY,
205
+ targetZ = _ref7.targetZ,
206
+ width = _ref7.width,
207
+ height = _ref7.height;
208
+
209
+ var _getFramebuffer3 = getFramebuffer(source),
210
+ framebuffer = _getFramebuffer3.framebuffer,
211
+ deleteFramebuffer = _getFramebuffer3.deleteFramebuffer;
212
+
213
+ (0, _api.assert)(framebuffer);
214
+ var gl = framebuffer.gl,
215
+ handle = framebuffer.handle;
216
+ var isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';
204
217
  targetX = targetX || 0;
205
218
  targetY = targetY || 0;
206
219
  targetZ = targetZ || 0;
207
- const prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
208
- (0, _utils.assert)(target);
209
- let texture = null;
220
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
221
+ (0, _api.assert)(target);
222
+ var texture = null;
223
+ var textureTarget;
210
224
 
211
225
  if (target instanceof _texture.default) {
212
226
  texture = target;
213
227
  width = Number.isFinite(width) ? width : texture.width;
214
228
  height = Number.isFinite(height) ? height : texture.height;
215
229
  texture.bind(0);
216
- target = texture.target;
230
+ textureTarget = texture.target;
231
+ } else {
232
+ textureTarget = target;
217
233
  }
218
234
 
219
235
  if (!isSubCopy) {
220
- gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
236
+ gl.copyTexImage2D(textureTarget, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);
221
237
  } else {
222
- switch (target) {
238
+ switch (textureTarget) {
223
239
  case _constants.default.TEXTURE_2D:
224
240
  case _constants.default.TEXTURE_CUBE_MAP:
225
- gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
241
+ gl.copyTexSubImage2D(textureTarget, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);
226
242
  break;
227
243
 
228
244
  case _constants.default.TEXTURE_2D_ARRAY:
229
245
  case _constants.default.TEXTURE_3D:
230
- const gl2 = (0, _gltools.assertWebGL2Context)(gl);
231
- gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
246
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
247
+ gl2.copyTexSubImage3D(textureTarget, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);
232
248
  break;
233
249
 
234
250
  default:
@@ -249,42 +265,47 @@ function copyToTexture(source, target, options) {
249
265
  }
250
266
 
251
267
  function blit(source, target, options) {
252
- const {
253
- sourceX0 = 0,
254
- sourceY0 = 0,
255
- targetX0 = 0,
256
- targetY0 = 0,
257
- color = true,
258
- depth = false,
259
- stencil = false,
260
- filter = _constants.default.NEAREST
261
- } = options;
262
- let {
263
- sourceX1,
264
- sourceY1,
265
- targetX1,
266
- targetY1,
267
- sourceAttachment = _constants.default.COLOR_ATTACHMENT0,
268
- mask = 0
269
- } = options;
270
- const {
271
- framebuffer: srcFramebuffer,
272
- deleteFramebuffer: deleteSrcFramebuffer
273
- } = getFramebuffer(source);
274
- const {
275
- framebuffer: dstFramebuffer,
276
- deleteFramebuffer: deleteDstFramebuffer
277
- } = getFramebuffer(target);
278
- (0, _utils.assert)(srcFramebuffer);
279
- (0, _utils.assert)(dstFramebuffer);
280
- const {
281
- gl,
282
- handle,
283
- width,
284
- height,
285
- readBuffer
286
- } = dstFramebuffer;
287
- const gl2 = (0, _gltools.assertWebGL2Context)(gl);
268
+ var _options$sourceX = options.sourceX0,
269
+ sourceX0 = _options$sourceX === void 0 ? 0 : _options$sourceX,
270
+ _options$sourceY = options.sourceY0,
271
+ sourceY0 = _options$sourceY === void 0 ? 0 : _options$sourceY,
272
+ _options$targetX = options.targetX0,
273
+ targetX0 = _options$targetX === void 0 ? 0 : _options$targetX,
274
+ _options$targetY = options.targetY0,
275
+ targetY0 = _options$targetY === void 0 ? 0 : _options$targetY,
276
+ _options$color = options.color,
277
+ color = _options$color === void 0 ? true : _options$color,
278
+ _options$depth = options.depth,
279
+ depth = _options$depth === void 0 ? false : _options$depth,
280
+ _options$stencil = options.stencil,
281
+ stencil = _options$stencil === void 0 ? false : _options$stencil,
282
+ _options$filter = options.filter,
283
+ filter = _options$filter === void 0 ? _constants.default.NEAREST : _options$filter;
284
+ var sourceX1 = options.sourceX1,
285
+ sourceY1 = options.sourceY1,
286
+ targetX1 = options.targetX1,
287
+ targetY1 = options.targetY1,
288
+ _options$sourceAttach = options.sourceAttachment,
289
+ sourceAttachment = _options$sourceAttach === void 0 ? _constants.default.COLOR_ATTACHMENT0 : _options$sourceAttach,
290
+ _options$mask = options.mask,
291
+ mask = _options$mask === void 0 ? 0 : _options$mask;
292
+
293
+ var _getFramebuffer4 = getFramebuffer(source),
294
+ srcFramebuffer = _getFramebuffer4.framebuffer,
295
+ deleteSrcFramebuffer = _getFramebuffer4.deleteFramebuffer;
296
+
297
+ var _getFramebuffer5 = getFramebuffer(target),
298
+ dstFramebuffer = _getFramebuffer5.framebuffer,
299
+ deleteDstFramebuffer = _getFramebuffer5.deleteFramebuffer;
300
+
301
+ (0, _api.assert)(srcFramebuffer);
302
+ (0, _api.assert)(dstFramebuffer);
303
+ var gl = dstFramebuffer.gl,
304
+ handle = dstFramebuffer.handle,
305
+ width = dstFramebuffer.width,
306
+ height = dstFramebuffer.height,
307
+ readBuffer = dstFramebuffer.readBuffer;
308
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
288
309
 
289
310
  if (!srcFramebuffer.handle && sourceAttachment === _constants.default.COLOR_ATTACHMENT0) {
290
311
  sourceAttachment = _constants.default.FRONT;
@@ -306,17 +327,17 @@ function blit(source, target, options) {
306
327
  if (mask & (_constants.default.DEPTH_BUFFER_BIT | _constants.default.STENCIL_BUFFER_BIT)) {
307
328
  mask = _constants.default.COLOR_BUFFER_BIT;
308
329
 
309
- _gltools.log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
330
+ _api.log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();
310
331
  }
311
332
  }
312
333
 
313
- (0, _utils.assert)(mask);
334
+ (0, _api.assert)(mask);
314
335
  sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;
315
336
  sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;
316
337
  targetX1 = targetX1 === undefined ? width : targetX1;
317
338
  targetY1 = targetY1 === undefined ? height : targetY1;
318
- const prevDrawHandle = gl.bindFramebuffer(_constants.default.DRAW_FRAMEBUFFER, handle);
319
- const prevReadHandle = gl.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, srcFramebuffer.handle);
339
+ var prevDrawHandle = gl.bindFramebuffer(_constants.default.DRAW_FRAMEBUFFER, handle);
340
+ var prevReadHandle = gl.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, srcFramebuffer.handle);
320
341
  gl2.readBuffer(sourceAttachment);
321
342
  gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);
322
343
  gl2.readBuffer(readBuffer);
@@ -330,8 +351,6 @@ function blit(source, target, options) {
330
351
  if (deleteDstFramebuffer) {
331
352
  dstFramebuffer.delete();
332
353
  }
333
-
334
- return dstFramebuffer;
335
354
  }
336
355
 
337
356
  function getFramebuffer(source) {
@@ -354,10 +373,10 @@ function getPixelArray(pixelArray, type, format, width, height) {
354
373
  }
355
374
 
356
375
  type = type || _constants.default.UNSIGNED_BYTE;
357
- const ArrayType = (0, _typedArrayUtils.getTypedArrayFromGLType)(type, {
376
+ var ArrayType = (0, _typedArrayUtils.getTypedArrayFromGLType)(type, {
358
377
  clamped: false
359
378
  });
360
- const components = (0, _formatUtils.glFormatToComponents)(format);
379
+ var components = (0, _formatUtils.glFormatToComponents)(format);
361
380
  return new ArrayType(width * height * components);
362
381
  }
363
382
  //# sourceMappingURL=copy-and-blit.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/copy-and-blit.ts"],"names":["readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","GL","RGBA","sourceAttachment","COLOR_ATTACHMENT0","target","sourceWidth","sourceHeight","sourceType","framebuffer","deleteFramebuffer","getFramebuffer","gl","handle","attachments","width","height","FRONT","type","getPixelArray","prevHandle","bindFramebuffer","FRAMEBUFFER","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","UNSIGNED_BYTE","components","byteCount","byteLength","Buffer","accessor","size","bind","PIXEL_PACK_BUFFER","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","dataUrl","targetImage","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","Texture","isFinite","copyTexImage2D","TEXTURE_2D","TEXTURE_CUBE_MAP","copyTexSubImage2D","TEXTURE_2D_ARRAY","TEXTURE_3D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","NEAREST","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","log","warn","undefined","prevDrawHandle","DRAW_FRAMEBUFFER","prevReadHandle","READ_FRAMEBUFFER","blitFramebuffer","Framebuffer","pixelArray","format","ArrayType","clamped"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AA2BO,SAASA,iBAAT,CAA2BC,MAA3B,EAAmCC,OAAO,GAAG,EAA7C,EAAiD;AACtD,QAAM;AAACC,IAAAA,OAAO,GAAG,CAAX;AAAcC,IAAAA,OAAO,GAAG,CAAxB;AAA2BC,IAAAA,YAAY,GAAGC,mBAAGC;AAA7C,MAAqDL,OAA3D;AACA,MAAI;AACFM,IAAAA,gBAAgB,GAAGF,mBAAGG,iBADpB;AAEFC,IAAAA,MAAM,GAAG,IAFP;AAIFC,IAAAA,WAJE;AAKFC,IAAAA,YALE;AAMFC,IAAAA;AANE,MAOAX,OAPJ;AASA,QAAM;AAACY,IAAAA,WAAD;AAAcC,IAAAA;AAAd,MAAmCC,cAAc,CAACf,MAAD,CAAvD;AACA,qBAAOa,WAAP;AACA,QAAM;AAACG,IAAAA,EAAD;AAAKC,IAAAA,MAAL;AAAaC,IAAAA;AAAb,MAA4BL,WAAlC;AACAH,EAAAA,WAAW,GAAGA,WAAW,IAAIG,WAAW,CAACM,KAAzC;AACAR,EAAAA,YAAY,GAAGA,YAAY,IAAIE,WAAW,CAACO,MAA3C;;AAGA,MAAIb,gBAAgB,KAAKF,mBAAGG,iBAAxB,IAA6CS,MAAM,KAAK,IAA5D,EAAkE;AAChEV,IAAAA,gBAAgB,GAAGF,mBAAGgB,KAAtB;AACD;;AAED,qBAAOH,WAAW,CAACX,gBAAD,CAAlB;AAGAK,EAAAA,UAAU,GAAGA,UAAU,IAAIM,WAAW,CAACX,gBAAD,CAAX,CAA8Be,IAAzD;AAGAb,EAAAA,MAAM,GAAGc,aAAa,CAACd,MAAD,EAASG,UAAT,EAAqBR,YAArB,EAAmCM,WAAnC,EAAgDC,YAAhD,CAAtB;AAGAC,EAAAA,UAAU,GAAGA,UAAU,IAAI,8CAAwBH,MAAxB,CAA3B;AAEA,QAAMe,UAAU,GAAGR,EAAE,CAACS,eAAH,CAAmBpB,mBAAGqB,WAAtB,EAAmCT,MAAnC,CAAnB;AACAD,EAAAA,EAAE,CAACW,UAAH,CAAczB,OAAd,EAAuBC,OAAvB,EAAgCO,WAAhC,EAA6CC,YAA7C,EAA2DP,YAA3D,EAAyEQ,UAAzE,EAAqFH,MAArF;AAEAO,EAAAA,EAAE,CAACS,eAAH,CAAmBpB,mBAAGqB,WAAtB,EAAmCF,UAAU,IAAI,IAAjD;;AACA,MAAIV,iBAAJ,EAAuB;AACrBD,IAAAA,WAAW,CAACe,MAAZ;AACD;;AACD,SAAOnB,MAAP;AACD;;AAqBM,SAASoB,kBAAT,CACL7B,MADK,EAEL;AACEE,EAAAA,OAAO,GAAG,CADZ;AAEEC,EAAAA,OAAO,GAAG,CAFZ;AAGEC,EAAAA,YAAY,GAAGC,mBAAGC,IAHpB;AAIEG,EAAAA,MAAM,GAAG,IAJX;AAKEqB,EAAAA,gBAAgB,GAAG,CALrB;AAOEpB,EAAAA,WAPF;AAQEC,EAAAA,YARF;AASEC,EAAAA;AATF,CAFK,EAaL;AACA,QAAM;AAACC,IAAAA,WAAD;AAAcC,IAAAA;AAAd,MAAmCC,cAAc,CAACf,MAAD,CAAvD;AACA,qBAAOa,WAAP;AACAH,EAAAA,WAAW,GAAGA,WAAW,IAAIG,WAAW,CAACM,KAAzC;AACAR,EAAAA,YAAY,GAAGA,YAAY,IAAIE,WAAW,CAACO,MAA3C;AAGA,QAAMW,GAAG,GAAG,kCAAoBlB,WAAW,CAACG,EAAhC,CAAZ;AAGAJ,EAAAA,UAAU,GAAGA,UAAU,KAAKH,MAAM,GAAGA,MAAM,CAACa,IAAV,GAAiBjB,mBAAG2B,aAA/B,CAAvB;;AAEA,MAAI,CAACvB,MAAL,EAAa;AAEX,UAAMwB,UAAU,GAAG,uCAAqB7B,YAArB,CAAnB;AACA,UAAM8B,SAAS,GAAG,gCAActB,UAAd,CAAlB;AACA,UAAMuB,UAAU,GAAGL,gBAAgB,GAAGpB,WAAW,GAAGC,YAAd,GAA6BsB,UAA7B,GAA0CC,SAAhF;AAEAzB,IAAAA,MAAM,GAAG,IAAI2B,oBAAJ,CAAWL,GAAX,EAAgB;AAACI,MAAAA,UAAD;AAAaE,MAAAA,QAAQ,EAAE;AAACf,QAAAA,IAAI,EAAEV,UAAP;AAAmB0B,QAAAA,IAAI,EAAEL;AAAzB;AAAvB,KAAhB,CAAT;AACD;;AAEDxB,EAAAA,MAAM,CAAC8B,IAAP,CAAY;AAAC9B,IAAAA,MAAM,EAAEJ,mBAAGmC;AAAZ,GAAZ;AAEA,+BAAeT,GAAf,EAAoB;AAAClB,IAAAA;AAAD,GAApB,EAAmC,MAAM;AACvCkB,IAAAA,GAAG,CAACJ,UAAJ,CACEzB,OADF,EAEEC,OAFF,EAGEO,WAHF,EAIEC,YAJF,EAKEP,YALF,EAMEQ,UANF,EAOEkB,gBAPF;AASD,GAVD;AAWArB,EAAAA,MAAM,CAACgC,MAAP,CAAc;AAAChC,IAAAA,MAAM,EAAEJ,mBAAGmC;AAAZ,GAAd;;AACA,MAAI1B,iBAAJ,EAAuB;AACrBD,IAAAA,WAAW,CAACe,MAAZ;AACD;;AAED,SAAOnB,MAAP;AACD;;AAYM,SAASiC,aAAT,CACL1C,MADK,EAEL;AACEO,EAAAA,gBAAgB,GAAGF,mBAAGG,iBADxB;AAEEmC,EAAAA,eAAe,GAAGC,MAAM,CAACC;AAF3B,IAGI,EALC,EAML;AACA,MAAIC,IAAI,GAAG/C,iBAAiB,CAACC,MAAD,EAAS;AAACO,IAAAA;AAAD,GAAT,CAA5B;AAGA,MAAI;AAACY,IAAAA,KAAD;AAAQC,IAAAA;AAAR,MAAkBpB,MAAtB;;AACA,SAAOoB,MAAM,GAAGuB,eAAhB,EAAiC;AAC/B,KAAC;AAACG,MAAAA,IAAD;AAAO3B,MAAAA,KAAP;AAAcC,MAAAA;AAAd,QAAwB,6BAAY;AAAC0B,MAAAA,IAAD;AAAO3B,MAAAA,KAAP;AAAcC,MAAAA;AAAd,KAAZ,CAAzB;AACD;;AAGD,4BAAS;AAAC0B,IAAAA,IAAD;AAAO3B,IAAAA,KAAP;AAAcC,IAAAA;AAAd,GAAT;AAEA,QAAM2B,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAf;AACAF,EAAAA,MAAM,CAAC5B,KAAP,GAAeA,KAAf;AACA4B,EAAAA,MAAM,CAAC3B,MAAP,GAAgBA,MAAhB;AACA,QAAM8B,OAAO,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAhB;AAGA,QAAMC,SAAS,GAAGF,OAAO,CAACG,eAAR,CAAwBlC,KAAxB,EAA+BC,MAA/B,CAAlB;AACAgC,EAAAA,SAAS,CAACN,IAAV,CAAeQ,GAAf,CAAmBR,IAAnB;AACAI,EAAAA,OAAO,CAACK,YAAR,CAAqBH,SAArB,EAAgC,CAAhC,EAAmC,CAAnC;AAEA,SAAOL,MAAM,CAACS,SAAP,EAAP;AACD;;AAIM,SAASC,WAAT,CACLzD,MADK,EAELC,OAFK,EAMS;AACd,QAAMyD,OAAO,GAAGhB,aAAa,CAAC1C,MAAD,EAAS;AAACO,IAAAA,gBAAgB,EAAE,CAAAN,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEM,gBAAT,KAA6BF,mBAAGG;AAAnD,GAAT,CAA7B;AACA,QAAMmD,WAAW,GAAG,CAAA1D,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAE0D,WAAT,KAAwB,IAAIC,KAAJ,EAA5C;AACAD,EAAAA,WAAW,CAACE,GAAZ,GAAkBH,OAAlB;AAEA,SAAOC,WAAP;AACD;;AAMM,SAASG,aAAT,CACL9D,MADK,EAELS,MAFK,EAGLR,OAHK,EAgBI;AACT,QAAM;AACJC,IAAAA,OAAO,GAAG,CADN;AAEJC,IAAAA,OAAO,GAAG,CAFN;AAIJ4D,IAAAA,iBAAiB,GAAG,CAJhB;AAKJC,IAAAA,oBAAoB,GAAG3D,mBAAGC;AALtB,MAMFL,OANJ;AAOA,MAAI;AACFgE,IAAAA,OADE;AAEFC,IAAAA,OAFE;AAGFC,IAAAA,OAHE;AAIFhD,IAAAA,KAJE;AAKFC,IAAAA;AALE,MAMAnB,OANJ;AAQA,QAAM;AAACY,IAAAA,WAAD;AAAcC,IAAAA;AAAd,MAAmCC,cAAc,CAACf,MAAD,CAAvD;AACA,qBAAOa,WAAP;AACA,QAAM;AAACG,IAAAA,EAAD;AAAKC,IAAAA;AAAL,MAAeJ,WAArB;AACA,QAAMuD,SAAS,GACb,OAAOH,OAAP,KAAmB,WAAnB,IACA,OAAOC,OAAP,KAAmB,WADnB,IAEA,OAAOC,OAAP,KAAmB,WAHrB;AAIAF,EAAAA,OAAO,GAAGA,OAAO,IAAI,CAArB;AACAC,EAAAA,OAAO,GAAGA,OAAO,IAAI,CAArB;AACAC,EAAAA,OAAO,GAAGA,OAAO,IAAI,CAArB;AACA,QAAM3C,UAAU,GAAGR,EAAE,CAACS,eAAH,CAAmBpB,mBAAGqB,WAAtB,EAAmCT,MAAnC,CAAnB;AAGA,qBAAOR,MAAP;AACA,MAAI4D,OAAO,GAAG,IAAd;;AACA,MAAI5D,MAAM,YAAY6D,gBAAtB,EAA+B;AAC7BD,IAAAA,OAAO,GAAG5D,MAAV;AACAU,IAAAA,KAAK,GAAGyB,MAAM,CAAC2B,QAAP,CAAgBpD,KAAhB,IAAyBA,KAAzB,GAAiCkD,OAAO,CAAClD,KAAjD;AACAC,IAAAA,MAAM,GAAGwB,MAAM,CAAC2B,QAAP,CAAgBnD,MAAhB,IAA0BA,MAA1B,GAAmCiD,OAAO,CAACjD,MAApD;AACAiD,IAAAA,OAAO,CAAC9B,IAAR,CAAa,CAAb;AACA9B,IAAAA,MAAM,GAAG4D,OAAO,CAAC5D,MAAjB;AACD;;AAED,MAAI,CAAC2D,SAAL,EAAgB;AACdpD,IAAAA,EAAE,CAACwD,cAAH,CACE/D,MADF,EAEEsD,iBAFF,EAGEC,oBAHF,EAIE9D,OAJF,EAKEC,OALF,EAMEgB,KANF,EAOEC,MAPF,EAQE,CARF;AAUD,GAXD,MAWO;AACL,YAAQX,MAAR;AACE,WAAKJ,mBAAGoE,UAAR;AACA,WAAKpE,mBAAGqE,gBAAR;AACE1D,QAAAA,EAAE,CAAC2D,iBAAH,CACElE,MADF,EAEEsD,iBAFF,EAGEE,OAHF,EAIEC,OAJF,EAKEhE,OALF,EAMEC,OANF,EAOEgB,KAPF,EAQEC,MARF;AAUA;;AACF,WAAKf,mBAAGuE,gBAAR;AACA,WAAKvE,mBAAGwE,UAAR;AACE,cAAM9C,GAAG,GAAG,kCAAoBf,EAApB,CAAZ;AACAe,QAAAA,GAAG,CAAC+C,iBAAJ,CACErE,MADF,EAEEsD,iBAFF,EAGEE,OAHF,EAIEC,OAJF,EAKEC,OALF,EAMEjE,OANF,EAOEC,OAPF,EAQEgB,KARF,EASEC,MATF;AAWA;;AACF;AA7BF;AA+BD;;AACD,MAAIiD,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAAC5B,MAAR;AACD;;AAEDzB,EAAAA,EAAE,CAACS,eAAH,CAAmBpB,mBAAGqB,WAAtB,EAAmCF,UAAU,IAAI,IAAjD;;AACA,MAAIV,iBAAJ,EAAuB;AACrBD,IAAAA,WAAW,CAACe,MAAZ;AACD;;AACD,SAAOyC,OAAP;AACD;;AAUM,SAASU,IAAT,CACL/E,MADK,EAELS,MAFK,EAGLR,OAHK,EAmBC;AACN,QAAM;AACJ+E,IAAAA,QAAQ,GAAG,CADP;AAEJC,IAAAA,QAAQ,GAAG,CAFP;AAGJC,IAAAA,QAAQ,GAAG,CAHP;AAIJC,IAAAA,QAAQ,GAAG,CAJP;AAKJC,IAAAA,KAAK,GAAG,IALJ;AAMJC,IAAAA,KAAK,GAAG,KANJ;AAOJC,IAAAA,OAAO,GAAG,KAPN;AAQJC,IAAAA,MAAM,GAAGlF,mBAAGmF;AARR,MASFvF,OATJ;AAWA,MAAI;AACFwF,IAAAA,QADE;AAEFC,IAAAA,QAFE;AAGFC,IAAAA,QAHE;AAIFC,IAAAA,QAJE;AAKFrF,IAAAA,gBAAgB,GAAGF,mBAAGG,iBALpB;AAMFqF,IAAAA,IAAI,GAAG;AANL,MAOA5F,OAPJ;AASA,QAAM;AAACY,IAAAA,WAAW,EAAEiF,cAAd;AAA8BhF,IAAAA,iBAAiB,EAAEiF;AAAjD,MACJhF,cAAc,CAACf,MAAD,CADhB;AAEA,QAAM;AAACa,IAAAA,WAAW,EAAEmF,cAAd;AAA8BlF,IAAAA,iBAAiB,EAAEmF;AAAjD,MACJlF,cAAc,CAACN,MAAD,CADhB;AAGA,qBAAOqF,cAAP;AACA,qBAAOE,cAAP;AAEA,QAAM;AAAChF,IAAAA,EAAD;AAAKC,IAAAA,MAAL;AAAaE,IAAAA,KAAb;AAAoBC,IAAAA,MAApB;AAA4B8E,IAAAA;AAA5B,MAA0CF,cAAhD;AACA,QAAMjE,GAAG,GAAG,kCAAoBf,EAApB,CAAZ;;AAEA,MAAI,CAAC8E,cAAc,CAAC7E,MAAhB,IAA0BV,gBAAgB,KAAKF,mBAAGG,iBAAtD,EAAyE;AACvED,IAAAA,gBAAgB,GAAGF,mBAAGgB,KAAtB;AACD;;AAED,MAAI+D,KAAJ,EAAW;AACTS,IAAAA,IAAI,IAAIxF,mBAAG8F,gBAAX;AACD;;AACD,MAAId,KAAJ,EAAW;AACTQ,IAAAA,IAAI,IAAIxF,mBAAG+F,gBAAX;AACD;;AACD,MAAId,OAAJ,EAAa;AACXO,IAAAA,IAAI,IAAIxF,mBAAGgG,kBAAX;AACD;;AAED,MAAIN,oBAAoB,IAAIE,oBAA5B,EAAkD;AAGhD,QAAIJ,IAAI,IAAIxF,mBAAG+F,gBAAH,GAAsB/F,mBAAGgG,kBAA7B,CAAR,EAA0D;AACxDR,MAAAA,IAAI,GAAGxF,mBAAG8F,gBAAV;;AACAG,mBAAIC,IAAJ,CAAS,6EAAT;AACD;AACF;;AACD,qBAAOV,IAAP;AAEAJ,EAAAA,QAAQ,GAAGA,QAAQ,KAAKe,SAAb,GAAyBV,cAAc,CAAC3E,KAAxC,GAAgDsE,QAA3D;AACAC,EAAAA,QAAQ,GAAGA,QAAQ,KAAKc,SAAb,GAAyBV,cAAc,CAAC1E,MAAxC,GAAiDsE,QAA5D;AACAC,EAAAA,QAAQ,GAAGA,QAAQ,KAAKa,SAAb,GAAyBrF,KAAzB,GAAiCwE,QAA5C;AACAC,EAAAA,QAAQ,GAAGA,QAAQ,KAAKY,SAAb,GAAyBpF,MAAzB,GAAkCwE,QAA7C;AAEA,QAAMa,cAAc,GAAGzF,EAAE,CAACS,eAAH,CAAmBpB,mBAAGqG,gBAAtB,EAAwCzF,MAAxC,CAAvB;AACA,QAAM0F,cAAc,GAAG3F,EAAE,CAACS,eAAH,CAAmBpB,mBAAGuG,gBAAtB,EAAwCd,cAAc,CAAC7E,MAAvD,CAAvB;AACAc,EAAAA,GAAG,CAACmE,UAAJ,CAAe3F,gBAAf;AACAwB,EAAAA,GAAG,CAAC8E,eAAJ,CACE7B,QADF,EAEEC,QAFF,EAGEQ,QAHF,EAIEC,QAJF,EAKER,QALF,EAMEC,QANF,EAOEQ,QAPF,EAQEC,QARF,EASEC,IATF,EAUEN,MAVF;AAYAxD,EAAAA,GAAG,CAACmE,UAAJ,CAAeA,UAAf;AAEAnE,EAAAA,GAAG,CAACN,eAAJ,CAAoBpB,mBAAGuG,gBAAvB,EAAyCD,cAAc,IAAI,IAA3D;AAEA5E,EAAAA,GAAG,CAACN,eAAJ,CAAoBpB,mBAAGqG,gBAAvB,EAAyCD,cAAc,IAAI,IAA3D;;AACA,MAAIV,oBAAJ,EAA0B;AACxBD,IAAAA,cAAc,CAAClE,MAAf;AACD;;AACD,MAAIqE,oBAAJ,EAA0B;AACxBD,IAAAA,cAAc,CAACpE,MAAf;AACD;;AAED,SAAOoE,cAAP;AACD;;AAID,SAASjF,cAAT,CAAwBf,MAAxB,EAAgC;AAC9B,MAAI,EAAEA,MAAM,YAAY8G,oBAApB,CAAJ,EAAsC;AACpC,WAAO;AAACjG,MAAAA,WAAW,EAAE,iCAAcb,MAAd,CAAd;AAAqCc,MAAAA,iBAAiB,EAAE;AAAxD,KAAP;AACD;;AACD,SAAO;AAACD,IAAAA,WAAW,EAAEb,MAAd;AAAsBc,IAAAA,iBAAiB,EAAE;AAAzC,GAAP;AACD;;AAED,SAASS,aAAT,CAAuBwF,UAAvB,EAAmCzF,IAAnC,EAAyC0F,MAAzC,EAAiD7F,KAAjD,EAAwDC,MAAxD,EAAgE;AAC9D,MAAI2F,UAAJ,EAAgB;AACd,WAAOA,UAAP;AACD;;AAEDzF,EAAAA,IAAI,GAAGA,IAAI,IAAIjB,mBAAG2B,aAAlB;AACA,QAAMiF,SAAS,GAAG,8CAAwB3F,IAAxB,EAA8B;AAAC4F,IAAAA,OAAO,EAAE;AAAV,GAA9B,CAAlB;AACA,QAAMjF,UAAU,GAAG,uCAAqB+E,MAArB,CAAnB;AAEA,SAAO,IAAIC,SAAJ,CAAc9F,KAAK,GAAGC,MAAR,GAAiBa,UAA/B,CAAP;AACD","sourcesContent":["// @ts-nocheck\nimport GL from '@luma.gl/constants';\nimport Buffer from './webgl-buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-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';\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(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Uint8Array | Uint16Array | Float32Array;\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: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Buffer;\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 // @ts-expect-error TODO why is WebGL2 context not compatible\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n // @ts-expect-error TODO why is WebGL2 context not compatible\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 options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetMaxHeight?: number;\n }\n): string;\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\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source: Framebuffer | Texture,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetImage?: typeof Image;\n }\n): typeof Image {\n const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});\n const targetImage = options?.targetImage || new Image();\n targetImage.src = dataUrl;\n // @ts-expect-error\n return targetImage;\n}\n\n/**\n * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source: Framebuffer | Texture,\n target: Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n\n targetX?: number;\n targetY?: number;\n targetZ?: number;\n targetMipmaplevel?: number;\n targetInternalFormat?: number;\n\n width?: number; // defaults to target width\n height?: number; // defaults to target height\n }\n): Texture {\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/**\n * Copies a rectangle of pixels between Framebuffer or Texture objects\n * @note NOTE: WEBLG2 only\n * @param source\n * @param target\n * @param options\n */\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n options: {\n sourceAttachment?: number;\n sourceX0?: number;\n sourceY0?: number;\n sourceX1?: number;\n sourceY1?: number;\n targetX0?: number;\n targetY0?: number;\n targetX1?: number;\n targetY1?: number;\n color?: boolean;\n depth?: boolean;\n stencil?: boolean;\n mask?: number;\n filter?: number;\n }\n): void {\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} =\n getFramebuffer(source);\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} =\n getFramebuffer(target);\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,"sources":["../../../src/classes/copy-and-blit.ts"],"names":["readPixelsToArray","source","options","sourceX","sourceY","sourceFormat","GL","RGBA","sourceAttachment","COLOR_ATTACHMENT0","target","sourceWidth","sourceHeight","sourceType","getFramebuffer","framebuffer","deleteFramebuffer","gl","handle","attachments","width","height","FRONT","type","getPixelArray","prevHandle","bindFramebuffer","FRAMEBUFFER","readPixels","delete","readPixelsToBuffer","targetByteOffset","gl2","UNSIGNED_BYTE","components","byteCount","byteLength","Buffer","accessor","size","bind","PIXEL_PACK_BUFFER","unbind","copyToDataUrl","targetMaxHeight","Number","MAX_SAFE_INTEGER","data","canvas","document","createElement","context","getContext","imageData","createImageData","set","putImageData","toDataURL","copyToImage","dataUrl","targetImage","Image","src","copyToTexture","targetMipmaplevel","targetInternalFormat","targetX","targetY","targetZ","isSubCopy","texture","textureTarget","Texture","isFinite","copyTexImage2D","TEXTURE_2D","TEXTURE_CUBE_MAP","copyTexSubImage2D","TEXTURE_2D_ARRAY","TEXTURE_3D","copyTexSubImage3D","blit","sourceX0","sourceY0","targetX0","targetY0","color","depth","stencil","filter","NEAREST","sourceX1","sourceY1","targetX1","targetY1","mask","srcFramebuffer","deleteSrcFramebuffer","dstFramebuffer","deleteDstFramebuffer","readBuffer","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","STENCIL_BUFFER_BIT","log","warn","undefined","prevDrawHandle","DRAW_FRAMEBUFFER","prevReadHandle","READ_FRAMEBUFFER","blitFramebuffer","Framebuffer","pixelArray","format","ArrayType","clamped"],"mappings":"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","sourcesContent":["import {log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport Buffer from './webgl-buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\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';\n\n/**\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 * newly allocated by this method unless provided by app.\n * @note Slow requires roundtrip to GPU\n *\n * @param source\n * @param options\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n */\nexport function readPixelsToArray(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n sourceAttachment?: number;\n target?: Uint8Array | Uint16Array | Float32Array;\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Uint8Array | Uint16Array | Float32Array {\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-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n/**\n * Copies data from a Framebuffer or a Texture object into a Buffer object.\n * NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n * @param source\n * @param options\n */\nexport function readPixelsToBuffer(\n source: Framebuffer | Texture,\n options?: {\n sourceX?: number;\n sourceY?: number;\n sourceFormat?: number;\n target?: Buffer; // A new Buffer object is created when not provided.\n targetByteOffset?: number; // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth?: number;\n sourceHeight?: number;\n sourceType?: number;\n }\n): Buffer {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA,\n targetByteOffset = 0\n } = options || {};\n // following parameters are auto deduced if not provided\n let {\n target,\n sourceWidth,\n sourceHeight,\n sourceType,\n } = options || {}\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronous 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 // @ts-expect-error\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 options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetMaxHeight?: number;\n }\n): string;\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\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source: Framebuffer | Texture,\n options?: {\n sourceAttachment?: number; // TODO - support gl.readBuffer\n targetImage?: typeof Image;\n }\n): typeof Image {\n const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});\n const targetImage = options?.targetImage || new Image();\n // @ts-expect-error\n targetImage.src = dataUrl;\n // @ts-expect-error\n return targetImage;\n}\n\n/**\n * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(\n source: Framebuffer | Texture,\n target: Texture | GL,\n options?: {\n sourceX?: number;\n sourceY?: number;\n\n targetX?: number;\n targetY?: number;\n targetZ?: number;\n targetMipmaplevel?: number;\n targetInternalFormat?: number;\n\n width?: number; // defaults to target width\n height?: number; // defaults to target height\n }\n): Texture {\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 let textureTarget: GL;\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 textureTarget = texture.target;\n } else {\n textureTarget = target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n textureTarget,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (textureTarget) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n textureTarget,\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 textureTarget,\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-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n/**\n * Copies a rectangle of pixels between Framebuffer or Texture objects\n * @note NOTE: WEBLG2 only\n * @param source\n * @param target\n * @param options\n */\n// eslint-disable-next-line max-statements, complexity\nexport function blit(\n source,\n target,\n options: {\n sourceAttachment?: number;\n sourceX0?: number;\n sourceY0?: number;\n sourceX1?: number;\n sourceY1?: number;\n targetX0?: number;\n targetY0?: number;\n targetX1?: number;\n targetY1?: number;\n color?: boolean;\n depth?: boolean;\n stencil?: boolean;\n mask?: number;\n filter?: number;\n }\n): void {\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} =\n getFramebuffer(source);\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} =\n getFramebuffer(target);\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\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-expect-error\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-expect-error\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"}