@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.1

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