@luma.gl/webgl 9.0.0-alpha.3 → 9.0.0-alpha.30

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 (500) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +14 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +28 -46
  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/texture-formats.d.ts +31 -42
  11. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/texture-formats.js +163 -178
  13. package/dist/adapter/converters/texture-formats.js.map +1 -1
  14. package/dist/adapter/converters/vertex-formats.d.ts +2 -2
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +3 -9
  17. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  18. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-limits.js +2 -5
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  30. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  31. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +4 -4
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
  34. package/dist/adapter/helpers/attribute-utils.js +1 -18
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  36. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  37. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-info.js +25 -0
  39. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  40. package/dist/adapter/helpers/get-shader-layout.d.ts +10 -7
  41. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  42. package/dist/adapter/helpers/get-shader-layout.js +101 -84
  43. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  44. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  48. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  49. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  50. package/dist/adapter/helpers/set-uniform.js +3 -33
  51. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  52. package/dist/adapter/helpers/uniforms.d.ts +9 -10
  53. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  54. package/dist/adapter/helpers/uniforms.js +8 -18
  55. package/dist/adapter/helpers/uniforms.js.map +1 -1
  56. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  57. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  58. package/dist/adapter/objects/constants-to-keys.js +1 -28
  59. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  60. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
  63. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  64. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  65. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  66. package/dist/adapter/objects/webgl-resource.js +19 -75
  67. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  68. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +38 -11
  69. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  70. package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
  71. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  72. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  73. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-buffer.js +43 -71
  75. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  76. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-command-buffer.js +169 -41
  79. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  80. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-command-encoder.js +8 -17
  83. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  84. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-framebuffer.js +41 -149
  88. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  89. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  90. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-render-pass.js +88 -9
  92. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -11
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-render-pipeline.js +90 -152
  96. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  97. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  98. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-sampler.js +7 -15
  100. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  101. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  102. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-shader.js +9 -22
  104. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  105. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  106. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  107. package/dist/adapter/resources/webgl-texture.js +98 -213
  108. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  109. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  110. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  111. package/dist/adapter/webgl-canvas-context.js +8 -20
  112. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  113. package/dist/adapter/webgl-device.d.ts +64 -41
  114. package/dist/adapter/webgl-device.d.ts.map +1 -1
  115. package/dist/adapter/webgl-device.js +133 -113
  116. package/dist/adapter/webgl-device.js.map +1 -1
  117. package/dist/classic/accessor.d.ts +3 -3
  118. package/dist/classic/accessor.d.ts.map +1 -1
  119. package/dist/classic/accessor.js +14 -38
  120. package/dist/classic/accessor.js.map +1 -1
  121. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
  122. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  123. package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
  124. package/dist/classic/buffer-with-accessor.js.map +1 -0
  125. package/dist/classic/clear.d.ts +22 -0
  126. package/dist/classic/clear.d.ts.map +1 -0
  127. package/dist/classic/clear.js +88 -0
  128. package/dist/classic/clear.js.map +1 -0
  129. package/dist/classic/copy-and-blit.d.ts +62 -0
  130. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  131. package/dist/classic/copy-and-blit.js +202 -0
  132. package/dist/classic/copy-and-blit.js.map +1 -0
  133. package/dist/classic/format-utils.d.ts +3 -0
  134. package/dist/classic/format-utils.d.ts.map +1 -0
  135. package/dist/classic/format-utils.js +38 -0
  136. package/dist/classic/format-utils.js.map +1 -0
  137. package/dist/classic/typed-array-utils.d.ts +15 -17
  138. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  139. package/dist/classic/typed-array-utils.js +1 -21
  140. package/dist/classic/typed-array-utils.js.map +1 -1
  141. package/dist/context/context/create-browser-context.d.ts +40 -0
  142. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  143. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
  144. package/dist/context/context/create-browser-context.js.map +1 -0
  145. package/dist/context/context/create-headless-context.d.ts +9 -0
  146. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  147. package/dist/context/context/create-headless-context.js +42 -0
  148. package/dist/context/context/create-headless-context.js.map +1 -0
  149. package/dist/context/context/webgl-checks.js +1 -4
  150. package/dist/context/context/webgl-checks.js.map +1 -1
  151. package/dist/context/debug/spector.d.ts +1 -2
  152. package/dist/context/debug/spector.d.ts.map +1 -1
  153. package/dist/context/debug/spector.js +8 -20
  154. package/dist/context/debug/spector.js.map +1 -1
  155. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  156. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.js +11 -34
  158. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  159. package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
  160. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.js +8 -18
  162. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  163. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  164. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  166. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  167. package/dist/context/polyfill/context-data.d.ts +13 -0
  168. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  169. package/dist/context/polyfill/context-data.js +12 -0
  170. package/dist/context/polyfill/context-data.js.map +1 -0
  171. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  172. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  173. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  174. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  175. package/dist/context/polyfill/polyfill-context.js +21 -29
  176. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  178. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  179. package/dist/context/polyfill/polyfill-table.js +10 -32
  180. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  183. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  184. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  185. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  186. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  187. package/dist/context/state-tracker/track-context-state.js +16 -51
  188. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  189. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  190. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  191. package/dist/context/state-tracker/with-parameters.js +7 -9
  192. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  193. package/dist/dist.dev.js +10158 -0
  194. package/dist/index.cjs +6604 -0
  195. package/dist/index.d.ts +25 -22
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +27 -26
  198. package/dist/index.js.map +1 -1
  199. package/dist/types.d.ts +1 -1
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/types.js.map +1 -1
  202. package/dist.min.js +37 -0
  203. package/package.json +21 -9
  204. package/src/adapter/converters/device-parameters.ts +88 -35
  205. package/src/adapter/converters/sampler-parameters.ts +19 -9
  206. package/src/adapter/converters/texture-formats.ts +261 -178
  207. package/src/adapter/converters/vertex-formats.ts +3 -2
  208. package/src/adapter/device-helpers/device-features.ts +10 -3
  209. package/src/adapter/device-helpers/device-limits.ts +3 -3
  210. package/src/adapter/device-helpers/get-device-info.ts +14 -10
  211. package/src/adapter/helpers/attribute-utils.ts +4 -5
  212. package/src/adapter/helpers/get-shader-info.ts +40 -0
  213. package/src/adapter/helpers/get-shader-layout.ts +150 -68
  214. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  215. package/src/adapter/helpers/set-uniform.ts +7 -6
  216. package/src/adapter/helpers/uniforms.ts +23 -13
  217. package/src/adapter/objects/constants-to-keys.ts +3 -25
  218. package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
  219. package/src/adapter/objects/webgl-resource.ts +14 -23
  220. package/src/adapter/objects/webgl-vertex-array-object.ts +201 -37
  221. package/src/adapter/resources/webgl-buffer.ts +56 -58
  222. package/src/adapter/resources/webgl-command-buffer.ts +332 -25
  223. package/src/adapter/resources/webgl-command-encoder.ts +16 -11
  224. package/src/adapter/resources/webgl-external-texture.ts +2 -2
  225. package/src/adapter/resources/webgl-framebuffer.ts +88 -133
  226. package/src/adapter/resources/webgl-render-pass.ts +155 -4
  227. package/src/adapter/resources/webgl-render-pipeline.ts +161 -104
  228. package/src/adapter/resources/webgl-sampler.ts +13 -8
  229. package/src/adapter/resources/webgl-shader.ts +11 -10
  230. package/src/adapter/resources/webgl-texture.ts +113 -85
  231. package/src/adapter/webgl-canvas-context.ts +14 -14
  232. package/src/adapter/webgl-device.ts +192 -77
  233. package/src/classic/accessor.ts +4 -17
  234. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
  235. package/src/classic/clear.ts +110 -0
  236. package/src/classic/copy-and-blit.ts +308 -0
  237. package/src/classic/format-utils.ts +43 -0
  238. package/src/classic/typed-array-utils.ts +18 -27
  239. package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
  240. package/src/context/context/create-headless-context.ts +48 -0
  241. package/src/context/context/webgl-checks.ts +1 -1
  242. package/src/context/debug/spector.ts +7 -6
  243. package/src/context/debug/webgl-developer-tools.ts +21 -15
  244. package/src/context/parameters/unified-parameter-api.ts +20 -14
  245. package/src/context/parameters/webgl-parameter-tables.ts +117 -98
  246. package/src/context/polyfill/context-data.ts +27 -0
  247. package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
  248. package/src/context/polyfill/polyfill-context.ts +7 -9
  249. package/src/context/polyfill/polyfill-table.ts +18 -16
  250. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  251. package/src/context/state-tracker/track-context-state.ts +14 -13
  252. package/src/context/state-tracker/with-parameters.ts +8 -2
  253. package/src/index.ts +42 -33
  254. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  255. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  256. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  257. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  258. package/dist/bundle.d.ts +0 -2
  259. package/dist/bundle.d.ts.map +0 -1
  260. package/dist/bundle.js +0 -5
  261. package/dist/bundle.js.map +0 -1
  262. package/dist/classic/buffer.d.ts.map +0 -1
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/context/context/context-state.d.ts +0 -18
  265. package/dist/context/context/context-state.d.ts.map +0 -1
  266. package/dist/context/context/context-state.js +0 -26
  267. package/dist/context/context/context-state.js.map +0 -1
  268. package/dist/context/context/create-context.d.ts +0 -41
  269. package/dist/context/context/create-context.d.ts.map +0 -1
  270. package/dist/context/context/create-context.js +0 -49
  271. package/dist/context/context/create-context.js.map +0 -1
  272. package/dist/context/context/device-pixels.d.ts +0 -25
  273. package/dist/context/context/device-pixels.d.ts.map +0 -1
  274. package/dist/context/context/device-pixels.js +0 -98
  275. package/dist/context/context/device-pixels.js.map +0 -1
  276. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  277. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  278. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  279. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  280. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  281. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  282. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  283. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  284. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  285. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  286. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  287. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  288. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  289. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  290. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  291. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  292. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  293. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  294. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  295. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  296. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  297. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  298. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  299. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  300. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  301. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  302. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  303. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  304. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  305. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  306. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  307. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  308. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  309. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  310. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  311. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  312. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  313. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  314. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  315. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  316. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  317. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  318. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  319. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  320. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  321. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  322. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  323. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  324. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  325. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  326. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  327. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  328. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  329. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  330. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  331. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  332. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  333. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  334. package/dist/es5/adapter/webgl-device.js +0 -399
  335. package/dist/es5/adapter/webgl-device.js.map +0 -1
  336. package/dist/es5/bundle.js +0 -7
  337. package/dist/es5/bundle.js.map +0 -1
  338. package/dist/es5/classic/accessor.js +0 -181
  339. package/dist/es5/classic/accessor.js.map +0 -1
  340. package/dist/es5/classic/buffer.js +0 -470
  341. package/dist/es5/classic/buffer.js.map +0 -1
  342. package/dist/es5/classic/typed-array-utils.js +0 -126
  343. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  344. package/dist/es5/context/context/context-state.js +0 -31
  345. package/dist/es5/context/context/context-state.js.map +0 -1
  346. package/dist/es5/context/context/create-context.js +0 -69
  347. package/dist/es5/context/context/create-context.js.map +0 -1
  348. package/dist/es5/context/context/device-pixels.js +0 -115
  349. package/dist/es5/context/context/device-pixels.js.map +0 -1
  350. package/dist/es5/context/context/webgl-checks.js +0 -54
  351. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  352. package/dist/es5/context/debug/spector.js +0 -133
  353. package/dist/es5/context/debug/spector.js.map +0 -1
  354. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  355. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  356. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  357. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  358. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  359. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  360. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  361. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  362. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  363. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  364. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  365. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  366. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  367. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  368. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  369. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  370. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  371. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  372. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  373. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  374. package/dist/es5/index.js +0 -276
  375. package/dist/es5/index.js.map +0 -1
  376. package/dist/es5/init.js +0 -10
  377. package/dist/es5/init.js.map +0 -1
  378. package/dist/es5/types/webgl.js +0 -6
  379. package/dist/es5/types/webgl.js.map +0 -1
  380. package/dist/es5/types.js +0 -2
  381. package/dist/es5/types.js.map +0 -1
  382. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  383. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  384. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  385. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  386. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  387. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  388. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  389. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  390. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  391. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  392. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  393. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  394. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  395. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  396. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  397. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  398. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  399. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  400. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  401. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  402. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  403. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  404. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  405. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  406. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  407. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  408. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  409. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  410. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  411. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  412. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  413. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  414. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  415. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  416. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  417. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  418. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  419. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  420. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  421. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  422. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  423. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  424. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  425. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  426. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  427. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  428. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  429. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  430. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  431. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  432. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  433. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  434. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  435. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  436. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  437. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  438. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  439. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  440. package/dist/esm/adapter/webgl-device.js +0 -280
  441. package/dist/esm/adapter/webgl-device.js.map +0 -1
  442. package/dist/esm/bundle.js +0 -5
  443. package/dist/esm/bundle.js.map +0 -1
  444. package/dist/esm/classic/accessor.js +0 -144
  445. package/dist/esm/classic/accessor.js.map +0 -1
  446. package/dist/esm/classic/buffer.js +0 -384
  447. package/dist/esm/classic/buffer.js.map +0 -1
  448. package/dist/esm/classic/typed-array-utils.js +0 -112
  449. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  450. package/dist/esm/context/context/context-state.js +0 -26
  451. package/dist/esm/context/context/context-state.js.map +0 -1
  452. package/dist/esm/context/context/create-context.js.map +0 -1
  453. package/dist/esm/context/context/device-pixels.js +0 -98
  454. package/dist/esm/context/context/device-pixels.js.map +0 -1
  455. package/dist/esm/context/context/webgl-checks.js +0 -34
  456. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  457. package/dist/esm/context/debug/spector.js +0 -76
  458. package/dist/esm/context/debug/spector.js.map +0 -1
  459. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  460. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  461. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  462. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  463. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  464. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  465. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  466. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  467. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  468. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  469. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  470. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  471. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  472. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  473. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  474. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  475. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  476. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  477. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  478. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  479. package/dist/esm/index.js +0 -27
  480. package/dist/esm/index.js.map +0 -1
  481. package/dist/esm/init.js +0 -4
  482. package/dist/esm/init.js.map +0 -1
  483. package/dist/esm/types/webgl.js +0 -2
  484. package/dist/esm/types/webgl.js.map +0 -1
  485. package/dist/esm/types.js +0 -2
  486. package/dist/esm/types.js.map +0 -1
  487. package/dist/init.d.ts +0 -2
  488. package/dist/init.d.ts.map +0 -1
  489. package/dist/init.js +0 -4
  490. package/dist/init.js.map +0 -1
  491. package/dist/types/webgl.d.ts +0 -144
  492. package/dist/types/webgl.d.ts.map +0 -1
  493. package/dist/types/webgl.js +0 -2
  494. package/dist/types/webgl.js.map +0 -1
  495. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  496. package/src/bundle.ts +0 -4
  497. package/src/context/context/context-state.ts +0 -41
  498. package/src/context/context/device-pixels.ts +0 -152
  499. package/src/init.ts +0 -4
  500. package/src/types/webgl.ts +0 -283
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/objects/webgl-vertex-array-object.ts"],"names":["assert","GL","getBrowser","WebGLResource","ERR_ELEMENTS","WEBGLVertexArrayObject","Symbol","toStringTag","constructor","device","props","_createHandle","gl2","createVertexArray","_deleteHandle","deleteVertexArray","handle","elements","_bindHandle","bindVertexArray","setElementBuffer","elementBuffer","opts","target","ELEMENT_ARRAY_BUFFER","bind","gl","bindBuffer","setBuffer","location","buffer","accessor","size","type","stride","offset","normalized","integer","divisor","Number","ARRAY_BUFFER","assertWebGL2","vertexAttribIPointer","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","enable","canDisableAttributeZero","isWebGL2","canDisableAttribute","disableVertexAttribArray"],"mappings":"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","sourcesContent":["import {assert, ResourceProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\n\nimport WebGLDevice from '../webgl-device';\nimport WebGLResource from './webgl-resource';\n\nimport Buffer from '../resources/webgl-buffer';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\n/**\n * VertexArrayObject properties\n */\nexport type VertexArrayObjectProps = ResourceProps & {\n};\n\n/** VertexArrayObject wrapper */\nexport default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {\n get [Symbol.toStringTag](): string {\n return 'BaseVertexArrayObject';\n }\n\n constructor(device: WebGLDevice, props?: VertexArrayObjectProps) {\n // @ts-expect-error\n super(device, props, {});\n }\n\n _createHandle() {\n return this.gl2.createVertexArray();\n }\n\n _deleteHandle(): void {\n this.gl2.deleteVertexArray(this.handle);\n // @ts-expect-error\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle: WEBGLVertexArrayObject): void {\n this.gl2.bindVertexArray(handle);\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer: Buffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */\n setBuffer(location: number, buffer: Buffer, accessor: any): this {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n this.device.assertWebGL2();\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n /**\n * Enabling an attribute location makes it reference the currently bound buffer\n * Disabling an attribute location makes it reference the global constant value\n * TODO - handle single values for size 1 attributes?\n * TODO - convert classic arrays based on known type?\n */\n enable(location: number, enable = true): this {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...\n const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';\n const canDisableAttribute = canDisableAttributeZero || location !== 0;\n\n if (enable || canDisableAttribute) {\n location = Number(location);\n this.bind(() =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n}\n"],"file":"webgl-vertex-array-object.js"}
1
+ {"version":3,"file":"webgl-vertex-array-object.js","names":["Resource","assert","getScratchArray","fillArray","GL","getBrowser","WebGLResource","ERR_ELEMENTS","_Symbol$toStringTag","Symbol","toStringTag","WEBGLVertexArrayObject","isConstantAttributeZeroSupported","device","info","type","constructor","props","defaultProps","constantAttributeZero","_defineProperty","Object","seal","destroy","buffer","_this$buffer","_createHandle","gl2","createVertexArray","_deleteHandle","deleteVertexArray","handle","elements","_bindHandle","bindVertexArray","enable","location","arguments","length","undefined","canDisableAttributeZero","isWebGL2","canDisableAttribute","Number","bind","gl","enableVertexAttribArray","disableVertexAttribArray","setElementBuffer","elementBuffer","opts","glTarget","ELEMENT_ARRAY_BUFFER","bindBuffer","setBuffer","accessor","size","stride","offset","normalized","integer","divisor","ARRAY_BUFFER","assertWebGL2","vertexAttribIPointer","vertexAttribPointer","vertexAttribDivisor","setConstant","array","Float32Array","setConstantFloatArray","Int32Array","setConstantIntArray","Uint32Array","setConstantUintArray","getConstantBuffer","elementCount","value","constantValue","normalizeConstantArrayValue","byteLength","updateNeeded","createBuffer","reallocate","compareConstantArrayValues","bufferValue","typedArray","target","source","start","count","subData","vertexAttrib1fv","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","_device$gl","vertexAttribI4iv","_device$gl2","vertexAttribI4uiv","arrayValue","Array","isArray","v1","v2","i"],"sources":["../../../src/adapter/objects/webgl-vertex-array-object.ts"],"sourcesContent":["import type {Device, Buffer, ResourceProps, TypedArray, NumericArray} from '@luma.gl/core';\nimport {Resource, assert, getScratchArray, fillArray} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {getBrowser} from '@probe.gl/env';\n\nimport {WebGLDevice} from '../webgl-device';\nimport {WebGLResource} from './webgl-resource';\nimport {WEBGLBuffer} from '../resources/webgl-buffer';\n\nimport {BufferWithAccessor} from '../../classic/buffer-with-accessor';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\n/**\n * VertexArrayObject properties\n * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers\n * and on iOS Safari browser.\n */\nexport type VertexArrayObjectProps = ResourceProps & {\n constantAttributeZero?: boolean;\n};\n\n/** VertexArrayObject wrapper */\nexport class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {\n override get [Symbol.toStringTag](): string {\n return 'BaseVertexArrayObject';\n }\n\n /** Buffer constant */\n private buffer: BufferWithAccessor | null = null;\n private bufferValue = null;\n\n static isConstantAttributeZeroSupported(device: Device): boolean {\n return device.info.type === 'webgl2' || getBrowser() === 'Chrome';\n }\n\n // Create a VertexArray\n constructor(device: Device, props?: VertexArrayObjectProps) {\n super(device, props, {...Resource.defaultProps, constantAttributeZero: false});\n Object.seal(this);\n }\n\n override destroy(): void {\n super.destroy();\n if (this.buffer) {\n this.buffer?.destroy();\n } }\n\n override _createHandle() {\n return this.gl2.createVertexArray();\n }\n\n override _deleteHandle(): void {\n this.gl2.deleteVertexArray(this.handle);\n // @ts-expect-error\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n override _bindHandle(handle: WEBGLVertexArrayObject): void {\n this.gl2.bindVertexArray(handle);\n }\n\n /**\n * Enabling an attribute location makes it reference the currently bound buffer\n * Disabling an attribute location makes it reference the global constant value\n * TODO - handle single values for size 1 attributes?\n * TODO - convert classic arrays based on known type?\n */\n enable(location: number, enable = true): void {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...\n const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';\n const canDisableAttribute = canDisableAttributeZero || location !== 0;\n\n if (enable || canDisableAttribute) {\n location = Number(location);\n this.bind(() =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n } }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer: WEBGLBuffer | null = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.glTarget === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n }\n\n /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */\n setBuffer(location: number, buffer: WEBGLBuffer, accessor: any): void {\n // Check target\n if (buffer.glTarget === GL.ELEMENT_ARRAY_BUFFER) {\n this.setElementBuffer(buffer, accessor);\n return;\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n this.device.assertWebGL2();\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n }\n\n /**\n * Set an attribute to a constant value\n * @param device\n * @param location\n * @param array\n * \n * @note Constants are stored globally on the WebGL context, not the VAO\n * so they need to be updated before every render\n * @todo - use known type (in configuration or passed in) to allow non-typed arrays?\n * @todo - remember/cache values to avoid setting them unnecessarily?\n */\n setConstant(location: any, array: TypedArray): void {\n switch (array.constructor) {\n case Float32Array:\n setConstantFloatArray(this.device, location, array as Float32Array);\n break;\n case Int32Array:\n setConstantIntArray(this.device, location, array as Int32Array);\n break;\n case Uint32Array:\n setConstantUintArray(this.device, location, array as Uint32Array);\n break;\n default:\n assert(false);\n }\n }\n\n /**\n * Provide a means to create a buffer that is equivalent to a constant.\n * NOTE: Desktop OpenGL cannot disable attribute 0.\n * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n * this-has-significant-performance-penalty\n */\n getConstantBuffer(elementCount: number, value): Buffer {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || this.device.createBuffer({byteLength}) as BufferWithAccessor;\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n}\n\nfunction setConstantFloatArray(device: WebGLDevice, location: number, array: Float32Array): void {\n switch (array.length) {\n case 1:\n device.gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n device.gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n device.gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n device.gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n}\n\nfunction setConstantIntArray(device: WebGLDevice, location: number, array: Int32Array): void {\n device.assertWebGL2();\n device.gl2?.vertexAttribI4iv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1iv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2iv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3iv(location, array);\n // break;\n // case 4:\n // break;\n // default:\n // assert(false);\n // }\n}\n\nfunction setConstantUintArray(device: WebGLDevice, location: number, array: Uint32Array) {\n device.assertWebGL2();\n device.gl2?.vertexAttribI4uiv(location, array);\n // switch (array.length) {\n // case 1:\n // gl.vertexAttribI1uiv(location, array);\n // break;\n // case 2:\n // gl.vertexAttribI2uiv(location, array);\n // break;\n // case 3:\n // gl.vertexAttribI3uiv(location, array);\n // break;\n // case 4:\n // gl.vertexAttribI4uiv(location, array);\n // break;\n // default:\n // assert(false);\n // }\n}\n\n// HELPERS\n\n/**\n * TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n * TODO - handle single values for size 1 attributes?\n */\nfunction normalizeConstantArrayValue(arrayValue: NumericArray) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n}\n\n/**\n * \n */\nfunction compareConstantArrayValues(v1: NumericArray, v2: NumericArray): boolean {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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"}
@@ -1,19 +1,27 @@
1
- import type { BufferProps } from '@luma.gl/api';
2
- import { Buffer } from '@luma.gl/api';
3
- import WebGLDevice from '../webgl-device';
1
+ import type { BufferProps } from '@luma.gl/core';
2
+ import { Buffer } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { WebGLDevice } from '../webgl-device';
4
5
  /** WebGL Buffer interface */
5
- export default class WEBGLBuffer extends Buffer {
6
+ export declare class WEBGLBuffer extends Buffer {
6
7
  readonly device: WebGLDevice;
7
8
  readonly gl: WebGLRenderingContext;
8
9
  readonly gl2: WebGL2RenderingContext | null;
9
10
  readonly handle: WebGLBuffer;
10
- readonly target: number;
11
+ /** Target in OpenGL defines the type of buffer */
12
+ readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
13
+ /** Usage is a hint on how frequently the buffer will be updates */
14
+ readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;
15
+ /** Index type is needed when issuing draw calls, so we pre-compute it */
16
+ readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT;
17
+ /** Number of bytes allocated on the GPU for this buffer */
11
18
  byteLength: number;
19
+ /** Number of bytes used */
12
20
  bytesUsed: number;
13
- debugData: ArrayBuffer;
14
- webglUsage: number;
15
- accessor: {};
21
+ /** A partial CPU-side copy of the data in this buffer, for debugging purposes */
22
+ debugData: ArrayBuffer | null;
16
23
  constructor(device: WebGLDevice, props?: BufferProps);
24
+ /** Allocate a new buffer and initialize to contents of typed array */
17
25
  _initWithData(data: any, byteOffset?: number, byteLength?: number): this;
18
26
  _initWithByteLength(byteLength: number): this;
19
27
  destroy(): void;
@@ -21,7 +29,7 @@ export default class WEBGLBuffer extends Buffer {
21
29
  /** Read data from the buffer */
22
30
  readAsync(byteOffset?: number, byteLength?: number): Promise<ArrayBuffer>;
23
31
  _invalidateDebugData(): void;
24
- _getWriteTarget(): number;
25
- _getReadTarget(): number;
32
+ _getWriteTarget(): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
33
+ _getReadTarget(): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;
26
34
  }
27
35
  //# sourceMappingURL=webgl-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAS,MAAM,cAAc,CAAC;AAE5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAI1C,6BAA6B;AAC7B,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAAM;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,WAAW,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,EAAE,CAAC;gBAED,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IAqCxD,aAAa,CAAC,IAAI,KAAA,EAAE,UAAU,GAAE,MAAU,EAAE,UAAU,GAAE,MAAqC,GAAG,IAAI;IAmBpG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAwB7C,OAAO,IAAI,IAAI;IAUf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAuB1D,gCAAgC;IAC1B,SAAS,CACb,UAAU,GAAE,MAAU,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC;IAmBvB,oBAAoB;IAIpB,eAAe;IAKf,cAAc;CAIf"}
1
+ {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAS,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAI5C,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,cAAc,CAAC;IACjF,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,CAAqB;IAE9E,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,SAAS,EAAE,WAAW,GAAG,IAAI,CAAQ;gBAEzB,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IA8BxD,sEAAsE;IACtE,aAAa,CAAC,IAAI,KAAA,EAAE,UAAU,GAAE,MAAU,EAAE,UAAU,GAAE,MAAqC,GAAG,IAAI;IAkBpG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAwBpC,OAAO,IAAI,IAAI;IAWf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAqBnE,gCAAgC;IACjB,SAAS,CACtB,UAAU,GAAE,MAAU,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC;IAmBvB,oBAAoB;IAIpB,eAAe;IAKf,cAAc;CAIf"}
@@ -1,111 +1,96 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Buffer, assert } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
2
+ import { Buffer, assert } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
4
  const DEBUG_DATA_LENGTH = 10;
5
- export default class WEBGLBuffer extends Buffer {
6
- constructor(device, props = {}) {
5
+ export class WEBGLBuffer extends Buffer {
6
+ constructor(device) {
7
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7
8
  super(device, props);
8
-
9
9
  _defineProperty(this, "device", void 0);
10
-
11
10
  _defineProperty(this, "gl", void 0);
12
-
13
11
  _defineProperty(this, "gl2", void 0);
14
-
15
12
  _defineProperty(this, "handle", void 0);
16
-
17
- _defineProperty(this, "target", void 0);
18
-
13
+ _defineProperty(this, "glTarget", void 0);
14
+ _defineProperty(this, "glUsage", void 0);
15
+ _defineProperty(this, "glIndexType", GL.UNSIGNED_SHORT);
19
16
  _defineProperty(this, "byteLength", void 0);
20
-
21
17
  _defineProperty(this, "bytesUsed", void 0);
22
-
23
- _defineProperty(this, "debugData", void 0);
24
-
25
- _defineProperty(this, "webglUsage", void 0);
26
-
27
- _defineProperty(this, "accessor", void 0);
28
-
18
+ _defineProperty(this, "debugData", null);
29
19
  this.device = device;
30
20
  this.gl = this.device.gl;
31
21
  this.gl2 = this.device.gl2;
32
22
  const handle = typeof props === 'object' ? props.handle : undefined;
33
23
  this.handle = handle || this.gl.createBuffer();
34
- this.handle.__SPECTOR_Metadata = { ...this.props,
24
+ device.setSpectorMetadata(this.handle, {
25
+ ...this.props,
35
26
  data: typeof this.props.data
36
- };
37
- this.target = this.props.target || getWebGLTarget(this.props.usage);
38
- this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
27
+ });
28
+ this.glTarget = getWebGLTarget(this.props.usage);
29
+ this.glUsage = getWebGLUsage(this.props.usage);
30
+ this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;
39
31
  this.debugData = null;
40
-
41
32
  if (props.data) {
42
33
  this._initWithData(props.data, props.byteOffset, props.byteLength);
43
34
  } else {
44
35
  this._initWithByteLength(props.byteLength || 0);
45
36
  }
46
37
  }
47
-
48
- _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
38
+ _initWithData(data) {
39
+ let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
40
+ let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + byteOffset;
49
41
  assert(ArrayBuffer.isView(data));
50
-
51
- const target = this._getWriteTarget();
52
-
53
- this.gl.bindBuffer(target, this.handle);
54
- this.gl.bufferData(target, byteLength, this.webglUsage);
55
- this.gl.bufferSubData(target, byteOffset, data);
56
- this.gl.bindBuffer(target, null);
42
+ const glTarget = this._getWriteTarget();
43
+ this.gl.bindBuffer(glTarget, this.handle);
44
+ this.gl.bufferData(glTarget, byteLength, this.glUsage);
45
+ this.gl.bufferSubData(glTarget, byteOffset, data);
46
+ this.gl.bindBuffer(glTarget, null);
57
47
  this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
58
48
  this.bytesUsed = byteLength;
59
49
  this.byteLength = byteLength;
60
50
  this.trackAllocatedMemory(byteLength);
61
51
  return this;
62
52
  }
63
-
64
53
  _initWithByteLength(byteLength) {
65
54
  assert(byteLength >= 0);
66
55
  let data = byteLength;
67
-
68
56
  if (byteLength === 0) {
69
57
  data = new Float32Array(0);
70
58
  }
71
-
72
- const target = this._getWriteTarget();
73
-
74
- this.gl.bindBuffer(target, this.handle);
75
- this.gl.bufferData(target, data, this.webglUsage);
76
- this.gl.bindBuffer(target, null);
59
+ const glTarget = this._getWriteTarget();
60
+ this.gl.bindBuffer(glTarget, this.handle);
61
+ this.gl.bufferData(glTarget, data, this.glUsage);
62
+ this.gl.bindBuffer(glTarget, null);
77
63
  this.debugData = null;
78
64
  this.bytesUsed = byteLength;
79
65
  this.byteLength = byteLength;
80
66
  return this;
81
67
  }
82
-
83
68
  destroy() {
84
- if (this.handle) {
69
+ if (!this.destroyed && this.handle) {
85
70
  this.removeStats();
86
71
  this.trackDeallocatedMemory();
87
72
  this.gl.deleteBuffer(this.handle);
73
+ this.destroyed = true;
88
74
  this.handle = null;
89
75
  }
90
76
  }
91
-
92
- write(data, byteOffset = 0) {
77
+ write(data) {
78
+ let byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
93
79
  const srcOffset = 0;
94
- const byteLength = data.byteLength;
95
- const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
96
- this.gl.bindBuffer(target, this.handle);
97
-
80
+ const byteLength = undefined;
81
+ const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;
82
+ this.gl.bindBuffer(glTarget, this.handle);
98
83
  if (srcOffset !== 0 || byteLength !== undefined) {
99
84
  this.device.assertWebGL2();
100
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
85
+ this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);
101
86
  } else {
102
- this.gl.bufferSubData(target, byteOffset, data);
87
+ this.gl.bufferSubData(glTarget, byteOffset, data);
103
88
  }
104
-
105
- this.gl.bindBuffer(target, null);
89
+ this.gl.bindBuffer(glTarget, null);
106
90
  }
107
-
108
- async readAsync(byteOffset = 0, byteLength) {
91
+ async readAsync() {
92
+ let byteOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
93
+ let byteLength = arguments.length > 1 ? arguments[1] : undefined;
109
94
  this.device.assertWebGL2();
110
95
  const data = new Uint8Array(byteLength);
111
96
  const dstOffset = 0;
@@ -114,51 +99,38 @@ export default class WEBGLBuffer extends Buffer {
114
99
  this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
115
100
  return data;
116
101
  }
117
-
118
102
  _invalidateDebugData() {
119
103
  this.debugData = null;
120
104
  }
121
-
122
105
  _getWriteTarget() {
123
- return this.target;
106
+ return this.glTarget;
124
107
  }
125
-
126
108
  _getReadTarget() {
127
- return this.target;
128
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
109
+ return this.glTarget;
129
110
  }
130
-
131
111
  }
132
-
133
112
  function getWebGLTarget(usage) {
134
113
  if (usage & Buffer.INDEX) {
135
114
  return GL.ELEMENT_ARRAY_BUFFER;
136
115
  }
137
-
138
116
  if (usage & Buffer.VERTEX) {
139
117
  return GL.ARRAY_BUFFER;
140
118
  }
141
-
142
119
  if (usage & Buffer.UNIFORM) {
143
120
  return GL.UNIFORM_BUFFER;
144
121
  }
145
-
146
122
  return GL.ARRAY_BUFFER;
147
123
  }
148
-
149
124
  function getWebGLUsage(usage) {
150
125
  if (usage & Buffer.INDEX) {
151
126
  return GL.STATIC_DRAW;
152
127
  }
153
-
154
128
  if (usage & Buffer.VERTEX) {
155
129
  return GL.STATIC_DRAW;
156
130
  }
157
-
158
131
  if (usage & Buffer.UNIFORM) {
159
132
  return GL.DYNAMIC_DRAW;
160
133
  }
161
-
162
- return GL.DYNAMIC_DRAW;
134
+ return GL.STATIC_DRAW;
163
135
  }
164
136
  //# sourceMappingURL=webgl-buffer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":["Buffer","assert","GL","DEBUG_DATA_LENGTH","WEBGLBuffer","constructor","device","props","gl","gl2","handle","undefined","createBuffer","__SPECTOR_Metadata","data","target","getWebGLTarget","usage","webglUsage","getWebGLUsage","debugData","_initWithData","byteOffset","byteLength","_initWithByteLength","ArrayBuffer","isView","_getWriteTarget","bindBuffer","bufferData","bufferSubData","slice","bytesUsed","trackAllocatedMemory","Float32Array","destroy","removeStats","trackDeallocatedMemory","deleteBuffer","write","srcOffset","isWebGL2","COPY_WRITE_BUFFER","assertWebGL2","offset","readAsync","Uint8Array","dstOffset","COPY_READ_BUFFER","getBufferSubData","_invalidateDebugData","_getReadTarget","INDEX","ELEMENT_ARRAY_BUFFER","VERTEX","ARRAY_BUFFER","UNIFORM","UNIFORM_BUFFER","STATIC_DRAW","DYNAMIC_DRAW"],"mappings":"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","sourcesContent":["import type {BufferProps} from '@luma.gl/api';\nimport {Buffer, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../webgl-device';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n/** WebGL Buffer interface */\nexport default class WEBGLBuffer extends Buffer {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLBuffer;\n readonly target: number;\n\n byteLength: number;\n bytesUsed: number;\n debugData: ArrayBuffer;\n\n webglUsage: number;\n\n accessor: {};\n\n constructor(device: WebGLDevice, props: BufferProps = {}) {\n super(device, props);\n\n this.device = device;\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n\n const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;\n this.handle = handle || this.gl.createBuffer();\n // @ts-expect-error Add metadata for spector\n this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n // @ts-expect-error Hack - Checking for subclass prop\n this.target = this.props.target || getWebGLTarget(this.props.usage);\n // @ts-expect-error Hack - Checking for subclass prop\n this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);\n this.debugData = null;\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._initWithData(props.data, props.byteOffset, props.byteLength);\n } else {\n this._initWithByteLength(props.byteLength || 0);\n }\n\n // Deprecated: Merge main props and accessor\n // this.accessor = {...props.accessor};\n\n // Object.seal(this);\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {\n assert(ArrayBuffer.isView(data));\n\n const target = this._getWriteTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.webglUsage);\n this.gl.bufferSubData(target, byteOffset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _initWithByteLength(byteLength: number): this {\n assert(byteLength >= 0);\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const target = this._getWriteTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, this.webglUsage);\n this.gl.bindBuffer(target, null);\n\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n return this;\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n write(data: ArrayBufferView, byteOffset: number = 0): void {\n const srcOffset = 0;\n const byteLength = data.byteLength;\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n this.device.assertWebGL2();\n\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, byteOffset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n // this.debugData = data.slice(byteOffset, 40);\n }\n\n /** Read data from the buffer */\n async readAsync(\n byteOffset: number = 0,\n byteLength?: number\n ): Promise<ArrayBuffer> {\n this.device.assertWebGL2();\n\n const data = new Uint8Array(byteLength);\n const dstOffset = 0;\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n // this.debugData = null;\n\n return data;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n _invalidateDebugData() {\n this.debugData = null;\n }\n\n _getWriteTarget() {\n return this.target;\n // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getReadTarget() {\n return this.target;\n return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;\n }\n}\n\n// static MAP_READ = 0x01;\n// static MAP_WRITE = 0x02;\n// static COPY_SRC = 0x0004;\n// static COPY_DST = 0x0008;\n// static INDEX = 0x0010;\n// static VERTEX = 0x0020;\n// static UNIFORM = 0x0040;\n// static STORAGE = 0x0080;\n// static INDIRECT = 0x0100;\n// static QUERY_RESOLVE = 0x0200;\n\nfunction getWebGLTarget(usage: number): GL {\n if (usage & Buffer.INDEX) {\n return GL.ELEMENT_ARRAY_BUFFER;\n }\n if (usage & Buffer.VERTEX) {\n return GL.ARRAY_BUFFER;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.UNIFORM_BUFFER;\n }\n\n // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.\n // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.\n // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.\n // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.\n // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n return GL.ARRAY_BUFFER;\n}\n\nfunction getWebGLUsage(usage: number): GL {\n if (usage & Buffer.INDEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.VERTEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.DYNAMIC_DRAW;\n }\n return GL.DYNAMIC_DRAW;\n}\n"],"file":"webgl-buffer.js"}
1
+ {"version":3,"file":"webgl-buffer.js","names":["Buffer","assert","GL","DEBUG_DATA_LENGTH","WEBGLBuffer","constructor","device","props","arguments","length","undefined","_defineProperty","UNSIGNED_SHORT","gl","gl2","handle","createBuffer","setSpectorMetadata","data","glTarget","getWebGLTarget","usage","glUsage","getWebGLUsage","glIndexType","indexType","UNSIGNED_INT","debugData","_initWithData","byteOffset","byteLength","_initWithByteLength","ArrayBuffer","isView","_getWriteTarget","bindBuffer","bufferData","bufferSubData","slice","bytesUsed","trackAllocatedMemory","Float32Array","destroy","destroyed","removeStats","trackDeallocatedMemory","deleteBuffer","write","srcOffset","isWebGL2","COPY_WRITE_BUFFER","assertWebGL2","readAsync","Uint8Array","dstOffset","COPY_READ_BUFFER","getBufferSubData","_invalidateDebugData","_getReadTarget","INDEX","ELEMENT_ARRAY_BUFFER","VERTEX","ARRAY_BUFFER","UNIFORM","UNIFORM_BUFFER","STATIC_DRAW","DYNAMIC_DRAW"],"sources":["../../../src/adapter/resources/webgl-buffer.ts"],"sourcesContent":["import type {BufferProps} from '@luma.gl/core';\nimport {Buffer, assert} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {WebGLDevice} from '../webgl-device';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n/** WebGL Buffer interface */\nexport class WEBGLBuffer extends Buffer {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLBuffer;\n\n /** Target in OpenGL defines the type of buffer */\n readonly glTarget: GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER;\n /** Usage is a hint on how frequently the buffer will be updates */\n readonly glUsage: GL.STATIC_DRAW | GL.DYNAMIC_DRAW;\n /** Index type is needed when issuing draw calls, so we pre-compute it */\n readonly glIndexType: GL.UNSIGNED_SHORT | GL.UNSIGNED_INT = GL.UNSIGNED_SHORT;\n\n /** Number of bytes allocated on the GPU for this buffer */\n byteLength: number;\n /** Number of bytes used */\n bytesUsed: number;\n /** A partial CPU-side copy of the data in this buffer, for debugging purposes */\n debugData: ArrayBuffer | null = null;\n\n constructor(device: WebGLDevice, props: BufferProps = {}) {\n super(device, props);\n\n this.device = device;\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n\n const handle = typeof props === 'object' ? (props ).handle : undefined;\n this.handle = handle || this.gl.createBuffer();\n device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data});\n\n // - In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // - In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.glTarget = getWebGLTarget(this.props.usage);\n this.glUsage = getWebGLUsage(this.props.usage);\n this.glIndexType = this.props.indexType === 'uint32' ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;\n\n this.debugData = null;\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._initWithData(props.data, props.byteOffset, props.byteLength);\n } else {\n this._initWithByteLength(props.byteLength || 0);\n }\n }\n\n // PRIVATE METHODS\n\n /** Allocate a new buffer and initialize to contents of typed array */\n _initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {\n assert(ArrayBuffer.isView(data));\n\n const glTarget = this._getWriteTarget();\n this.gl.bindBuffer(glTarget, this.handle);\n this.gl.bufferData(glTarget, byteLength, this.glUsage);\n this.gl.bufferSubData(glTarget, byteOffset, data);\n this.gl.bindBuffer(glTarget, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _initWithByteLength(byteLength: number): this {\n assert(byteLength >= 0);\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const glTarget = this._getWriteTarget();\n\n this.gl.bindBuffer(glTarget, this.handle);\n this.gl.bufferData(glTarget, data, this.glUsage);\n this.gl.bindBuffer(glTarget, null);\n\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n return this;\n }\n\n override destroy(): void {\n if (!this.destroyed && this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n this.destroyed = true;\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n override write(data: ArrayBufferView, byteOffset: number = 0): void {\n const srcOffset = 0;\n const byteLength = undefined; // data.byteLength;\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const glTarget = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;\n this.gl.bindBuffer(glTarget, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n this.device.assertWebGL2();\n this.gl2.bufferSubData(glTarget, byteOffset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(glTarget, byteOffset, data);\n }\n this.gl.bindBuffer(glTarget, null);\n\n // TODO - update local `data` if offsets are right\n // this.debugData = data.slice(byteOffset, 40);\n }\n\n /** Read data from the buffer */\n override async readAsync(\n byteOffset: number = 0,\n byteLength?: number\n ): Promise<ArrayBuffer> {\n this.device.assertWebGL2();\n\n const data = new Uint8Array(byteLength);\n const dstOffset = 0;\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n // this.debugData = null;\n\n return data;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n _invalidateDebugData() {\n this.debugData = null;\n }\n\n _getWriteTarget() {\n return this.glTarget;\n // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.glTarget;\n }\n\n _getReadTarget() {\n return this.glTarget;\n // return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.glTarget;\n }\n}\n\n// static MAP_READ = 0x01;\n// static MAP_WRITE = 0x02;\n// static COPY_SRC = 0x0004;\n// static COPY_DST = 0x0008;\n// static INDEX = 0x0010;\n// static VERTEX = 0x0020;\n// static UNIFORM = 0x0040;\n// static STORAGE = 0x0080;\n// static INDIRECT = 0x0100;\n// static QUERY_RESOLVE = 0x0200;\n\nfunction getWebGLTarget(usage: number): GL.ARRAY_BUFFER | GL.ELEMENT_ARRAY_BUFFER | GL.UNIFORM_BUFFER {\n if (usage & Buffer.INDEX) {\n return GL.ELEMENT_ARRAY_BUFFER;\n }\n if (usage & Buffer.VERTEX) {\n return GL.ARRAY_BUFFER;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.UNIFORM_BUFFER;\n }\n\n // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.\n // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.\n // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.\n // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.\n // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n return GL.ARRAY_BUFFER;\n}\n\n/** @todo usage is not passed correctly */\nfunction getWebGLUsage(usage: number): GL.STATIC_DRAW | GL.DYNAMIC_DRAW {\n if (usage & Buffer.INDEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.VERTEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.DYNAMIC_DRAW;\n }\n return GL.STATIC_DRAW;\n}\n"],"mappings":"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"}
@@ -1,25 +1,31 @@
1
- import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/api';
2
- import WebGLDevice from '../webgl-device';
3
- declare type CopyBufferToBufferCommand = {
1
+ import type { CopyBufferToBufferOptions, CopyBufferToTextureOptions, CopyTextureToBufferOptions, CopyTextureToTextureOptions } from '@luma.gl/core';
2
+ import { CommandBuffer } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { WebGLDevice } from '../webgl-device';
5
+ type CopyBufferToBufferCommand = {
4
6
  name: 'copy-buffer-to-buffer';
5
7
  options: CopyBufferToBufferOptions;
6
8
  };
7
- declare type CopyBufferToTextureCommand = {
9
+ type CopyBufferToTextureCommand = {
8
10
  name: 'copy-buffer-to-texture';
9
11
  options: CopyBufferToTextureOptions;
10
12
  };
11
- declare type CopyTextureToBufferCommand = {
13
+ type CopyTextureToBufferCommand = {
12
14
  name: 'copy-texture-to-buffer';
13
15
  options: CopyTextureToBufferOptions;
14
16
  };
15
- declare type CopyTextureToTextureCommand = {
17
+ type CopyTextureToTextureCommand = {
16
18
  name: 'copy-texture-to-texture';
17
19
  options: CopyTextureToTextureOptions;
18
20
  };
19
- declare type Command = CopyBufferToBufferCommand | CopyBufferToTextureCommand | CopyTextureToBufferCommand | CopyTextureToTextureCommand;
20
- export default class CommandBuffer {
21
+ type Command = CopyBufferToBufferCommand | CopyBufferToTextureCommand | CopyTextureToBufferCommand | CopyTextureToTextureCommand;
22
+ export declare class WEBGLCommandBuffer extends CommandBuffer {
23
+ device: WebGLDevice;
21
24
  commands: Command[];
25
+ constructor(device: WebGLDevice);
26
+ submitCommands(commands?: Command[]): void;
22
27
  }
23
- export declare function submitCommands(device: WebGLDevice, commands?: Command[]): void;
28
+ export declare function glFormatToComponents(format: any): 1 | 2 | 3 | 4;
29
+ export declare function glTypeToBytes(type: GL): 1 | 2 | 4;
24
30
  export {};
25
31
  //# sourceMappingURL=webgl-command-buffer.d.ts.map
@@ -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":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EAId,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAGtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAS5C,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,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAEb,MAAM,EAAE,WAAW;IAK/B,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAkB;CAkBnD;AAyQD,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAmB1D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAcjD"}