@luma.gl/webgl 9.0.0-alpha.14 → 9.0.0-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/dist/adapter/converters/device-parameters.js +199 -136
  2. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  3. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +62 -176
  5. package/dist/adapter/converters/sampler-parameters.js +149 -206
  6. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  7. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  8. package/dist/adapter/converters/texture-formats.js +437 -890
  9. package/dist/adapter/converters/vertex-formats.js +15 -33
  10. package/dist/adapter/device-helpers/device-features.js +119 -100
  11. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  12. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  13. package/dist/adapter/device-helpers/device-limits.js +88 -86
  14. package/dist/adapter/device-helpers/get-device-info.js +42 -43
  15. package/dist/adapter/device-helpers/is-old-ie.js +9 -6
  16. package/dist/adapter/helpers/attribute-utils.js +50 -74
  17. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  18. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  19. package/dist/adapter/helpers/get-shader-info.js +27 -0
  20. package/dist/adapter/helpers/get-shader-layout.js +307 -296
  21. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  22. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  23. package/dist/adapter/helpers/parse-shader-compiler-log.js +32 -33
  24. package/dist/adapter/helpers/set-uniform.js +67 -110
  25. package/dist/adapter/helpers/uniforms.js +80 -85
  26. package/dist/adapter/objects/constants-to-keys.js +33 -33
  27. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  28. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
  30. package/dist/adapter/objects/webgl-resource.js +213 -205
  31. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  32. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  33. package/dist/adapter/objects/webgl-vertex-array-object.js +74 -76
  34. package/dist/adapter/resources/webgl-buffer.js +150 -147
  35. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  36. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgl-command-buffer.js +39 -55
  38. package/dist/adapter/resources/webgl-command-encoder.js +25 -49
  39. package/dist/adapter/resources/webgl-external-texture.js +91 -1
  40. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  41. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-framebuffer.js +231 -258
  43. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  44. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-render-pass.js +8 -18
  46. package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
  47. package/dist/adapter/resources/webgl-sampler.js +42 -47
  48. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  49. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgl-shader.js +58 -68
  51. package/dist/adapter/resources/webgl-texture.d.ts +5 -5
  52. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgl-texture.js +661 -815
  54. package/dist/adapter/webgl-canvas-context.js +55 -49
  55. package/dist/adapter/webgl-device.js +288 -338
  56. package/dist/bundle.js +1 -2
  57. package/dist/classic/accessor.js +120 -127
  58. package/dist/classic/buffer.d.ts +1 -1
  59. package/dist/classic/buffer.d.ts.map +1 -1
  60. package/dist/classic/buffer.js +325 -356
  61. package/dist/classic/typed-array-utils.d.ts +1 -1
  62. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  63. package/dist/classic/typed-array-utils.js +91 -101
  64. package/dist/context/context/create-browser-context.d.ts +1 -2
  65. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  66. package/dist/context/context/create-browser-context.js +61 -52
  67. package/dist/context/context/create-headless-context.d.ts +1 -1
  68. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  69. package/dist/context/context/create-headless-context.js +26 -33
  70. package/dist/context/context/webgl-checks.js +25 -20
  71. package/dist/context/debug/spector.d.ts +1 -2
  72. package/dist/context/debug/spector.d.ts.map +1 -1
  73. package/dist/context/debug/spector.js +53 -62
  74. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  75. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  76. package/dist/context/debug/webgl-developer-tools.js +106 -93
  77. package/dist/context/parameters/unified-parameter-api.js +91 -55
  78. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  79. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  80. package/dist/context/parameters/webgl-parameter-tables.js +462 -423
  81. package/dist/context/polyfill/context-data.js +16 -12
  82. package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
  83. package/dist/context/polyfill/polyfill-context.js +75 -80
  84. package/dist/context/polyfill/polyfill-table.js +133 -139
  85. package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
  86. package/dist/context/state-tracker/deep-array-equal.js +16 -18
  87. package/dist/context/state-tracker/track-context-state.js +183 -161
  88. package/dist/context/state-tracker/with-parameters.js +43 -35
  89. package/dist/dist.min.js +1 -0
  90. package/dist/es5/adapter/converters/device-parameters.js +3 -38
  91. package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
  92. package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
  93. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
  94. package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
  95. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
  96. package/dist/es5/adapter/converters/texture-formats.js +9 -81
  97. package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
  98. package/dist/es5/adapter/converters/vertex-formats.js +0 -12
  99. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
  100. package/dist/es5/adapter/device-helpers/device-features.js +6 -40
  101. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  102. package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
  103. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  104. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
  105. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  106. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
  107. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
  108. package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
  109. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
  110. package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
  111. package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
  112. package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
  113. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
  114. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
  115. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  116. package/dist/es5/adapter/helpers/set-uniform.js +0 -33
  117. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
  118. package/dist/es5/adapter/helpers/uniforms.js +13 -37
  119. package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
  120. package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
  121. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
  122. package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
  123. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
  124. package/dist/es5/adapter/objects/webgl-resource.js +6 -60
  125. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
  126. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
  127. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  128. package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
  129. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
  130. package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
  131. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
  132. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
  133. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
  134. package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
  135. package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
  136. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
  137. package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
  138. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
  139. package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
  140. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
  141. package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
  142. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
  143. package/dist/es5/adapter/resources/webgl-shader.js +13 -52
  144. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
  145. package/dist/es5/adapter/resources/webgl-texture.js +137 -291
  146. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
  147. package/dist/es5/adapter/webgl-canvas-context.js +0 -24
  148. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  149. package/dist/es5/adapter/webgl-device.js +40 -127
  150. package/dist/es5/adapter/webgl-device.js.map +1 -1
  151. package/dist/es5/bundle.js +0 -1
  152. package/dist/es5/bundle.js.map +1 -1
  153. package/dist/es5/classic/accessor.js +1 -31
  154. package/dist/es5/classic/accessor.js.map +1 -1
  155. package/dist/es5/classic/buffer.js +32 -102
  156. package/dist/es5/classic/buffer.js.map +1 -1
  157. package/dist/es5/classic/typed-array-utils.js +10 -37
  158. package/dist/es5/classic/typed-array-utils.js.map +1 -1
  159. package/dist/es5/context/context/create-browser-context.js +4 -21
  160. package/dist/es5/context/context/create-browser-context.js.map +1 -1
  161. package/dist/es5/context/context/create-headless-context.js +8 -21
  162. package/dist/es5/context/context/create-headless-context.js.map +1 -1
  163. package/dist/es5/context/context/webgl-checks.js +4 -14
  164. package/dist/es5/context/context/webgl-checks.js.map +1 -1
  165. package/dist/es5/context/debug/spector.js +20 -54
  166. package/dist/es5/context/debug/spector.js.map +1 -1
  167. package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
  168. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
  169. package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
  170. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  171. package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
  172. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/es5/context/polyfill/context-data.js +0 -3
  174. package/dist/es5/context/polyfill/context-data.js.map +1 -1
  175. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
  176. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/es5/context/polyfill/polyfill-context.js +8 -33
  178. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  179. package/dist/es5/context/polyfill/polyfill-table.js +3 -27
  180. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
  182. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  183. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
  184. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  185. package/dist/es5/context/state-tracker/track-context-state.js +10 -53
  186. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  187. package/dist/es5/context/state-tracker/with-parameters.js +1 -13
  188. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  189. package/dist/es5/index.js +72 -99
  190. package/dist/es5/index.js.map +1 -1
  191. package/dist/es5/init.js +0 -3
  192. package/dist/es5/init.js.map +1 -1
  193. package/dist/es5/types/webgl.js +0 -1
  194. package/dist/es5/types/webgl.js.map +1 -1
  195. package/dist/es5/types.js.map +1 -1
  196. package/dist/esm/adapter/converters/device-parameters.js +0 -20
  197. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  198. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
  199. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
  200. package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
  201. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
  202. package/dist/esm/adapter/converters/texture-formats.js +8 -52
  203. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  204. package/dist/esm/adapter/converters/vertex-formats.js +0 -9
  205. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  206. package/dist/esm/adapter/device-helpers/device-features.js +2 -19
  207. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  208. package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
  209. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  210. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
  211. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  212. package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
  213. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
  214. package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
  215. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
  216. package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
  217. package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
  218. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
  219. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  220. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
  221. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  222. package/dist/esm/adapter/helpers/set-uniform.js +0 -30
  223. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  224. package/dist/esm/adapter/helpers/uniforms.js +0 -10
  225. package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
  226. package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
  227. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  228. package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
  229. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  230. package/dist/esm/adapter/objects/webgl-resource.js +10 -57
  231. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  232. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
  233. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  234. package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
  235. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  236. package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
  237. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
  238. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
  239. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  240. package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
  241. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
  242. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  243. package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
  244. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
  245. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
  246. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  247. package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
  248. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  249. package/dist/esm/adapter/resources/webgl-shader.js +2 -16
  250. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  251. package/dist/esm/adapter/resources/webgl-texture.js +36 -154
  252. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  253. package/dist/esm/adapter/webgl-canvas-context.js +0 -14
  254. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  255. package/dist/esm/adapter/webgl-device.js +19 -89
  256. package/dist/esm/adapter/webgl-device.js.map +1 -1
  257. package/dist/esm/bundle.js +0 -1
  258. package/dist/esm/bundle.js.map +1 -1
  259. package/dist/esm/classic/accessor.js +10 -34
  260. package/dist/esm/classic/accessor.js.map +1 -1
  261. package/dist/esm/classic/buffer.js +15 -71
  262. package/dist/esm/classic/buffer.js.map +1 -1
  263. package/dist/esm/classic/typed-array-utils.js +0 -20
  264. package/dist/esm/classic/typed-array-utils.js.map +1 -1
  265. package/dist/esm/context/context/create-browser-context.js +6 -14
  266. package/dist/esm/context/context/create-browser-context.js.map +1 -1
  267. package/dist/esm/context/context/create-headless-context.js +2 -6
  268. package/dist/esm/context/context/create-headless-context.js.map +1 -1
  269. package/dist/esm/context/context/webgl-checks.js +0 -3
  270. package/dist/esm/context/context/webgl-checks.js.map +1 -1
  271. package/dist/esm/context/debug/spector.js +2 -14
  272. package/dist/esm/context/debug/spector.js.map +1 -1
  273. package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
  274. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  275. package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
  276. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  277. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
  278. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  279. package/dist/esm/context/polyfill/context-data.js +0 -2
  280. package/dist/esm/context/polyfill/context-data.js.map +1 -1
  281. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
  282. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  283. package/dist/esm/context/polyfill/polyfill-context.js +14 -21
  284. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  285. package/dist/esm/context/polyfill/polyfill-table.js +0 -23
  286. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  287. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
  288. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  289. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
  290. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  291. package/dist/esm/context/state-tracker/track-context-state.js +11 -45
  292. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  293. package/dist/esm/context/state-tracker/with-parameters.js +0 -6
  294. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  295. package/dist/esm/index.js.map +1 -1
  296. package/dist/esm/init.js.map +1 -1
  297. package/dist/esm/types/webgl.js.map +1 -1
  298. package/dist/esm/types.js.map +1 -1
  299. package/dist/index.js +39 -25
  300. package/dist/init.js +1 -2
  301. package/dist/types/webgl.d.ts +20 -20
  302. package/dist/types/webgl.d.ts.map +1 -1
  303. package/dist/types/webgl.js +0 -1
  304. package/dist/types.d.ts +1 -1
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +0 -1
  307. package/package.json +8 -8
  308. package/src/adapter/helpers/get-shader-info.ts +37 -0
  309. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  310. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  311. package/src/adapter/resources/webgl-shader.ts +2 -2
  312. package/src/adapter/webgl-device.ts +1 -1
  313. package/src/context/debug/webgl-developer-tools.ts +0 -1
  314. package/src/types/webgl.ts +4 -4
  315. package/dist/adapter/converters/device-parameters.js.map +0 -1
  316. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  317. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  318. package/dist/adapter/converters/texture-formats.js.map +0 -1
  319. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  320. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  321. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  323. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  324. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  326. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  327. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/adapter/helpers/uniforms.js.map +0 -1
  329. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  330. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  331. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  333. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  334. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  335. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  336. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  338. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  339. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  341. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  343. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  344. package/dist/adapter/webgl-device.js.map +0 -1
  345. package/dist/bundle.js.map +0 -1
  346. package/dist/classic/accessor.js.map +0 -1
  347. package/dist/classic/buffer.js.map +0 -1
  348. package/dist/classic/typed-array-utils.js.map +0 -1
  349. package/dist/context/context/create-browser-context.js.map +0 -1
  350. package/dist/context/context/create-headless-context.js.map +0 -1
  351. package/dist/context/context/webgl-checks.js.map +0 -1
  352. package/dist/context/debug/spector.js.map +0 -1
  353. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  354. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  355. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  356. package/dist/context/polyfill/context-data.js.map +0 -1
  357. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  358. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  359. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  360. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  361. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  362. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  363. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/init.js.map +0 -1
  366. package/dist/types/webgl.js.map +0 -1
  367. package/dist/types.js.map +0 -1
