@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.50

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 (531) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +309 -346
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +17 -23
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +31 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +87 -143
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +51 -82
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +60 -88
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +99 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +11 -21
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +21 -34
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +137 -256
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  111. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  113. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  114. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  115. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  116. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  117. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  118. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  119. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  120. package/dist/adapter/webgl-canvas-context.js +10 -23
  121. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  122. package/dist/adapter/webgl-device.d.ts +76 -41
  123. package/dist/adapter/webgl-device.d.ts.map +1 -1
  124. package/dist/adapter/webgl-device.js +219 -129
  125. package/dist/adapter/webgl-device.js.map +1 -1
  126. package/dist/classic/accessor.d.ts +3 -3
  127. package/dist/classic/accessor.d.ts.map +1 -1
  128. package/dist/classic/accessor.js +26 -52
  129. package/dist/classic/accessor.js.map +1 -1
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +191 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +37 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +17 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +18 -39
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +15 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +18 -41
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +8555 -0
  202. package/dist/index.cjs +6602 -0
  203. package/dist/index.d.ts +26 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +49 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +144 -41
  213. package/src/adapter/converters/sampler-parameters.ts +103 -41
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +268 -195
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +14 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +67 -62
  231. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  235. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  237. package/src/adapter/resources/webgl-sampler.ts +16 -10
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +138 -99
  240. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  241. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  242. package/src/adapter/webgl-canvas-context.ts +16 -14
  243. package/src/adapter/webgl-device.ts +328 -79
  244. package/src/classic/accessor.ts +8 -18
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +311 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +21 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +14 -11
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +70 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js +0 -81
  273. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  274. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  275. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  276. package/dist/adapter/helpers/uniforms.js +0 -99
  277. package/dist/adapter/helpers/uniforms.js.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  279. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  280. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  281. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  282. package/dist/bundle.d.ts +0 -2
  283. package/dist/bundle.d.ts.map +0 -1
  284. package/dist/bundle.js +0 -5
  285. package/dist/bundle.js.map +0 -1
  286. package/dist/classic/buffer.d.ts +0 -95
  287. package/dist/classic/buffer.d.ts.map +0 -1
  288. package/dist/classic/buffer.js +0 -384
  289. package/dist/classic/buffer.js.map +0 -1
  290. package/dist/context/context/context-state.d.ts +0 -18
  291. package/dist/context/context/context-state.d.ts.map +0 -1
  292. package/dist/context/context/context-state.js +0 -26
  293. package/dist/context/context/context-state.js.map +0 -1
  294. package/dist/context/context/create-context.d.ts +0 -41
  295. package/dist/context/context/create-context.d.ts.map +0 -1
  296. package/dist/context/context/create-context.js +0 -49
  297. package/dist/context/context/create-context.js.map +0 -1
  298. package/dist/context/context/device-pixels.d.ts +0 -25
  299. package/dist/context/context/device-pixels.d.ts.map +0 -1
  300. package/dist/context/context/device-pixels.js +0 -98
  301. package/dist/context/context/device-pixels.js.map +0 -1
  302. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  303. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  305. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  307. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  309. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  310. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  311. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  313. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  315. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  316. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  317. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  319. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  320. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  321. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  322. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  323. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  324. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  325. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  326. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  327. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  329. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  330. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  331. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  333. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  334. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  335. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  336. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  337. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  339. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  341. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  343. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  345. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  347. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  349. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  351. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  353. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  355. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  357. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  358. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  359. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  360. package/dist/es5/adapter/webgl-device.js +0 -399
  361. package/dist/es5/adapter/webgl-device.js.map +0 -1
  362. package/dist/es5/bundle.js +0 -7
  363. package/dist/es5/bundle.js.map +0 -1
  364. package/dist/es5/classic/accessor.js +0 -181
  365. package/dist/es5/classic/accessor.js.map +0 -1
  366. package/dist/es5/classic/buffer.js +0 -470
  367. package/dist/es5/classic/buffer.js.map +0 -1
  368. package/dist/es5/classic/typed-array-utils.js +0 -126
  369. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  370. package/dist/es5/context/context/context-state.js +0 -31
  371. package/dist/es5/context/context/context-state.js.map +0 -1
  372. package/dist/es5/context/context/create-context.js +0 -69
  373. package/dist/es5/context/context/create-context.js.map +0 -1
  374. package/dist/es5/context/context/device-pixels.js +0 -115
  375. package/dist/es5/context/context/device-pixels.js.map +0 -1
  376. package/dist/es5/context/context/webgl-checks.js +0 -54
  377. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  378. package/dist/es5/context/debug/spector.js +0 -133
  379. package/dist/es5/context/debug/spector.js.map +0 -1
  380. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  381. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  382. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  383. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  384. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  385. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  386. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  387. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  389. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  390. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  391. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  392. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  393. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  394. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  395. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  396. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  397. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  398. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  399. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  400. package/dist/es5/index.js +0 -276
  401. package/dist/es5/index.js.map +0 -1
  402. package/dist/es5/init.js +0 -10
  403. package/dist/es5/init.js.map +0 -1
  404. package/dist/es5/types/webgl.js +0 -6
  405. package/dist/es5/types/webgl.js.map +0 -1
  406. package/dist/es5/types.js +0 -2
  407. package/dist/es5/types.js.map +0 -1
  408. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  409. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  411. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  413. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  414. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  415. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  416. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  417. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  419. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  421. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  422. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  423. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  424. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  425. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  426. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  427. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  428. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  429. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  430. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  431. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  432. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  433. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  434. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  435. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  436. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  437. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  439. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  440. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  441. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  442. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  443. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  445. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  447. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  449. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  451. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  453. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  455. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  457. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  459. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  461. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  463. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  464. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  465. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  466. package/dist/esm/adapter/webgl-device.js +0 -280
  467. package/dist/esm/adapter/webgl-device.js.map +0 -1
  468. package/dist/esm/bundle.js +0 -5
  469. package/dist/esm/bundle.js.map +0 -1
  470. package/dist/esm/classic/accessor.js +0 -144
  471. package/dist/esm/classic/accessor.js.map +0 -1
  472. package/dist/esm/classic/buffer.js +0 -384
  473. package/dist/esm/classic/buffer.js.map +0 -1
  474. package/dist/esm/classic/typed-array-utils.js +0 -112
  475. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  476. package/dist/esm/context/context/context-state.js +0 -26
  477. package/dist/esm/context/context/context-state.js.map +0 -1
  478. package/dist/esm/context/context/create-context.js +0 -49
  479. package/dist/esm/context/context/create-context.js.map +0 -1
  480. package/dist/esm/context/context/device-pixels.js +0 -98
  481. package/dist/esm/context/context/device-pixels.js.map +0 -1
  482. package/dist/esm/context/context/webgl-checks.js +0 -34
  483. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  484. package/dist/esm/context/debug/spector.js +0 -76
  485. package/dist/esm/context/debug/spector.js.map +0 -1
  486. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  487. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  488. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  489. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  490. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  491. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  492. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  493. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  495. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  496. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  497. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  498. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  499. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  500. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  501. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  502. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  503. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  504. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  505. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  506. package/dist/esm/index.js +0 -27
  507. package/dist/esm/index.js.map +0 -1
  508. package/dist/esm/init.js +0 -4
  509. package/dist/esm/init.js.map +0 -1
  510. package/dist/esm/types/webgl.js +0 -2
  511. package/dist/esm/types/webgl.js.map +0 -1
  512. package/dist/esm/types.js +0 -2
  513. package/dist/esm/types.js.map +0 -1
  514. package/dist/init.d.ts +0 -2
  515. package/dist/init.d.ts.map +0 -1
  516. package/dist/init.js +0 -4
  517. package/dist/init.js.map +0 -1
  518. package/dist/types/webgl.d.ts +0 -145
  519. package/dist/types/webgl.d.ts.map +0 -1
  520. package/dist/types/webgl.js +0 -2
  521. package/dist/types/webgl.js.map +0 -1
  522. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  523. package/src/adapter/helpers/attribute-utils.ts +0 -61
  524. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  525. package/src/bundle.ts +0 -4
  526. package/src/classic/buffer.ts +0 -474
  527. package/src/context/context/context-state.ts +0 -41
  528. package/src/context/context/create-context.ts +0 -110
  529. package/src/context/context/device-pixels.ts +0 -152
  530. package/src/init.ts +0 -4
  531. package/src/types/webgl.ts +0 -284
