@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.40

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