@@ -1,84 +1,82 @@
1
1
  import { assert } from '@luma.gl/api';
2
2
  import GL from '@luma.gl/constants';
3
3
  import { getBrowser } from '@probe.gl/env';
4
- import WebGLResource from './webgl-resource';
4
+ import WebGLResource from './webgl-resource.js';
5
5
  const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
6
+ /** VertexArrayObject wrapper */
6
7
  export default class WEBGLVertexArrayObject extends WebGLResource {
7
- get [Symbol.toStringTag]() {
8
- return 'BaseVertexArrayObject';
9
- }
10
-
11
- constructor(device, props) {
12
- super(device, props, {});
13
- }
14
-
15
- _createHandle() {
16
- return this.gl2.createVertexArray();
17
- }
18
-
19
- _deleteHandle() {
20
- this.gl2.deleteVertexArray(this.handle);
21
- return [this.elements];
22
- }
23
-
24
- _bindHandle(handle) {
25
- this.gl2.bindVertexArray(handle);
26
- }
27
-
28
- setElementBuffer(elementBuffer = null, opts = {}) {
29
- assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
30
- this.bind(() => {
31
- this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
32
- });
33
- return this;
34
- }
35
-
36
- setBuffer(location, buffer, accessor) {
37
- if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
38
- return this.setElementBuffer(buffer, accessor);
8
+ get [Symbol.toStringTag]() {
9
+ return 'BaseVertexArrayObject';
39
10
  }
40
-
41
- const {
42
- size,
43
- type,
44
- stride,
45
- offset,
46
- normalized,
47
- integer,
48
- divisor
49
- } = accessor;
50
- const {
51
- gl,
52
- gl2
53
- } = this;
54
- location = Number(location);
55
- this.bind(() => {
56
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
57
-
58
- if (integer) {
59
- this.device.assertWebGL2();
60
- gl2.vertexAttribIPointer(location, size, type, stride, offset);
61
- } else {
62
- gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
63
- }
64
-
65
- gl.enableVertexAttribArray(location);
66
- gl2.vertexAttribDivisor(location, divisor || 0);
67
- });
68
- return this;
69
- }
70
-
71
- enable(location, enable = true) {
72
- const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
73
- const canDisableAttribute = canDisableAttributeZero || location !== 0;
74
-
75
- if (enable || canDisableAttribute) {
76
- location = Number(location);
77
- this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));
11
+ constructor(device, props) {
12
+ // @ts-expect-error
13
+ super(device, props, {});
14
+ }
15
+ _createHandle() {
16
+ return this.gl2.createVertexArray();
17
+ }
18
+ _deleteHandle() {
19
+ this.gl2.deleteVertexArray(this.handle);
20
+ // @ts-expect-error
21
+ return [this.elements];
22
+ // return [this.elements, ...this.buffers];
23
+ }
24
+ _bindHandle(handle) {
25
+ this.gl2.bindVertexArray(handle);
26
+ }
27
+ // Set (bind) an elements buffer, for indexed rendering.
28
+ // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
29
+ setElementBuffer(elementBuffer = null, opts = {}) {
30
+ assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
31
+ // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
32
+ this.bind(() => {
33
+ this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
34
+ });
35
+ return this;
36
+ }
37
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
38
+ setBuffer(location, buffer, accessor) {
39
+ // Check target
40
+ if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
41
+ return this.setElementBuffer(buffer, accessor);
42
+ }
43
+ const { size, type, stride, offset, normalized, integer, divisor } = accessor;
44
+ const { gl, gl2 } = this;
45
+ location = Number(location);
46
+ this.bind(() => {
47
+ // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
48
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
49
+ // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
50
+ if (integer) {
51
+ this.device.assertWebGL2();
52
+ gl2.vertexAttribIPointer(location, size, type, stride, offset);
53
+ }
54
+ else {
55
+ // Attaches ARRAY_BUFFER with specified buffer format to location
56
+ gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
57
+ }
58
+ gl.enableVertexAttribArray(location);
59
+ gl2.vertexAttribDivisor(location, divisor || 0);
60
+ // NOTE We don't unbind buffer here, typically another buffer will be bound just after
61
+ });
62
+ return this;
63
+ }
64
+ /**
65
+ * Enabling an attribute location makes it reference the currently bound buffer
66
+ * Disabling an attribute location makes it reference the global constant value
67
+ * TODO - handle single values for size 1 attributes?
68
+ * TODO - convert classic arrays based on known type?
69
+ */
70
+ enable(location, enable = true) {
71
+ // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
72
+ const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
73
+ const canDisableAttribute = canDisableAttributeZero || location !== 0;
74
+ if (enable || canDisableAttribute) {
75
+ location = Number(location);
76
+ this.bind(() => enable
77
+ ? this.gl.enableVertexAttribArray(location)
78
+ : this.gl.disableVertexAttribArray(location));
79
+ }
80
+ return this;
78
81
  }