@@ -1,12 +1,20 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  import type {
2
5
  CopyBufferToBufferOptions,
3
6
  CopyBufferToTextureOptions,
4
7
  CopyTextureToBufferOptions,
5
8
  CopyTextureToTextureOptions
6
- } from '@luma.gl/api';
7
- import GL from '@luma.gl/constants';
8
- import WebGLDevice from '../webgl-device';
9
- import WEBGLBuffer from './webgl-buffer';
9
+ } from '@luma.gl/core';
10
+ import {CommandBuffer, Texture, Framebuffer} from '@luma.gl/core';
11
+ import {GL} from '@luma.gl/constants';
12
+
13
+ import {WebGLDevice} from '../webgl-device';
14
+ import {WEBGLBuffer} from './webgl-buffer';
15
+ import {WEBGLTexture} from './webgl-texture';
16
+ import {WEBGLFramebuffer} from './webgl-framebuffer';
17
+ import {getWebGLTextureParameters} from '../converters/texture-formats';
10
18
 
11
19
  function cast<T>(value: unknown): T {
12
20
  return value as T;
@@ -38,25 +46,31 @@ type Command =
38
46
  | CopyTextureToBufferCommand
39
47
  | CopyTextureToTextureCommand;
40
48
 
41
- export default class CommandBuffer {
49
+ export class WEBGLCommandBuffer extends CommandBuffer {
50
+ device: WebGLDevice;
42
51
  commands: Command[] = [];
43
- }
44
52
 
45
- export function submitCommands(device: WebGLDevice, commands: Command[] = []) {
46
- for (const command of commands) {
47
- switch (command.name) {
48
- case 'copy-buffer-to-buffer':
49
- _copyBufferToBuffer(device, command.options);
50
- break;
51
- case 'copy-buffer-to-texture':
52
- _copyBufferToTexture(device, command.options);
53
- break;
54
- case 'copy-texture-to-buffer':
55
- _copyTextureToBuffer(device, command.options);
56
- break;
57
- case 'copy-texture-to-texture':
58
- _copyTextureToTexture(device, command.options);
59
- break;
53
+ constructor(device: WebGLDevice) {
54
+ super(device, {});
55
+ this.device = device;
56
+ }
57
+
58
+ submitCommands(commands: Command[] = this.commands) {
59
+ for (const command of commands) {
60
+ switch (command.name) {
61
+ case 'copy-buffer-to-buffer':
62
+ _copyBufferToBuffer(this.device, command.options);
63
+ break;
64
+ case 'copy-buffer-to-texture':
65
+ _copyBufferToTexture(this.device, command.options);
66
+ break;
67
+ case 'copy-texture-to-buffer':
68
+ _copyTextureToBuffer(this.device, command.options);
69
+ break;
70
+ case 'copy-texture-to-texture':
71
+ _copyTextureToTexture(this.device, command.options);
72
+ break;
73
+ }
60
74
  }
61
75
  }
62
76
  }
@@ -65,7 +79,7 @@ function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOpt
65
79
  const source = cast<WEBGLBuffer>(options.source);
66
80
  const destination = cast<WEBGLBuffer>(options.destination);
67
81
 
68
- const {gl2} = device;
82
+ const gl2 = device.assertWebGL2();
69
83
  if (gl2) {
70
84
  // In WebGL2 we can perform the copy on the GPU
71
85
  // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
@@ -87,8 +101,296 @@ function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOpt
87
101
  }
88
102
  }
89
103
 
90
- function _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {}
104
+ /**
105
+ * Copies data from a Buffer object into a Texture object
106
+ * NOTE: doesn't wait for copy to be complete
107
+ */
108
+ function _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {
109
+ throw new Error('Not implemented');
110
+ }
111
+
112
+ /**
113
+ * Copies data from a Texture object into a Buffer object.
114
+ * NOTE: doesn't wait for copy to be complete
115
+ */
116
+ function _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {
117
+ const {
118
+ /** Texture to copy to/from. */
119
+ source,
120
+ /** Mip-map level of the texture to copy to/from. (Default 0) */
121
+ mipLevel = 0,
122
+ /** Defines which aspects of the texture to copy to/from. */
123
+ aspect = 'all',
124
+
125
+ /** Width to copy */
126
+ width = options.source.width,
127
+ /** Height to copy */
128
+ height = options.source.height,
129
+ depthOrArrayLayers = 0,
130
+ /** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
131
+ origin = [0, 0],
132
+
133
+ /** Destination buffer */
134
+ destination,
135
+ /** Offset, in bytes, from the beginning of the buffer to the start of the image data (default 0) */
136
+ byteOffset = 0,
137
+ /**
138
+ * The stride, in bytes, between the beginning of each block row and the subsequent block row.
139
+ * Required if there are multiple block rows (i.e. the copy height or depth is more than one block).
140
+ */
141
+ bytesPerRow,
142
+ /**
143
+ * Number of block rows per single image of the texture.
144
+ * rowsPerImage &times; bytesPerRow is the stride, in bytes, between the beginning of each image of data and the subsequent image.
145
+ * Required if there are multiple images (i.e. the copy depth is more than one).
146
+ */
147
+ rowsPerImage
148
+ } = options;
149
+
150
+ // TODO - Not possible to read just stencil or depth part in WebGL?
151
+ if (aspect !== 'all') {
152
+ throw new Error('not supported');
153
+ }
154
+
155
+ // TODO - mipLevels are set when attaching texture to framebuffer
156
+ if (mipLevel !== 0 || depthOrArrayLayers !== 0 || bytesPerRow || rowsPerImage) {
157
+ throw new Error('not implemented');
158
+ }
159
+
160
+ // Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
161
+ const gl2 = device.assertWebGL2();
162
+
163
+ const {framebuffer, destroyFramebuffer} = getFramebuffer(source);
164
+ try {
165
+ const webglBuffer = destination as WEBGLBuffer;
166
+ const sourceWidth = width || framebuffer.width;
167
+ const sourceHeight = height || framebuffer.height;
168
+ const sourceParams = getWebGLTextureParameters(framebuffer.texture.format, true);
169
+ const sourceFormat = sourceParams.dataFormat;
170
+ const sourceType = sourceParams.type;
171
+
172
+ // if (!target) {
173
+ // // Create new buffer with enough size
174
+ // const components = glFormatToComponents(sourceFormat);
175
+ // const byteCount = glTypeToBytes(sourceType);
176
+ // const byteLength = byteOffset + sourceWidth * sourceHeight * components * byteCount;
177
+ // target = device.createBuffer({byteLength});
178
+ // }
179
+
180
+ gl2.bindBuffer(GL.PIXEL_PACK_BUFFER, webglBuffer.handle);
181
+ gl2.bindFramebuffer(GL.FRAMEBUFFER, framebuffer.handle);
182
+
183
+ gl2.readPixels(
184
+ origin[0],
185
+ origin[1],
186
+ sourceWidth,
187
+ sourceHeight,
188
+ sourceFormat,
189
+ sourceType,
190
+ byteOffset
191
+ );
192
+ } finally {
193
+ gl2.bindBuffer(GL.PIXEL_PACK_BUFFER, null);
194
+ gl2.bindFramebuffer(GL.FRAMEBUFFER, null);
195
+
196
+ if (destroyFramebuffer) {
197
+ framebuffer.destroy();
198
+ }
199
+ }
200
+ }
201
+
202
+ /**
203
+ * Copies data from a Framebuffer or a Texture object into a Buffer object.
204
+ * NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transfer.
205
+ export function readPixelsToBuffer(
206
+ source: Framebuffer | Texture,
207
+ options?: {
208
+ sourceX?: number;
209
+ sourceY?: number;
210
+ sourceFormat?: number;
211
+ target?: Buffer; // A new Buffer object is created when not provided.
212
+ targetByteOffset?: number; // byte offset in buffer object
213
+ // following parameters are auto deduced if not provided
214
+ sourceWidth?: number;
215
+ sourceHeight?: number;
216
+ sourceType?: number;
217
+ }
218
+ ): Buffer
219
+ */
220
+
221
+ /**
222
+ * Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)
223
+ */
224
+ // eslint-disable-next-line complexity, max-statements
225
+ function _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {
226
+ const {
227
+ /** Texture to copy to/from. */
228
+ source,
229
+ /** Mip-map level of the texture to copy to/from. (Default 0) */
230
+ // mipLevel = 0,
231
+ /** Defines which aspects of the texture to copy to/from. */
232
+ // aspect = 'all',
233
+ /** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
234
+ origin = [0, 0],
235
+
236
+ /** Texture to copy to/from. */
237
+ destination,
238
+ /** Mip-map level of the texture to copy to/from. (Default 0) */
239
+ // destinationMipLevel = options.mipLevel,
240
+ /** Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. */
241
+ // destinationOrigin = [0, 0],
242
+ /** Defines which aspects of the texture to copy to/from. */
243
+ // destinationAspect = options.aspect,
244
+
245
+ } = options;
246
+
247
+ let {
248
+ width = options.destination.width,
249
+ height = options.destination.width,
250
+ // depthOrArrayLayers = 0
251
+ } = options;
252
+
253
+ const destinationMipmaplevel = 0;
254
+ const destinationInternalFormat = GL.RGBA;
255
+
256
+ const {framebuffer, destroyFramebuffer} = getFramebuffer(source);
257
+ const [sourceX, sourceY] = origin;
258
+
259
+ const isSubCopy = false;
260
+ // typeof destinationX !== 'undefined' ||
261
+ // typeof destinationY !== 'undefined' ||
262
+ // typeof destinationZ !== 'undefined';
263
+
264
+ // destinationX = destinationX || 0;
265
+ // destinationY = destinationY || 0;
266
+ // destinationZ = destinationZ || 0;
267
+ device.gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer.handle);
268
+ // TODO - support gl.readBuffer (WebGL2 only)
269
+ // const prevBuffer = gl.readBuffer(attachment);
270
+
271
+ let texture = null;
272
+ let textureTarget: GL;
273
+ if (destination instanceof WEBGLTexture) {
274
+ texture = destination;
275
+ width = Number.isFinite(width) ? width : texture.width;
276
+ height = Number.isFinite(height) ? height : texture.height;
277
+ texture.bind(0);
278
+ textureTarget = texture.destination;
279
+ } else {
280
+ throw new Error('whoops');
281
+ // textureTarget = destination;
282
+ }
283
+
284
+ if (!isSubCopy) {
285
+ device.gl.copyTexImage2D(
286
+ textureTarget,
287
+ destinationMipmaplevel,
288
+ destinationInternalFormat,
289
+ sourceX,
290
+ sourceY,
291
+ width,
292
+ height,
293
+ 0 /* border must be 0 */
294
+ );
295
+ } else {
296
+ // switch (textureTarget) {
297
+ // case GL.TEXTURE_2D:
298
+ // case GL.TEXTURE_CUBE_MAP:
299
+ // device.gl.copyTexSubImage2D(
300
+ // textureTarget,
301
+ // destinationMipmaplevel,
302
+ // destinationX,
303
+ // destinationY,
304
+ // sourceX,
305
+ // sourceY,
306
+ // width,
307
+ // height
308
+ // );
309
+ // break;
310
+ // case GL.TEXTURE_2D_ARRAY:
311
+ // case GL.TEXTURE_3D:
312
+ // const gl2 = device.assertWebGL2();
313
+ // gl2.copyTexSubImage3D(
314
+ // textureTarget,
315
+ // destinationMipmaplevel,
316
+ // destinationX,
317
+ // destinationY,
318
+ // destinationZ,
319
+ // sourceX,
320
+ // sourceY,
321
+ // width,
322
+ // height
323
+ // );
324
+ // break;
325
+ // default:
326
+ // }
327
+ }
328
+ if (texture) {
329
+ texture.unbind();
330
+ }
331
+ // ts-expect-error
332
+ // device.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
333
+ if (destroyFramebuffer) {
334
+ framebuffer.destroy();
335
+ }
336
+ return texture;
337
+ }
338
+
339
+ // Returns number of components in a specific readPixels WebGL format
340
+ export function glFormatToComponents(format): 1 | 2 | 3 | 4 {
341
+ switch (format) {
342
+ case GL.ALPHA:
343
+ case GL.R32F:
344
+ case GL.RED:
345
+ return 1;
346
+ case GL.RG32F:
347
+ case GL.RG:
348
+ return 2;
349
+ case GL.RGB:
350
+ case GL.RGB32F:
351
+ return 3;
352
+ case GL.RGBA:
353
+ case GL.RGBA32F:
354
+ return 4;
355
+ // TODO: Add support for additional WebGL2 formats
356
+ default:
357
+ throw new Error('GLFormat');
358
+ }
359
+ }
91
360
 
92
- function _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {}
361
+ // Return byte count for given readPixels WebGL type
362
+ export function glTypeToBytes(type: GL): 1 | 2 | 4 {
363
+ switch (type) {
364
+ case GL.UNSIGNED_BYTE:
365
+ return 1;
366
+ case GL.UNSIGNED_SHORT_5_6_5:
367
+ case GL.UNSIGNED_SHORT_4_4_4_4:
368
+ case GL.UNSIGNED_SHORT_5_5_5_1:
369
+ return 2;
370
+ case GL.FLOAT:
371
+ return 4;
372
+ // TODO: Add support for additional WebGL2 types
373
+ default:
374
+ throw new Error('GLType');
375
+ }
376
+ }
377
+
378
+ // Helper methods
93
379
 
94
- function _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {}
380
+ function getFramebuffer(source: Texture | Framebuffer): {
381
+ framebuffer: WEBGLFramebuffer;
382
+ destroyFramebuffer: boolean;
383
+ } {
384
+ if (source instanceof Texture) {
385
+ const {width, height, id} = source;
386
+ const framebuffer = source.device.createFramebuffer({
387
+ id: `framebuffer-for-${id}`,
388
+ width,
389
+ height,
390
+ colorAttachments: [source]
391
+ }) as unknown as WEBGLFramebuffer;
392
+
393
+ return {framebuffer, destroyFramebuffer: true};
394
+ }
395
+ return {framebuffer: source as unknown as WEBGLFramebuffer, destroyFramebuffer: false};
396
+ }
@@ -1,25 +1,33 @@
1
- import {CommandEncoder, CommandEncoderProps} from '@luma.gl/api';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {CommandEncoder, CommandEncoderProps} from '@luma.gl/core';
2
5
  import type {
3
6
  CopyBufferToBufferOptions,
4
7
  CopyBufferToTextureOptions,
5
8
  CopyTextureToBufferOptions,
6
9
  CopyTextureToTextureOptions
7
- } from '@luma.gl/api';
10
+ } from '@luma.gl/core';
8
11
 
9
- import CommandBuffer from './webgl-command-buffer';
10
- import WebGLDevice from '../webgl-device';
12
+ import {WEBGLCommandBuffer} from './webgl-command-buffer';
13
+ import {WebGLDevice} from '../webgl-device';
11
14
 
12
- export default class WEBGLCommandEncoder extends CommandEncoder {
15
+ export class WEBGLCommandEncoder extends CommandEncoder {
13
16
  readonly device: WebGLDevice;
14
17
 
15
- readonly commandBuffer = new CommandBuffer();
18
+ readonly commandBuffer: WEBGLCommandBuffer;
16
19
 
17
20
  constructor(device: WebGLDevice, props: CommandEncoderProps) {
18
- super(props);
21
+ super(device, props);
19
22
  this.device = device;
23
+ this.commandBuffer = new WEBGLCommandBuffer(device);
20
24
  }
21
25
 
22
- destroy() {}
26
+ override destroy(): void {}
27
+
28
+ override finish(): void {
29
+ this.commandBuffer.submitCommands();
30
+ }
23
31
 
24
32
  // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
25
33
  // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
@@ -41,10 +49,10 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
41
49
  this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
42
50
  }
43
51
 
44
- pushDebugGroup(groupLabel: string): void {}
45
- popDebugGroup() {}
52
+ override pushDebugGroup(groupLabel: string): void {}
53
+ override popDebugGroup() {}
46
54
 
47
- insertDebugMarker(markerLabel: string): void {}
55
+ override insertDebugMarker(markerLabel: string): void {}
48
56
 
49
57
  // writeTimestamp(querySet: Query, queryIndex: number): void {}
50
58
 
@@ -55,4 +63,4 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
55
63
  // destination: Buffer,
56
64
  // destinationOffset?: number;
57
65
  // }): void;
58
- };
66
+ }
@@ -1,5 +1,8 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  /*
2
- export default class WEBGLExternalTexture extends WEBGLTexture {
5
+ export class WEBGLExternalTexture extends WEBGLTexture {
3
6
  readonly device: WebGLDevice;
4
7
  readonly gl: WebGLRenderingContext;
5
8
  readonly gl2: WebGL2RenderingContext | null;
@@ -53,7 +56,7 @@ export default class WEBGLExternalTexture extends WEBGLTexture {
53
56
  constructor(device: Device | WebGLRenderingContext, props: TextureProps) {
54
57
  super(WebGLDevice.attach(device), {id: uid('texture'), ...props});
55
58
 
56
- this.target = getWebGLTextureTarget(props);
59
+ this.glTarget = getWebGLTextureTarget(props);
57
60
 
58
61
  this.device = WebGLDevice.attach(device);
59
62
  this.gl = this.device.gl;