@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,13 +1,11 @@
1
- import { Resource } from '@luma.gl/api';
2
- import type { Device, ResourceProps } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import WebGLDevice from '../webgl-device';
1
+ import { Resource } from '@luma.gl/core';
2
+ import type { Device, ResourceProps } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { WebGLDevice } from '../webgl-device';
5
5
  /**
6
6
  * Base class for WebGL object wrappers
7
7
  */
8
- export default abstract class WebGLResource<Props> extends Resource<Props> {
9
- id: string;
10
- userData: any;
8
+ export declare abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {
11
9
  readonly device: WebGLDevice;
12
10
  readonly gl: WebGLRenderingContext;
13
11
  readonly gl2: WebGL2RenderingContext;
@@ -17,7 +15,6 @@ export default abstract class WebGLResource<Props> extends Resource<Props> {
17
15
  constructor(device: Device, props: Props, defaultProps: Required<Props>);
18
16
  toString(): string;
19
17
  get handle(): any;
20
- destroy(): void;
21
18
  delete({ deleteChildren }?: {
22
19
  deleteChildren?: boolean;
23
20
  }): this;
@@ -29,7 +26,7 @@ export default abstract class WebGLResource<Props> extends Resource<Props> {
29
26
  * @param name
30
27
  * @return param
31
28
  */
32
- getParameter(pname: number, props?: {}): any;
29
+ getParameter(pname: number, props?: any): any;
33
30
  getParameters(options?: {
34
31
  parameters?: any;
35
32
  keys?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-resource.d.ts","sourceRoot":"","sources":["../../../src/adapter/objects/webgl-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAkC,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C;;GAEG;AACF,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa,CAAC,KAAK,CAAE,SAAQ,QAAQ,CAAC,KAAK,CAAC;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,MAAM,CAAS;IAEvB,UAAU,SAAK;gBAEH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IAgCvE,QAAQ,IAAI,MAAM;IAIlB,IAAI,MAAM,QAWT;IAED,OAAO,IAAI,IAAI;IAIf,MAAM,CAAC,EAAC,cAAsB,EAAC;;KAAK;IAmBpC,IAAI,CAAC,YAAY,MAAc;IAuB/B,MAAM;IAIN;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,KAAK,GAAG,GAAG;IAiC5C,aAAa,CAAC,OAAO,GAAE;QAAC,UAAU,CAAC,MAAC;QAAC,IAAI,CAAC,MAAA;KAAM;IAoChD;;;;;;;;OAQG;IACH,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAqClD,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC;IAQzC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IAK5E,UAAU,CAAC,KAAK,EAAE,aAAa;IAG/B,aAAa;IAIb,aAAa;IAIb,WAAW,CAAC,MAAM,EAAE,GAAG;IAIvB,kBAAkB;IAIlB,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAI5D,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;CAuC7C"}
1
+ {"version":3,"file":"webgl-resource.d.ts","sourceRoot":"","sources":["../../../src/adapter/objects/webgl-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAkC,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACzD,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAO5C;;GAEG;AACH,8BAAsB,aAAa,CAAC,KAAK,SAAS,aAAa,CAAE,SAAQ,QAAQ,CAAC,KAAK,CAAC;IACtF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,MAAM,CAAS;IAEvB,UAAU,SAAK;gBAEH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IA6B9D,QAAQ,IAAI,MAAM;IAI3B,IAAI,MAAM,QAWT;IAEQ,MAAM,CAAC,EAAC,cAAsB,EAAC;;KAAK;IAmB7C,IAAI,CAAC,YAAY,MAAc;IAuB/B,MAAM;IAIN;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,GAAQ,GAAG,GAAG;IAiCjD,aAAa,CAAC,OAAO,GAAE;QAAC,UAAU,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAM;IAoC1D;;;;;;;;OAQG;IACH,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAqClD,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC;IAQzC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IAK5E,UAAU,CAAC,KAAK,EAAE,aAAa;IAG/B,aAAa;IAIb,aAAa;IAIb,WAAW,CAAC,MAAM,EAAE,GAAG;IAIvB,kBAAkB;IAIlB,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAI5D,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;CAuC7C"}
@@ -1,117 +1,83 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Resource, assert, uid, stubRemovedMethods } from '@luma.gl/api';
3
- import { isWebGL2, assertWebGLContext } from '../../context/context/webgl-checks';
4
- import WebGLDevice from '../webgl-device';
5
- import { getKey, getKeyValue } from './constants-to-keys';
2
+ import { Resource, assert, uid, stubRemovedMethods } from '@luma.gl/core';
3
+ import { isWebGL2, assertWebGLContext } from "../../context/context/webgl-checks.js";
4
+ import { WebGLDevice } from "../webgl-device.js";
5
+ import { getKeyValue } from "./constants-to-keys.js";
6
6
  const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
7
- export default class WebGLResource extends Resource {
7
+ export class WebGLResource extends Resource {
8
8
  constructor(device, props, defaultProps) {
9
9
  super(device, props, defaultProps);
10
-
11
- _defineProperty(this, "id", void 0);
12
-
13
- _defineProperty(this, "userData", void 0);
14
-
15
10
  _defineProperty(this, "device", void 0);
16
-
17
11
  _defineProperty(this, "gl", void 0);
18
-
19
12
  _defineProperty(this, "gl2", void 0);
20
-
21
13
  _defineProperty(this, "_handle", void 0);
22
-
23
14
  _defineProperty(this, "_bound", false);
24
-
25
15
  _defineProperty(this, "byteLength", 0);
26
-
27
16
  this.device = WebGLDevice.attach(device);
28
17
  const gl = this.device.gl;
29
18
  assertWebGLContext(gl);
30
19
  const {
31
- id,
32
- userData = {}
20
+ id
33
21
  } = props || {};
34
22
  this.gl = gl;
35
23
  this.gl2 = gl;
36
24
  this.id = id || uid(this.constructor.name);
37
- this.userData = userData;
38
25
  this._handle = props === null || props === void 0 ? void 0 : props.handle;
39
-
40
26
  if (this._handle === undefined) {
41
27
  this._handle = this._createHandle();
42
28
  }
43
-
44
29
  this.byteLength = 0;
45
30
  }
46
-
47
31
  toString() {
48
32
  return "".concat(this.constructor.name, "(").concat(this.id, ")");
49
33
  }
50
-
51
34
  get handle() {
52
35
  return this._handle;
53
36
  }
54
-
55
- destroy() {
56
- this.delete();
57
- }
58
-
59
- delete({
60
- deleteChildren = false
61
- } = {}) {
37
+ delete() {
38
+ let {
39
+ deleteChildren = false
40
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
62
41
  const children = this._handle && this._deleteHandle(this._handle);
63
-
64
42
  if (this._handle) {
65
43
  this.removeStats();
66
44
  }
67
-
68
45
  this._handle = null;
69
-
70
46
  if (children && deleteChildren) {
71
- children.filter(Boolean).forEach(child => child.delete());
47
+ children.filter(Boolean).forEach(child => child.destroy());
72
48
  }
73
-
74
49
  return this;
75
50
  }
76
-
77
- bind(funcOrHandle = this.handle) {
51
+ bind() {
52
+ let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;
78
53
  if (typeof funcOrHandle !== 'function') {
79
54
  this._bindHandle(funcOrHandle);
80
-
81
55
  return this;
82
56
  }
83
-
84
57
  let value;
85
-
86
58
  if (!this._bound) {
87
59
  this._bindHandle(this.handle);
88
-
89
60
  this._bound = true;
90
61
  value = funcOrHandle();
91
62
  this._bound = false;
92
-
93
63
  this._bindHandle(null);
94
64
  } else {
95
65
  value = funcOrHandle();
96
66
  }
97
-
98
67
  return value;
99
68
  }
100
-
101
69
  unbind() {
102
70
  this.bind(null);
103
71
  }
104
-
105
- getParameter(pname, props = {}) {
72
+ getParameter(pname) {
73
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
106
74
  pname = getKeyValue(this.gl, pname);
107
75
  assert(pname);
108
76
  const parameters = this.constructor.PARAMETERS || {};
109
77
  const parameter = parameters[pname];
110
-
111
78
  if (parameter) {
112
79
  const isWebgl2 = isWebGL2(this.gl);
113
80
  const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
114
-
115
81
  if (!parameterAvailable) {
116
82
  const webgl1Default = parameter.webgl1;
117
83
  const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
@@ -119,11 +85,10 @@ export default class WebGLResource extends Resource {
119
85
  return defaultValue;
120
86
  }
121
87
  }
122
-
123
88
  return this._getParameter(pname, props);
124
89
  }
125
-
126
- getParameters(options = {}) {
90
+ getParameters() {
91
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
92
  const {
128
93
  parameters,
129
94
  keys
@@ -132,85 +97,64 @@ export default class WebGLResource extends Resource {
132
97
  const isWebgl2 = isWebGL2(this.gl);
133
98
  const values = {};
134
99
  const parameterKeys = parameters || Object.keys(PARAMETERS);
135
-
136
100
  for (const pname of parameterKeys) {
137
101
  const parameter = PARAMETERS[pname];
138
102
  const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
139
-
140
103
  if (parameterAvailable) {
141
- const key = keys ? getKey(this.gl, pname) : pname;
104
+ const key = keys ? this.device.getGLKey(pname) : pname;
142
105
  values[key] = this.getParameter(pname, options);
143
-
144
106
  if (keys && parameter.type === 'GLenum') {
145
- values[key] = getKey(this.gl, values[key]);
107
+ values[key] = this.device.getGLKey(values[key]);
146
108
  }
147
109
  }
148
110
  }
149
-
150
111
  return values;
151
112
  }
152
-
153
113
  setParameter(pname, value) {
154
114
  pname = getKeyValue(this.gl, pname);
155
115
  assert(pname);
156
116
  const parameters = this.constructor.PARAMETERS || {};
157
117
  const parameter = parameters[pname];
158
-
159
118
  if (parameter) {
160
119
  const isWebgl2 = isWebGL2(this.gl);
161
120
  const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
162
-
163
121
  if (!parameterAvailable) {
164
122
  throw new Error('Parameter not available on this platform');
165
123
  }
166
-
167
124
  if (parameter.type === 'GLenum') {
168
125
  value = getKeyValue(value);
169
126
  }
170
127
  }
171
-
172
128
  this._setParameter(pname, value);
173
-
174
129
  return this;
175
130
  }
176
-
177
131
  setParameters(parameters) {
178
132
  for (const pname in parameters) {
179
133
  this.setParameter(pname, parameters[pname]);
180
134
  }
181
-
182
135
  return this;
183
136
  }
184
-
185
137
  stubRemovedMethods(className, version, methodNames) {
186
138
  return stubRemovedMethods(this, className, version, methodNames);
187
139
  }
188
-
189
140
  initialize(props) {}
190
-
191
141
  _createHandle() {
192
142
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
193
143
  }
194
-
195
144
  _deleteHandle() {
196
145
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
197
146
  }
198
-
199
147
  _bindHandle(handle) {
200
148
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
201
149
  }
202
-
203
150
  _getOptsFromHandle() {
204
151
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
205
152
  }
206
-
207
153
  _getParameter(pname, props) {
208
154
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
209
155
  }
210
-
211
156
  _setParameter(pname, value) {
212
157
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
213
158
  }
214
-
215
159
  }
216
160
  //# sourceMappingURL=webgl-resource.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/objects/webgl-resource.ts"],"names":["Resource","assert","uid","stubRemovedMethods","isWebGL2","assertWebGLContext","WebGLDevice","getKey","getKeyValue","ERR_RESOURCE_METHOD_UNDEFINED","WebGLResource","constructor","device","props","defaultProps","attach","gl","id","userData","gl2","name","_handle","handle","undefined","_createHandle","byteLength","toString","destroy","delete","deleteChildren","children","_deleteHandle","removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","_bound","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/api';\nimport type {Device, ResourceProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';\nimport WebGLDevice from '../webgl-device';\n\n// Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?\nimport {getKey, getKeyValue} from './constants-to-keys';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n/**\n * Base class for WebGL object wrappers\n */\n export default abstract class WebGLResource<Props> extends Resource<Props> {\n id: string;\n userData: any;\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext;\n private _handle: any;\n\n private _bound = false;\n // Only meaningful for resources that allocate GPU memory\n byteLength = 0;\n\n constructor(device: Device, props: Props, defaultProps: Required<Props>) {\n super(device, props, defaultProps);\n\n this.device = WebGLDevice.attach(device);\n const gl = this.device.gl;\n\n assertWebGLContext(gl);\n\n // extends \n // @ts-expect-error\n const {id, userData = {}} = props || {};\n this.gl = gl;\n this.gl2 = gl as WebGL2RenderingContext;\n this.id = id || uid(this.constructor.name);\n this.userData = userData;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n // @ts-expect-error\n this._handle = props?.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n this.byteLength = 0;\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.props);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.props);\n // }\n return this._handle;\n }\n\n destroy(): void {\n this.delete();\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-expect-error\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this.removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-expect-error\n if (children && deleteChildren) {\n // @ts-expect-error\n children.filter(Boolean).forEach((child) => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param name\n * @return param\n */\n getParameter(pname: number, props = {}): any {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, props);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options: {parameters?, keys?} = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-expect-error\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values: Record<string, any> = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param pname - parameter (GL constant, value or key)\n * @param value {GLint|GLfloat|GLenum} \n * @return returns self to enable chaining\n */\n setParameter(pname: GL | string, value: any): this {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n // @ts-expect-error\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters: Record<GL, any>) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className: string, version: string, methodNames: string[]) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(props: ResourceProps) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle: any) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname: GL, props: Record<string, any>): number {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname: GL | string, value: any) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n /*\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n */\n}\n"],"file":"webgl-resource.js"}
1
+ {"version":3,"file":"webgl-resource.js","names":["Resource","assert","uid","stubRemovedMethods","isWebGL2","assertWebGLContext","WebGLDevice","getKeyValue","ERR_RESOURCE_METHOD_UNDEFINED","WebGLResource","constructor","device","props","defaultProps","_defineProperty","attach","gl","id","gl2","name","_handle","handle","undefined","_createHandle","byteLength","toString","concat","delete","deleteChildren","arguments","length","children","_deleteHandle","removeStats","filter","Boolean","forEach","child","destroy","bind","funcOrHandle","_bindHandle","value","_bound","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","getGLKey","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle"],"sources":["../../../src/adapter/objects/webgl-resource.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/core';\nimport type {Device, ResourceProps} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';\nimport {WebGLDevice} from '../webgl-device';\n\n// Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?\nimport {getKeyValue} from './constants-to-keys';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n/**\n * Base class for WebGL object wrappers\n */\nexport abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext;\n private _handle: any;\n\n private _bound = false;\n // Only meaningful for resources that allocate GPU memory\n byteLength = 0;\n\n constructor(device: Device, props: Props, defaultProps: Required<Props>) {\n super(device, props, defaultProps);\n\n this.device = WebGLDevice.attach(device);\n const gl = this.device.gl;\n\n assertWebGLContext(gl);\n\n // extends \n const {id} = props || {};\n this.gl = gl;\n this.gl2 = gl as WebGL2RenderingContext;\n this.id = id || uid(this.constructor.name);\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = props?.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n this.byteLength = 0;\n }\n\n override toString(): string {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.props);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.props);\n // }\n return this._handle;\n }\n\n override delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-expect-error\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this.removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-expect-error\n if (children && deleteChildren) {\n // @ts-expect-error\n children.filter(Boolean).forEach((child) => child.destroy());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param name\n * @return param\n */\n getParameter(pname: number, props: any = {}): any {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, props);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options: {parameters?: any, keys?: any} = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-expect-error\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values: Record<string, any> = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? this.device.getGLKey(pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = this.device.getGLKey(values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param pname - parameter (GL constant, value or key)\n * @param value {GLint|GLfloat|GLenum} \n * @return returns self to enable chaining\n */\n setParameter(pname: GL | string, value: any): this {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n // @ts-expect-error\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters: Record<GL, any>) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className: string, version: string, methodNames: string[]) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(props: ResourceProps) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle: any) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname: GL, props: Record<string, any>): number {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname: GL | string, value: any) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n /*\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n */\n}\n"],"mappings":"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"}
@@ -1,27 +1,54 @@
1
- import { ResourceProps } from '@luma.gl/api';
2
- import WebGLDevice from '../webgl-device';
3
- import WebGLResource from './webgl-resource';
4
- import Buffer from '../resources/webgl-buffer';
1
+ import type { Device, Buffer, ResourceProps, TypedArray } from '@luma.gl/core';
2
+ import { WebGLResource } from './webgl-resource';
3
+ import { WEBGLBuffer } from '../resources/webgl-buffer';
5
4
  /**
6
5
  * VertexArrayObject properties
6
+ * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers
7
+ * and on iOS Safari browser.
7
8
  */
8
- export declare type VertexArrayObjectProps = ResourceProps & {};
9
+ export type VertexArrayObjectProps = ResourceProps & {
10
+ constantAttributeZero?: boolean;
11
+ };
9
12
  /** VertexArrayObject wrapper */
10
- export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
13
+ export declare class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
11
14
  get [Symbol.toStringTag](): string;
12
- constructor(device: WebGLDevice, props?: VertexArrayObjectProps);
15
+ /** Buffer constant */
16
+ private buffer;
17
+ private bufferValue;
18
+ static isConstantAttributeZeroSupported(device: Device): boolean;
19
+ constructor(device: Device, props?: VertexArrayObjectProps);
20
+ destroy(): void;
13
21
  _createHandle(): WebGLVertexArrayObject;
14
22
  _deleteHandle(): void;
15
23
  _bindHandle(handle: WEBGLVertexArrayObject): void;
16
- setElementBuffer(elementBuffer?: Buffer, opts?: {}): this;
17
- /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
18
- setBuffer(location: number, buffer: Buffer, accessor: any): this;
19
24
  /**
20
25
  * Enabling an attribute location makes it reference the currently bound buffer
21
26
  * Disabling an attribute location makes it reference the global constant value
22
27
  * TODO - handle single values for size 1 attributes?
23
28
  * TODO - convert classic arrays based on known type?
24
29
  */
25
- enable(location: number, enable?: boolean): this;
30
+ enable(location: number, enable?: boolean): void;
31
+ setElementBuffer(elementBuffer?: WEBGLBuffer | null, opts?: {}): void;
32
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
33
+ setBuffer(location: number, buffer: WEBGLBuffer, accessor: any): void;
34
+ /**
35
+ * Set an attribute to a constant value
36
+ * @param device
37
+ * @param location
38
+ * @param array
39
+ *
40
+ * @note Constants are stored globally on the WebGL context, not the VAO
41
+ * so they need to be updated before every render
42
+ * @todo - use known type (in configuration or passed in) to allow non-typed arrays?
43
+ * @todo - remember/cache values to avoid setting them unnecessarily?
44
+ */
45
+ setConstant(location: any, array: TypedArray): void;
46
+ /**
47
+ * Provide a means to create a buffer that is equivalent to a constant.
48
+ * NOTE: Desktop OpenGL cannot disable attribute 0.
49
+ * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
50
+ * this-has-significant-performance-penalty
51
+ */
52
+ getConstantBuffer(elementCount: number, value: any): Buffer;
26
53
  }
27
54
  //# sourceMappingURL=webgl-vertex-array-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-vertex-array-object.d.ts","sourceRoot":"","sources":["../../../src/adapter/objects/webgl-vertex-array-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,aAAa,EAAC,MAAM,cAAc,CAAC;AAInD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAI/C;;GAEG;AACH,oBAAY,sBAAsB,GAAG,aAAa,GAAG,EACpD,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa,CAAC,sBAAsB,CAAC;IACvF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,sBAAsB;IAK/D,aAAa;IAIb,aAAa,IAAI,IAAI;IAOrB,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAMjD,gBAAgB,CAAC,aAAa,GAAE,MAAa,EAAE,IAAI,KAAK;IAWxD,gGAAgG;IAChG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAgChE;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;CAe9C"}
1
+ {"version":3,"file":"webgl-vertex-array-object.d.ts","sourceRoot":"","sources":["../../../src/adapter/objects/webgl-vertex-array-object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAM3F,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAMtD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,gCAAgC;AAChC,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,sBAAsB,CAAC;IAC/E,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,sBAAsB;IACtB,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAQ;IAE3B,MAAM,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAKpD,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,sBAAsB;IAKjD,OAAO,IAAI,IAAI;IAMf,aAAa;IAIb,aAAa,IAAI,IAAI;IAOrB,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAI1D;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;IAgB7C,gBAAgB,CAAC,aAAa,GAAE,WAAW,GAAG,IAAW,EAAE,IAAI,KAAK;IASpE,gGAAgG;IAChG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IA+BrE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAgBnD;;;;;OAKG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,KAAA,GAAG,MAAM;CA2BvD"}
@@ -1,43 +1,66 @@
1
- import { assert } from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ let _Symbol$toStringTag;
3
+ import { Resource, assert, getScratchArray, fillArray } from '@luma.gl/core';
4
+ import { GL } from '@luma.gl/constants';
3
5
  import { getBrowser } from '@probe.gl/env';
4
- import WebGLResource from './webgl-resource';
6
+ import { WebGLResource } from "./webgl-resource.js";
5
7
  const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
6
- export default class WEBGLVertexArrayObject extends WebGLResource {
7
- get [Symbol.toStringTag]() {
8
+ _Symbol$toStringTag = Symbol.toStringTag;
9
+ export class WEBGLVertexArrayObject extends WebGLResource {
10
+ get [_Symbol$toStringTag]() {
8
11
  return 'BaseVertexArrayObject';
9
12
  }
10
-
13
+ static isConstantAttributeZeroSupported(device) {
14
+ return device.info.type === 'webgl2' || getBrowser() === 'Chrome';
15
+ }
11
16
  constructor(device, props) {
12
- super(device, props, {});
17
+ super(device, props, {
18
+ ...Resource.defaultProps,
19
+ constantAttributeZero: false
20
+ });
21
+ _defineProperty(this, "buffer", null);
22
+ _defineProperty(this, "bufferValue", null);
23
+ Object.seal(this);
24
+ }
25
+ destroy() {
26
+ super.destroy();
27
+ if (this.buffer) {
28
+ var _this$buffer;
29
+ (_this$buffer = this.buffer) === null || _this$buffer === void 0 ? void 0 : _this$buffer.destroy();
30
+ }
13
31
  }
14
-
15
32
  _createHandle() {
16
33
  return this.gl2.createVertexArray();
17
34
  }
18
-
19
35
  _deleteHandle() {
20
36
  this.gl2.deleteVertexArray(this.handle);
21
37
  return [this.elements];
22
38
  }
23
-
24
39
  _bindHandle(handle) {
25
40
  this.gl2.bindVertexArray(handle);
26
41
  }
27
-
28
- setElementBuffer(elementBuffer = null, opts = {}) {
29
- assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
42
+ enable(location) {
43
+ let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
44
+ const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
45
+ const canDisableAttribute = canDisableAttributeZero || location !== 0;
46
+ if (enable || canDisableAttribute) {
47
+ location = Number(location);
48
+ this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));
49
+ }
50
+ }
51
+ setElementBuffer() {
52
+ let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
53
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
54
+ assert(!elementBuffer || elementBuffer.glTarget === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
30
55
  this.bind(() => {
31
56
  this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
32
57
  });
33
- return this;
34
58
  }
35
-
36
59
  setBuffer(location, buffer, accessor) {
37
- if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
38
- return this.setElementBuffer(buffer, accessor);
60
+ if (buffer.glTarget === GL.ELEMENT_ARRAY_BUFFER) {
61
+ this.setElementBuffer(buffer, accessor);
62
+ return;
39
63
  }
40
-
41
64
  const {
42
65
  size,
43
66
  type,
@@ -54,31 +77,98 @@ export default class WEBGLVertexArrayObject extends WebGLResource {
54
77
  location = Number(location);
55
78
  this.bind(() => {
56
79
  gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
57
-
58
80
  if (integer) {
59
81
  this.device.assertWebGL2();
60
82
  gl2.vertexAttribIPointer(location, size, type, stride, offset);
61
83
  } else {
62
84
  gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
63
85
  }
64
-
65
86
  gl.enableVertexAttribArray(location);
66
87
  gl2.vertexAttribDivisor(location, divisor || 0);
67
88
  });
68
- return this;
69
89
  }
70
-
71
- enable(location, enable = true) {
72
- const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
73
- const canDisableAttribute = canDisableAttributeZero || location !== 0;
74
-
75
- if (enable || canDisableAttribute) {
76
- location = Number(location);
77
- this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));
90
+ setConstant(location, array) {
91
+ switch (array.constructor) {
92
+ case Float32Array:
93
+ setConstantFloatArray(this.device, location, array);
94
+ break;
95
+ case Int32Array:
96
+ setConstantIntArray(this.device, location, array);
97
+ break;
98
+ case Uint32Array:
99
+ setConstantUintArray(this.device, location, array);
100
+ break;
101
+ default:
102
+ assert(false);
103
+ }
104
+ }
105
+ getConstantBuffer(elementCount, value) {
106
+ const constantValue = normalizeConstantArrayValue(value);
107
+ const byteLength = constantValue.byteLength * elementCount;
108
+ const length = constantValue.length * elementCount;
109
+ let updateNeeded = !this.buffer;
110
+ this.buffer = this.buffer || this.device.createBuffer({
111
+ byteLength
112
+ });
113
+ updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);
114
+ updateNeeded = updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);
115
+ if (updateNeeded) {
116
+ const typedArray = getScratchArray(value.constructor, length);
117
+ fillArray({
118
+ target: typedArray,
119
+ source: constantValue,
120
+ start: 0,
121
+ count: length
122
+ });
123
+ this.buffer.subData(typedArray);
124
+ this.bufferValue = value;
125
+ }
126
+ return this.buffer;
127
+ }
128
+ }
129
+ function setConstantFloatArray(device, location, array) {
130
+ switch (array.length) {
131
+ case 1:
132
+ device.gl.vertexAttrib1fv(location, array);
133
+ break;
134
+ case 2:
135
+ device.gl.vertexAttrib2fv(location, array);
136
+ break;
137
+ case 3:
138
+ device.gl.vertexAttrib3fv(location, array);
139
+ break;
140
+ case 4:
141
+ device.gl.vertexAttrib4fv(location, array);
142
+ break;
143
+ default:
144
+ assert(false);
145
+ }
146
+ }
147
+ function setConstantIntArray(device, location, array) {
148
+ var _device$gl;
149
+ device.assertWebGL2();
150
+ (_device$gl = device.gl2) === null || _device$gl === void 0 ? void 0 : _device$gl.vertexAttribI4iv(location, array);
151
+ }
152
+ function setConstantUintArray(device, location, array) {
153
+ var _device$gl2;
154
+ device.assertWebGL2();
155
+ (_device$gl2 = device.gl2) === null || _device$gl2 === void 0 ? void 0 : _device$gl2.vertexAttribI4uiv(location, array);
156
+ }
157
+ function normalizeConstantArrayValue(arrayValue) {
158
+ if (Array.isArray(arrayValue)) {
159
+ return new Float32Array(arrayValue);
160
+ }
161
+ return arrayValue;
162
+ }
163
+ function compareConstantArrayValues(v1, v2) {
164
+ if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
165
+ return false;
166
+ }
167
+ for (let i = 0; i < v1.length; ++i) {
168
+ if (v1[i] !== v2[i]) {
169
+ return false;
78
170
  }
79
-
80
- return this;
81
171
  }
82
-
172
+ return true;
83
173
  }
84
174
  //# sourceMappingURL=webgl-vertex-array-object.js.map