79
-
80
- return this;
81
- }
82
-
83
82
  }
84
- //# sourceMappingURL=webgl-vertex-array-object.js.map
@@ -1,162 +1,165 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { Buffer, assert } from '@luma.gl/api';
3
2
  import GL from '@luma.gl/constants';
4
3
  const DEBUG_DATA_LENGTH = 10;
4
+ /** WebGL Buffer interface */
5
5
  export default class WEBGLBuffer extends Buffer {
6
- constructor(device, props = {}) {
7
- super(device, props);
8
-
9
- _defineProperty(this, "device", void 0);
10
-
11
- _defineProperty(this, "gl", void 0);
12
-
13
- _defineProperty(this, "gl2", void 0);
14
-
15
- _defineProperty(this, "handle", void 0);
16
-
17
- _defineProperty(this, "target", void 0);
18
-
19
- _defineProperty(this, "byteLength", void 0);
20
-
21
- _defineProperty(this, "bytesUsed", void 0);
22
-
23
- _defineProperty(this, "debugData", null);
24
-
25
- _defineProperty(this, "webglUsage", void 0);
26
-
27
- this.device = device;
28
- this.gl = this.device.gl;
29
- this.gl2 = this.device.gl2;
30
- const handle = typeof props === 'object' ? props.handle : undefined;
31
- this.handle = handle || this.gl.createBuffer();
32
- this.handle.__SPECTOR_Metadata = { ...this.props,
33
- data: typeof this.props.data
34
- };
35
- this.target = this.props.target || getWebGLTarget(this.props.usage);
36
- this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
37
- this.debugData = null;
38
-
39
- if (props.data) {
40
- this._initWithData(props.data, props.byteOffset, props.byteLength);
41
- } else {
42
- this._initWithByteLength(props.byteLength || 0);
6
+ // accessor: {};
7
+ constructor(device, props = {}) {
8
+ super(device, props);
9
+ this.debugData = null;
10
+ this.device = device;
11
+ this.gl = this.device.gl;
12
+ this.gl2 = this.device.gl2;
13
+ const handle = typeof props === 'object' ? props.handle : undefined;
14
+ this.handle = handle || this.gl.createBuffer();
15
+ // @ts-expect-error Add metadata for spector
16
+ this.handle.__SPECTOR_Metadata = { ...this.props, data: typeof this.props.data }; // {name: this.props.id};
17
+ // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
18
+ // otherwise buffer type will lock to generic (non-element) buffer
19
+ // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
20
+ // @ts-expect-error Hack - Checking for subclass prop
21
+ this.target = this.props.target || getWebGLTarget(this.props.usage);
22
+ // @ts-expect-error Hack - Checking for subclass prop
23
+ this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
24
+ this.debugData = null;
25
+ // Set data: (re)initializes the buffer
26
+ if (props.data) {
27
+ this._initWithData(props.data, props.byteOffset, props.byteLength);
28
+ }
29
+ else {
30
+ this._initWithByteLength(props.byteLength || 0);
31
+ }
32
+ // Deprecated: Merge main props and accessor
33
+ // this.accessor = {...props.accessor};
34
+ // Object.seal(this);
43
35
  }
44
- }
45
-
46
- _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
47
- assert(ArrayBuffer.isView(data));
48
-
49
- const target = this._getWriteTarget();
50
-
51
- this.gl.bindBuffer(target, this.handle);
52
- this.gl.bufferData(target, byteLength, this.webglUsage);
53
- this.gl.bufferSubData(target, byteOffset, data);
54
- this.gl.bindBuffer(target, null);
55
- this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
56
- this.bytesUsed = byteLength;
57
- this.byteLength = byteLength;
58
- this.trackAllocatedMemory(byteLength);
59
- return this;
60
- }
61
-
62
- _initWithByteLength(byteLength) {
63
- assert(byteLength >= 0);
64
- let data = byteLength;
65
-
66
- if (byteLength === 0) {
67
- data = new Float32Array(0);
36
+ // PRIVATE METHODS
37
+ // Allocate a new buffer and initialize to contents of typed array
38
+ _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
39
+ assert(ArrayBuffer.isView(data));
40
+ const target = this._getWriteTarget();
41
+ this.gl.bindBuffer(target, this.handle);
42
+ this.gl.bufferData(target, byteLength, this.webglUsage);
43
+ this.gl.bufferSubData(target, byteOffset, data);
44
+ this.gl.bindBuffer(target, null);
45
+ this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
46
+ this.bytesUsed = byteLength;
47
+ this.byteLength = byteLength;
48
+ this.trackAllocatedMemory(byteLength);
49
+ return this;
68
50
  }
69
-
70
- const target = this._getWriteTarget();
71
-
72
- this.gl.bindBuffer(target, this.handle);
73
- this.gl.bufferData(target, data, this.webglUsage);
74
- this.gl.bindBuffer(target, null);
75
- this.debugData = null;
76
- this.bytesUsed = byteLength;
77
- this.byteLength = byteLength;
78
- return this;
79
- }
80
-
81
- destroy() {
82
- if (!this.destroyed && this.handle) {
83
- this.removeStats();
84
- this.trackDeallocatedMemory();
85
- this.gl.deleteBuffer(this.handle);
86
- this.destroyed = true;
51
+ // Allocate a GPU buffer of specified size.
52
+ _initWithByteLength(byteLength) {
53
+ assert(byteLength >= 0);
54
+ // Workaround needed for Safari (#291):
55
+ // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
56
+ let data = byteLength;
57
+ if (byteLength === 0) {
58
+ // @ts-expect-error
59
+ data = new Float32Array(0);
60
+ }
61
+ const target = this._getWriteTarget();
62
+ this.gl.bindBuffer(target, this.handle);
63
+ this.gl.bufferData(target, data, this.webglUsage);
64
+ this.gl.bindBuffer(target, null);
65
+ this.debugData = null;
66
+ this.bytesUsed = byteLength;
67
+ this.byteLength = byteLength;
68
+ return this;
87
69
  }
88
- }
89
-
90
- write(data, byteOffset = 0) {
91
- const srcOffset = 0;
92
- const byteLength = data.byteLength;
93
- const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
94
- this.gl.bindBuffer(target, this.handle);
95
-
96
- if (srcOffset !== 0 || byteLength !== undefined) {
97
- this.device.assertWebGL2();
98
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
99
- } else {
100
- this.gl.bufferSubData(target, byteOffset, data);
70
+ destroy() {
71
+ if (!this.destroyed && this.handle) {
72
+ this.removeStats();
73
+ this.trackDeallocatedMemory();
74
+ this.gl.deleteBuffer(this.handle);
75
+ this.destroyed = true;
76
+ // this.handle = null;
77
+ }
78
+ }
79
+ write(data, byteOffset = 0) {
80
+ const srcOffset = 0;
81
+ const byteLength = data.byteLength;
82
+ // Create the buffer - binding it here for the first time locks the type
83
+ // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
84
+ const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
85
+ this.gl.bindBuffer(target, this.handle);
86
+ // WebGL2: subData supports additional srcOffset and length parameters
87
+ if (srcOffset !== 0 || byteLength !== undefined) {
88
+ this.device.assertWebGL2();
89
+ // @ts-expect-error
90
+ this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
91
+ }
92
+ else {
93
+ this.gl.bufferSubData(target, byteOffset, data);
94
+ }
95
+ this.gl.bindBuffer(target, null);
96
+ // TODO - update local `data` if offsets are right
97
+ // this.debugData = data.slice(byteOffset, 40);
98
+ }
99
+ /** Read data from the buffer */
100
+ async readAsync(byteOffset = 0, byteLength) {
101
+ this.device.assertWebGL2();
102
+ const data = new Uint8Array(byteLength);
103
+ const dstOffset = 0;
104
+ // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
105
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
106
+ this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
107
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
108
+ // TODO - update local `data` if offsets are 0
109
+ // this.debugData = null;
110
+ return data;
111
+ }
112
+ // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
113
+ _invalidateDebugData() {
114
+ this.debugData = null;
115
+ }
116
+ _getWriteTarget() {
117
+ return this.target;
118
+ // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
119
+ }
120
+ _getReadTarget() {
121
+ return this.target;
122
+ return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
101
123
  }
102
-
103
- this.gl.bindBuffer(target, null);
104
- }
105
-
106
- async readAsync(byteOffset = 0, byteLength) {
107
- this.device.assertWebGL2();
108
- const data = new Uint8Array(byteLength);
109
- const dstOffset = 0;
110
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
111
- this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
112
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
113
- return data;
114
- }
115
-
116
- _invalidateDebugData() {
117
- this.debugData = null;
118
- }
119
-
120
- _getWriteTarget() {
121
- return this.target;
122
- }
123
-
124
- _getReadTarget() {
125
- return this.target;
126
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
127
- }
128
-
129
124
  }
130
-
125
+ // static MAP_READ = 0x01;
126
+ // static MAP_WRITE = 0x02;
127
+ // static COPY_SRC = 0x0004;
128
+ // static COPY_DST = 0x0008;
129
+ // static INDEX = 0x0010;
130
+ // static VERTEX = 0x0020;
131
+ // static UNIFORM = 0x0040;
132
+ // static STORAGE = 0x0080;
133
+ // static INDIRECT = 0x0100;
134
+ // static QUERY_RESOLVE = 0x0200;
131
135
  function getWebGLTarget(usage) {
132
- if (usage & Buffer.INDEX) {
133
- return GL.ELEMENT_ARRAY_BUFFER;
134
- }
135
-
136
- if (usage & Buffer.VERTEX) {
136
+ if (usage & Buffer.INDEX) {
137
+ return GL.ELEMENT_ARRAY_BUFFER;
138
+ }
139
+ if (usage & Buffer.VERTEX) {
140
+ return GL.ARRAY_BUFFER;
141
+ }
142
+ if (usage & Buffer.UNIFORM) {
143
+ return GL.UNIFORM_BUFFER;
144
+ }
145
+ // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
146
+ // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
147
+ // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
148
+ // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
149
+ // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
150
+ // Binding a buffer for the first time locks the type
151
+ // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
137
152
  return GL.ARRAY_BUFFER;
138
- }
139
-
140
- if (usage & Buffer.UNIFORM) {
141
- return GL.UNIFORM_BUFFER;
142
- }
143
-
144
- return GL.ARRAY_BUFFER;
145
153
  }
146
-
147
154
  function getWebGLUsage(usage) {
148
- if (usage & Buffer.INDEX) {
149
- return GL.STATIC_DRAW;
150
- }
151
-
152
- if (usage & Buffer.VERTEX) {
153
- return GL.STATIC_DRAW;
154
- }
155
-
156
- if (usage & Buffer.UNIFORM) {
155
+ if (usage & Buffer.INDEX) {
156
+ return GL.STATIC_DRAW;
157
+ }
158
+ if (usage & Buffer.VERTEX) {
159
+ return GL.STATIC_DRAW;
160
+ }
161
+ if (usage & Buffer.UNIFORM) {
162
+ return GL.DYNAMIC_DRAW;
163
+ }
157
164
  return GL.DYNAMIC_DRAW;
158
- }
159
-
160
- return GL.DYNAMIC_DRAW;
161
165
  }
162
- //# sourceMappingURL=webgl-buffer.js.map
@@ -1,22 +1,22 @@
1
1
  import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/api';
2
2
  import WebGLDevice from '../webgl-device';
3
- declare type CopyBufferToBufferCommand = {
3
+ type CopyBufferToBufferCommand = {
4
4
  name: 'copy-buffer-to-buffer';
5
5
  options: CopyBufferToBufferOptions;
6
6
  };
7
- declare type CopyBufferToTextureCommand = {
7
+ type CopyBufferToTextureCommand = {
8
8
  name: 'copy-buffer-to-texture';
9
9
  options: CopyBufferToTextureOptions;
10
10
  };
11
- declare type CopyTextureToBufferCommand = {
11
+ type CopyTextureToBufferCommand = {
12
12
  name: 'copy-texture-to-buffer';
13
13
  options: CopyTextureToBufferOptions;
14
14
  };
15
- declare type CopyTextureToTextureCommand = {
15
+ type CopyTextureToTextureCommand = {
16
16
  name: 'copy-texture-to-texture';
17
17
  options: CopyTextureToTextureOptions;
18
18
  };
19
- declare type Command = CopyBufferToBufferCommand | CopyBufferToTextureCommand | CopyTextureToBufferCommand | CopyTextureToTextureCommand;
19
+ type Command = CopyBufferToBufferCommand | CopyBufferToTextureCommand | CopyTextureToBufferCommand | CopyTextureToTextureCommand;
20
20
  export default class CommandBuffer {
21
21
  commands: Command[];
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C,aAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,aAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,aAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,aAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,aAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAM;CAC1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,OAAO,EAAO,QAiB3E"}
1
+ {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAM;CAC1B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,OAAO,EAAO,QAiB3E"}
@@ -1,65 +1,49 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import GL from '@luma.gl/constants';
3
-
4
2
  function cast(value) {
5
- return value;
3
+ return value;
6
4
  }
7
-
8
5
  export default class CommandBuffer {
9
- constructor() {
10
- _defineProperty(this, "commands", []);
11
- }
12
-
6
+ constructor() {
7
+ this.commands = [];
8
+ }
13
9
  }
14
10
  export function submitCommands(device, commands = []) {
15
- for (const command of commands) {
16
- switch (command.name) {
17
- case 'copy-buffer-to-buffer':
18
- _copyBufferToBuffer(device, command.options);
19
-
20
- break;
21
-
22
- case 'copy-buffer-to-texture':
23
- _copyBufferToTexture(device, command.options);
24
-
25
- break;
26
-
27
- case 'copy-texture-to-buffer':
28
- _copyTextureToBuffer(device, command.options);
29
-
30
- break;
31
-
32
- case 'copy-texture-to-texture':
33
- _copyTextureToTexture(device, command.options);
34
-
35
- break;
11
+ for (const command of commands) {
12
+ switch (command.name) {
13
+ case 'copy-buffer-to-buffer':
14
+ _copyBufferToBuffer(device, command.options);
15
+ break;
16
+ case 'copy-buffer-to-texture':
17
+ _copyBufferToTexture(device, command.options);
18
+ break;
19
+ case 'copy-texture-to-buffer':
20
+ _copyTextureToBuffer(device, command.options);
21
+ break;
22
+ case 'copy-texture-to-texture':
23
+ _copyTextureToTexture(device, command.options);
24
+ break;
25
+ }
36
26
  }
37
- }
38
27
  }
39
-
40
28
  function _copyBufferToBuffer(device, options) {
41
- const source = cast(options.source);
42
- const destination = cast(options.destination);
43
- const {
44
- gl2
45
- } = device;
46
-
47
- if (gl2) {
48
- var _options$sourceOffset, _options$destinationO;
49
-
50
- gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
51
- gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
52
- gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, (_options$sourceOffset = options.sourceOffset) !== null && _options$sourceOffset !== void 0 ? _options$sourceOffset : 0, (_options$destinationO = options.destinationOffset) !== null && _options$destinationO !== void 0 ? _options$destinationO : 0, options.size);
53
- gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
54
- gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
55
- } else {
56
- throw new Error('copyBufferToBuffer not implemented in WebGL1');
57
- }
29
+ const source = cast(options.source);
30
+ const destination = cast(options.destination);
31
+ const { gl2 } = device;
32
+ if (gl2) {
33
+ // In WebGL2 we can perform the copy on the GPU
34
+ // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
35
+ gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
36
+ gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
37
+ gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, options.sourceOffset ?? 0, options.destinationOffset ?? 0, options.size);
38
+ gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
39
+ gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
40
+ }
41
+ else {
42
+ // TODO - in WebGL1 we would have to read back to CPU
43
+ // read / write buffer from / to CPU
44
+ throw new Error('copyBufferToBuffer not implemented in WebGL1');
45
+ }
58
46
  }
59
-
60
- function _copyBufferToTexture(device, options) {}
61
-
62
- function _copyTextureToBuffer(device, options) {}
63
-
64
- function _copyTextureToTexture(device, options) {}
65
- //# sourceMappingURL=webgl-command-buffer.js.map
47
+ function _copyBufferToTexture(device, options) { }
48
+ function _copyTextureToBuffer(device, options) { }
49
+ function _copyTextureToTexture(device, options) { }