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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +42 -47
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +51 -19
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +14 -21
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +60 -115
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +27 -57
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +34 -41
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +49 -78
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +169 -43
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +46 -155
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +91 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +107 -230
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +10 -19
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +19 -31
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +119 -235
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +166 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +74 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +214 -128
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +23 -48
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
  127. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  128. package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
  129. package/dist/classic/buffer-with-accessor.js.map +1 -0
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +200 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +38 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +15 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +1 -21
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +16 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +10 -32
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +10390 -0
  202. package/dist/index.cjs +6615 -0
  203. package/dist/index.d.ts +27 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +37 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +124 -36
  213. package/src/adapter/converters/sampler-parameters.ts +22 -9
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +267 -194
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +13 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +17 -10
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +59 -58
  231. package/src/adapter/resources/webgl-command-buffer.ts +333 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +89 -133
  235. package/src/adapter/resources/webgl-render-pass.ts +160 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +254 -174
  237. package/src/adapter/resources/webgl-sampler.ts +15 -9
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +120 -90
  240. package/src/adapter/resources/webgl-vertex-array.ts +279 -0
  241. package/src/adapter/webgl-canvas-context.ts +16 -14
  242. package/src/adapter/webgl-device.ts +321 -78
  243. package/src/classic/accessor.ts +7 -17
  244. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +314 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +19 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +20 -16
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +69 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  273. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  274. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  275. package/dist/adapter/helpers/uniforms.js.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  277. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  279. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  280. package/dist/bundle.d.ts +0 -2
  281. package/dist/bundle.d.ts.map +0 -1
  282. package/dist/bundle.js +0 -5
  283. package/dist/bundle.js.map +0 -1
  284. package/dist/classic/buffer.d.ts.map +0 -1
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -144
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/context/context/context-state.ts +0 -41
  522. package/src/context/context/create-context.ts +0 -110
  523. package/src/context/context/device-pixels.ts +0 -152
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -283
@@ -1,144 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert, checkProps } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getTypedArrayFromGLType } from './typed-array-utils';
5
- const DEFAULT_ACCESSOR_VALUES = {
6
- offset: 0,
7
- stride: 0,
8
- type: GL.FLOAT,
9
- size: 1,
10
- divisor: 0,
11
- normalized: false,
12
- integer: false
13
- };
14
- const PROP_CHECKS = {
15
- deprecatedProps: {
16
- instanced: 'divisor',
17
- isInstanced: 'divisor'
18
- }
19
- };
20
- export default class Accessor {
21
- static getBytesPerElement(accessor) {
22
- const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);
23
- return ArrayType.BYTES_PER_ELEMENT;
24
- }
25
-
26
- static getBytesPerVertex(accessor) {
27
- assert(accessor.size);
28
- const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);
29
- return ArrayType.BYTES_PER_ELEMENT * accessor.size;
30
- }
31
-
32
- static resolve(...accessors) {
33
- return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]);
34
- }
35
-
36
- constructor(...accessors) {
37
- _defineProperty(this, "offset", void 0);
38
-
39
- _defineProperty(this, "stride", void 0);
40
-
41
- _defineProperty(this, "type", void 0);
42
-
43
- _defineProperty(this, "size", void 0);
44
-
45
- _defineProperty(this, "divisor", void 0);
46
-
47
- _defineProperty(this, "normalized", void 0);
48
-
49
- _defineProperty(this, "integer", void 0);
50
-
51
- _defineProperty(this, "buffer", void 0);
52
-
53
- _defineProperty(this, "index", void 0);
54
-
55
- accessors.forEach(accessor => this._assign(accessor));
56
- Object.freeze(this);
57
- }
58
-
59
- toString() {
60
- return JSON.stringify(this);
61
- }
62
-
63
- get BYTES_PER_ELEMENT() {
64
- return Accessor.getBytesPerElement(this);
65
- }
66
-
67
- get BYTES_PER_VERTEX() {
68
- return Accessor.getBytesPerVertex(this);
69
- }
70
-
71
- _assign(props = {}) {
72
- props = checkProps('Accessor', props, PROP_CHECKS);
73
-
74
- if (props.type !== undefined) {
75
- this.type = props.type;
76
-
77
- if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {
78
- this.integer = true;
79
- }
80
- }
81
-
82
- if (props.size !== undefined) {
83
- this.size = props.size;
84
- }
85
-
86
- if (props.offset !== undefined) {
87
- this.offset = props.offset;
88
- }
89
-
90
- if (props.stride !== undefined) {
91
- this.stride = props.stride;
92
- }
93
-
94
- if (props.normalize !== undefined) {
95
- this.normalized = props.normalize;
96
- }
97
-
98
- if (props.normalized !== undefined) {
99
- this.normalized = props.normalized;
100
- }
101
-
102
- if (props.integer !== undefined) {
103
- this.integer = props.integer;
104
- }
105
-
106
- if (props.divisor !== undefined) {
107
- this.divisor = props.divisor;
108
- }
109
-
110
- if (props.buffer !== undefined) {
111
- this.buffer = props.buffer;
112
- }
113
-
114
- if (props.index !== undefined) {
115
- if (typeof props.index === 'boolean') {
116
- this.index = props.index ? 1 : 0;
117
- } else {
118
- this.index = props.index;
119
- }
120
- }
121
-
122
- if (props.instanced !== undefined) {
123
- this.divisor = props.instanced ? 1 : 0;
124
- }
125
-
126
- if (props.isInstanced !== undefined) {
127
- this.divisor = props.isInstanced ? 1 : 0;
128
- }
129
-
130
- if (this.offset === undefined) delete this.offset;
131
- if (this.stride === undefined) delete this.stride;
132
- if (this.type === undefined) delete this.type;
133
- if (this.size === undefined) delete this.size;
134
- if (this.divisor === undefined) delete this.divisor;
135
- if (this.normalized === undefined) delete this.normalized;
136
- if (this.integer === undefined) delete this.integer;
137
- if (this.buffer === undefined) delete this.buffer;
138
- if (this.index === undefined) delete this.index;
139
- return this;
140
- }
141
-
142
- }
143
- export { DEFAULT_ACCESSOR_VALUES };
144
- //# sourceMappingURL=accessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/classic/accessor.ts"],"names":["assert","checkProps","GL","getTypedArrayFromGLType","DEFAULT_ACCESSOR_VALUES","offset","stride","type","FLOAT","size","divisor","normalized","integer","PROP_CHECKS","deprecatedProps","instanced","isInstanced","Accessor","getBytesPerElement","accessor","ArrayType","BYTES_PER_ELEMENT","getBytesPerVertex","resolve","accessors","constructor","forEach","_assign","Object","freeze","toString","JSON","stringify","BYTES_PER_VERTEX","props","undefined","INT","UNSIGNED_INT","normalize","buffer","index"],"mappings":"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","sourcesContent":["import {assert, checkProps, Buffer, AccessorObject} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from './typed-array-utils';\n\n// export interface AccessorObject {\n// offset?: number;\n// stride?: number;\n// type?: number;\n// size?: number;\n// divisor?: number;\n// normalized?: boolean;\n// integer?: boolean;\n\n// buffer?: Buffer;\n// index?: number;\n// }\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor implements AccessorObject {\n offset?: number;\n stride?: number;\n type?: number;\n size?: number;\n divisor?: number;\n normalized?: boolean;\n integer?: boolean;\n\n buffer?: Buffer;\n index?: number;\n\n static getBytesPerElement(accessor: Accessor | AccessorObject): number {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor: AccessorObject): number {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors: AccessorObject[]): Accessor {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors: AccessorObject[]) {\n accessors.forEach((accessor) => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT(): number {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX(): number {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props: AccessorObject = {}): this {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n // @ts-expect-error\n if (props.normalize !== undefined) {\n // @ts-expect-error\n this.normalized = props.normalize;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n // @ts-expect-error\n if (props.instanced !== undefined) {\n // @ts-expect-error\n this.divisor = props.instanced ? 1 : 0;\n }\n // @ts-expect-error\n if (props.isInstanced !== undefined) {\n // @ts-expect-error\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n if (this.offset === undefined) delete this.offset;\n if (this.stride === undefined) delete this.stride;\n if (this.type === undefined) delete this.type;\n if (this.size === undefined) delete this.size;\n if (this.divisor === undefined) delete this.divisor;\n if (this.normalized === undefined) delete this.normalized;\n if (this.integer === undefined) delete this.integer;\n \n if (this.buffer === undefined) delete this.buffer;\n if (this.index === undefined) delete this.index;\n \n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n"],"file":"accessor.js"}
@@ -1,384 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert, checkProps } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { assertWebGL2Context } from '../context/context/webgl-checks';
5
- import Accessor from './accessor';
6
- import { getGLTypeFromTypedArray, getTypedArrayFromGLType } from './typed-array-utils';
7
- import WebGLDevice from '../adapter/webgl-device';
8
- import WEBGLBuffer from '../adapter/resources/webgl-buffer';
9
- const DEBUG_DATA_LENGTH = 10;
10
- const DEPRECATED_PROPS = {
11
- offset: 'accessor.offset',
12
- stride: 'accessor.stride',
13
- type: 'accessor.type',
14
- size: 'accessor.size',
15
- divisor: 'accessor.divisor',
16
- normalized: 'accessor.normalized',
17
- integer: 'accessor.integer',
18
- instanced: 'accessor.divisor',
19
- isInstanced: 'accessor.divisor'
20
- };
21
- const PROP_CHECKS_INITIALIZE = {
22
- removedProps: {},
23
- replacedProps: {
24
- bytes: 'byteLength'
25
- },
26
- deprecatedProps: DEPRECATED_PROPS
27
- };
28
- const PROP_CHECKS_SET_PROPS = {
29
- removedProps: DEPRECATED_PROPS
30
- };
31
-
32
- function getWEBGLBufferProps(props) {
33
- if (ArrayBuffer.isView(props)) {
34
- return {
35
- data: props
36
- };
37
- } else if (typeof props === 'number') {
38
- return {
39
- byteLength: props
40
- };
41
- }
42
-
43
- props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);
44
- const bufferProps = { ...props
45
- };
46
-
47
- if (bufferProps.offset) {
48
- bufferProps.byteOffset = bufferProps.offset;
49
- }
50
-
51
- return bufferProps;
52
- }
53
-
54
- export default class ClassicBuffer extends WEBGLBuffer {
55
- constructor(device, props = {}) {
56
- super(WebGLDevice.attach(device), getWEBGLBufferProps(props));
57
-
58
- _defineProperty(this, "usage", void 0);
59
-
60
- _defineProperty(this, "accessor", void 0);
61
-
62
- this.setAccessor(Object.assign({}, props, props.accessor));
63
-
64
- if (this.props.data) {
65
- const type = getGLTypeFromTypedArray(this.props.data);
66
- assert(type);
67
- this.setAccessor(new Accessor(this.accessor, {
68
- type
69
- }));
70
- }
71
-
72
- Object.seal(this);
73
- }
74
-
75
- destroy() {
76
- if (this.handle) {
77
- this.removeStats();
78
- this.trackDeallocatedMemory();
79
- this.gl.deleteBuffer(this.handle);
80
- this.handle = null;
81
- }
82
- }
83
-
84
- write(data, byteOffset) {
85
- this.subData({
86
- data,
87
- offset: byteOffset
88
- });
89
- }
90
-
91
- getElementCount(accessor = this.accessor) {
92
- return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
93
- }
94
-
95
- getVertexCount(accessor = this.accessor) {
96
- return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));
97
- }
98
-
99
- initialize(props = {}) {
100
- if (ArrayBuffer.isView(props)) {
101
- props = {
102
- data: props
103
- };
104
- }
105
-
106
- if (Number.isFinite(props)) {
107
- props = {
108
- byteLength: props
109
- };
110
- }
111
-
112
- props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);
113
- this.webglUsage = props.webglUsage || GL.STATIC_DRAW;
114
- this.debugData = null;
115
- this.setAccessor(Object.assign({}, props, props.accessor));
116
-
117
- if (props.data) {
118
- this._setData(props.data, props.offset, props.byteLength);
119
- } else {
120
- this._setByteLength(props.byteLength || 0);
121
- }
122
-
123
- return this;
124
- }
125
-
126
- setProps(props) {
127
- props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);
128
-
129
- if ('accessor' in props) {
130
- this.setAccessor(props.accessor);
131
- }
132
-
133
- return this;
134
- }
135
-
136
- setAccessor(accessor) {
137
- accessor = Object.assign({}, accessor);
138
- delete accessor.buffer;
139
- this.accessor = new Accessor(accessor);
140
- return this;
141
- }
142
-
143
- reallocate(byteLength) {
144
- if (byteLength > this.byteLength) {
145
- this._setByteLength(byteLength);
146
-
147
- return true;
148
- }
149
-
150
- this.bytesUsed = byteLength;
151
- return false;
152
- }
153
-
154
- setData(props) {
155
- return this.initialize(props);
156
- }
157
-
158
- subData(options) {
159
- if (ArrayBuffer.isView(options)) {
160
- options = {
161
- data: options
162
- };
163
- }
164
-
165
- const {
166
- data,
167
- offset = 0,
168
- srcOffset = 0
169
- } = options;
170
- const byteLength = options.byteLength || options.length;
171
- assert(data);
172
- const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
173
- this.gl.bindBuffer(target, this.handle);
174
-
175
- if (srcOffset !== 0 || byteLength !== undefined) {
176
- assertWebGL2Context(this.gl);
177
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
178
- } else {
179
- this.gl.bufferSubData(target, offset, data);
180
- }
181
-
182
- this.gl.bindBuffer(target, null);
183
- this.debugData = null;
184
-
185
- this._inferType(data);
186
-
187
- return this;
188
- }
189
-
190
- copyData(options) {
191
- const {
192
- sourceBuffer,
193
- readOffset = 0,
194
- writeOffset = 0,
195
- size
196
- } = options;
197
- const {
198
- gl,
199
- gl2
200
- } = this;
201
- assertWebGL2Context(gl);
202
- gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);
203
- gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);
204
- gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);
205
- gl.bindBuffer(GL.COPY_READ_BUFFER, null);
206
- gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);
207
- this.debugData = null;
208
- return this;
209
- }
210
-
211
- getData(options) {
212
- let {
213
- dstData = null,
214
- length = 0
215
- } = options || {};
216
- const {
217
- srcByteOffset = 0,
218
- dstOffset = 0
219
- } = options || {};
220
- assertWebGL2Context(this.gl);
221
- const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {
222
- clamped: false
223
- });
224
-
225
- const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);
226
-
227
- const dstElementOffset = dstOffset;
228
- let dstAvailableElementCount;
229
- let dstElementCount;
230
-
231
- if (dstData) {
232
- dstElementCount = dstData.length;
233
- dstAvailableElementCount = dstElementCount - dstElementOffset;
234
- } else {
235
- dstAvailableElementCount = Math.min(sourceAvailableElementCount, length || sourceAvailableElementCount);
236
- dstElementCount = dstElementOffset + dstAvailableElementCount;
237
- }
238
-
239
- const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);
240
- length = length || copyElementCount;
241
- assert(length <= copyElementCount);
242
- dstData = dstData || new ArrayType(dstElementCount);
243
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
244
- this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);
245
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
246
- return dstData;
247
- }
248
-
249
- bind(options) {
250
- const {
251
- target = this.target,
252
- index = this.accessor && this.accessor.index,
253
- offset = 0,
254
- size
255
- } = options || {};
256
-
257
- if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {
258
- if (size !== undefined) {
259
- this.gl2.bindBufferRange(target, index, this.handle, offset, size);
260
- } else {
261
- assert(offset === 0);
262
- this.gl2.bindBufferBase(target, index, this.handle);
263
- }
264
- } else {
265
- this.gl.bindBuffer(target, this.handle);
266
- }
267
-
268
- return this;
269
- }
270
-
271
- unbind(options) {
272
- const {
273
- target = this.target,
274
- index = this.accessor && this.accessor.index
275
- } = options || {};
276
- const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;
277
-
278
- if (isIndexedBuffer) {
279
- this.gl2.bindBufferBase(target, index, null);
280
- } else {
281
- this.gl.bindBuffer(target, null);
282
- }
283
-
284
- return this;
285
- }
286
-
287
- getDebugData() {
288
- if (!this.debugData) {
289
- this.debugData = this.getData({
290
- length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)
291
- });
292
- return {
293
- data: this.debugData,
294
- changed: true
295
- };
296
- }
297
-
298
- return {
299
- data: this.debugData,
300
- changed: false
301
- };
302
- }
303
-
304
- invalidateDebugData() {
305
- this.debugData = null;
306
- }
307
-
308
- _setData(data, offset = 0, byteLength = data.byteLength + offset) {
309
- assert(ArrayBuffer.isView(data));
310
- this.trackDeallocatedMemory();
311
-
312
- const target = this._getTarget();
313
-
314
- this.gl.bindBuffer(target, this.handle);
315
- this.gl.bufferData(target, byteLength, this.webglUsage);
316
- this.gl.bufferSubData(target, offset, data);
317
- this.gl.bindBuffer(target, null);
318
- this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
319
- this.bytesUsed = byteLength;
320
- this.byteLength = byteLength;
321
- this.trackAllocatedMemory(byteLength);
322
- const type = getGLTypeFromTypedArray(data);
323
- assert(type);
324
- this.setAccessor(new Accessor(this.accessor, {
325
- type
326
- }));
327
- return this;
328
- }
329
-
330
- _setByteLength(byteLength, webglUsage = this.webglUsage) {
331
- assert(byteLength >= 0);
332
- this.trackDeallocatedMemory();
333
- let data = byteLength;
334
-
335
- if (byteLength === 0) {
336
- data = new Float32Array(0);
337
- }
338
-
339
- const target = this._getTarget();
340
-
341
- this.gl.bindBuffer(target, this.handle);
342
- this.gl.bufferData(target, data, webglUsage);
343
- this.gl.bindBuffer(target, null);
344
- this.webglUsage = webglUsage;
345
- this.debugData = null;
346
- this.bytesUsed = byteLength;
347
- this.byteLength = byteLength;
348
- this.trackAllocatedMemory(byteLength);
349
- return this;
350
- }
351
-
352
- _getTarget() {
353
- return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;
354
- }
355
-
356
- _getAvailableElementCount(srcByteOffset) {
357
- const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {
358
- clamped: false
359
- });
360
- const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;
361
- return this.getElementCount() - sourceElementOffset;
362
- }
363
-
364
- _inferType(data) {
365
- if (!this.accessor.type) {
366
- this.setAccessor(new Accessor(this.accessor, {
367
- type: getGLTypeFromTypedArray(data)
368
- }));
369
- }
370
- }
371
-
372
- getParameter(pname) {
373
- this.gl.bindBuffer(this.target, this.handle);
374
- const value = this.gl.getBufferParameter(this.target, pname);
375
- this.gl.bindBuffer(this.target, null);
376
- return value;
377
- }
378
-
379
- get type() {
380
- return this.accessor.type;
381
- }
382
-
383
- }
384
- //# sourceMappingURL=buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/classic/buffer.ts"],"names":["assert","checkProps","GL","assertWebGL2Context","Accessor","getGLTypeFromTypedArray","getTypedArrayFromGLType","WebGLDevice","WEBGLBuffer","DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","getWEBGLBufferProps","props","ArrayBuffer","isView","data","byteLength","bufferProps","byteOffset","ClassicBuffer","constructor","device","attach","setAccessor","Object","assign","accessor","seal","destroy","handle","removeStats","trackDeallocatedMemory","gl","deleteBuffer","write","subData","getElementCount","Math","round","getBytesPerElement","getVertexCount","getBytesPerVertex","initialize","Number","isFinite","webglUsage","STATIC_DRAW","debugData","_setData","_setByteLength","setProps","buffer","reallocate","bytesUsed","setData","options","srcOffset","length","target","webgl2","COPY_WRITE_BUFFER","bindBuffer","undefined","bufferSubData","_inferType","copyData","sourceBuffer","readOffset","writeOffset","gl2","COPY_READ_BUFFER","copyBufferSubData","getData","dstData","srcByteOffset","dstOffset","ArrayType","FLOAT","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","bind","index","UNIFORM_BUFFER","TRANSFORM_FEEDBACK_BUFFER","bindBufferRange","bindBufferBase","unbind","isIndexedBuffer","getDebugData","changed","invalidateDebugData","_getTarget","bufferData","slice","trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","getParameter","pname","value","getBufferParameter"],"mappings":"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","sourcesContent":["import type {Device, BufferProps, TypedArray} from '@luma.gl/api';\nimport {Buffer, log, assert, checkProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {AccessorObject} from '../types';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from './typed-array-utils';\n\nimport WebGLDevice from '../adapter/webgl-device';\nimport WEBGLBuffer from '../adapter/resources/webgl-buffer';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nfunction getWEBGLBufferProps(props: ClassicBufferProps | ArrayBufferView | number): BufferProps {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n return {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n else if (typeof props === 'number') {\n return {byteLength: props as number};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n const bufferProps = {...props as ClassicBufferProps};\n if (bufferProps.offset) {\n bufferProps.byteOffset = bufferProps.offset;\n }\n return bufferProps;\n}\n\n/** WebGL Buffer interface */\nexport type ClassicBufferProps = BufferProps & {\n handle?: WebGLBuffer;\n\n target?: number;\n webglUsage?: number;\n\n accessor?: AccessorObject;\n\n /** @deprecated */\n index?: number;\n /** @deprecated */\n offset?: number;\n /** @deprecated */\n size?: number;\n /** @deprecated */\n type?: number\n}\n\n/** WebGL Buffer interface */\nexport default class ClassicBuffer extends WEBGLBuffer {\n usage: number;\n accessor: Accessor;\n\n constructor(device: Device | WebGLRenderingContext, props?: ClassicBufferProps);\n constructor(device: Device | WebGLRenderingContext, data: ArrayBufferView | number[]);\n constructor(device: Device | WebGLRenderingContext, byteLength: number);\n\n constructor(device: Device | WebGLRenderingContext, props = {}) {\n super(WebGLDevice.attach(device), getWEBGLBufferProps(props));\n\n // Base class initializes\n // this.initialize(props);\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, (props as ClassicBufferProps).accessor));\n\n // infer GL type from supplied typed array\n if (this.props.data) {\n const type = getGLTypeFromTypedArray(this.props.data as TypedArray);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n }\n\n Object.seal(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: TypedArray, byteOffset?: number): void {\n this.subData({data, offset: byteOffset});\n }\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props: ClassicBufferProps = {}): this {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n // @ts-expect-error\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.webglUsage = props.webglUsage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props: ClassicBufferProps): this {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor: AccessorObject | Accessor): this {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n // @ts-expect-error\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength: number): boolean {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props: ClassicBufferProps) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(options: TypedArray | {data: TypedArray, offset?: number; srcOffset?: number; byteLength?: number, length?: number}) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(options)) {\n options = {data: options};\n }\n\n const {data, offset = 0, srcOffset = 0} = options;\n const byteLength = options.byteLength || options.length;\n\n assert(data);\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 // @ts-expect-error\n const target = this.gl.webgl2 ? 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 assertWebGL2Context(this.gl);\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n /**\n * Copies part of the data of another buffer into this buffer\n * @note WEBGL2 ONLY\n */\n copyData(options: {\n sourceBuffer: any;\n readOffset?: number;\n writeOffset?: number;\n size: any;\n }): this {\n const {sourceBuffer, readOffset = 0, writeOffset = 0, size} = options;\n const {gl, gl2} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n /**\n * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n * @note WEBGL2 ONLY\n */\n getData(options?: {\n dstData?: any;\n srcByteOffset?: number;\n dstOffset?: number;\n length?: number;\n }): any {\n let {dstData = null, length = 0} = options || {};\n const {srcByteOffset = 0, dstOffset = 0} = options || {};\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\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, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind(options?: {target?: number; index?: any; offset?: number; size: any}): this {\n const {\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = options || {};\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl2.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl2.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind(options?: {target?: any; index?: any}): this {\n const {target = this.target, index = this.accessor && this.accessor.index} = options || {};\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl2.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData(): {\n data: any;\n changed: boolean;\n } {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset: number = 0, byteLength: number = data.byteLength + offset): this {\n assert(ArrayBuffer.isView(data));\n\n this.trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.webglUsage);\n this.gl.bufferSubData(target, offset, 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 // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength: number, webglUsage = this.webglUsage): this {\n assert(byteLength >= 0);\n\n this.trackDeallocatedMemory();\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._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, webglUsage);\n this.gl.bindBuffer(target, null);\n\n this.webglUsage = webglUsage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\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 _getTarget() {\n // @ts-expect-error\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset: number) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n getParameter(pname: GL): any {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n /** @deprecated Use Buffer.accessor.type */\n get type() {\n return this.accessor.type;\n }\n}\n"],"file":"buffer.js"}