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

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 (553) 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 +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -0,0 +1,47 @@
1
+ import type { PrimitiveTopology, ShaderLayout, TransformFeedbackProps } from '@luma.gl/core';
2
+ import { TransformFeedback, Buffer, BufferRange } from '@luma.gl/core';
3
+ import { WebGLDevice } from "../webgl-device.js";
4
+ export declare class WEBGLTransformFeedback extends TransformFeedback {
5
+ readonly device: WebGLDevice;
6
+ readonly gl: WebGL2RenderingContext;
7
+ readonly handle: WebGLTransformFeedback;
8
+ /**
9
+ * NOTE: The Model already has this information while drawing, but
10
+ * TransformFeedback currently needs it internally, to look up
11
+ * varying information outside of a draw() call.
12
+ */
13
+ readonly layout: ShaderLayout;
14
+ buffers: Record<string, BufferRange>;
15
+ unusedBuffers: Record<string, Buffer>;
16
+ /**
17
+ * Allows us to avoid a Chrome bug where a buffer that is already bound to a
18
+ * different target cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.
19
+ * This a major workaround, see: https://github.com/KhronosGroup/WebGL/issues/2346
20
+ */
21
+ bindOnUse: boolean;
22
+ private _bound;
23
+ constructor(device: WebGLDevice, props: TransformFeedbackProps);
24
+ destroy(): void;
25
+ begin(topology?: PrimitiveTopology): void;
26
+ end(): void;
27
+ setBuffers(buffers: Record<string, Buffer | BufferRange>): void;
28
+ setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void;
29
+ getBuffer(locationOrName: string | number): Buffer | BufferRange | null;
30
+ bind(funcOrHandle?: WebGLTransformFeedback): unknown;
31
+ unbind(): void;
32
+ /** Extract offsets for bindBufferRange */
33
+ protected _getBufferRange(bufferOrRange: Buffer | {
34
+ buffer: Buffer;
35
+ byteOffset?: number;
36
+ byteLength?: number;
37
+ }): Required<BufferRange>;
38
+ protected _getVaryingIndex(locationOrName: string | number): number;
39
+ /**
40
+ * Need to avoid chrome bug where buffer that is already bound to a different target
41
+ * cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.
42
+ */
43
+ protected _bindBuffers(): void;
44
+ protected _unbindBuffers(): void;
45
+ protected _bindBuffer(index: number, buffer: Buffer, byteOffset?: number, byteLength?: number): void;
46
+ }
47
+ //# sourceMappingURL=webgl-transform-feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-transform-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAM,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAI5C,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC3C;;;;OAIG;IACH,SAAS,UAAQ;IACjB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB;IAerD,OAAO,IAAI,IAAI;IAKxB,KAAK,CAAC,QAAQ,GAAE,iBAAgC,GAAG,IAAI;IAQvD,GAAG,IAAI,IAAI;IAUX,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IAW/D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAmBrF,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;IAQvE,IAAI,CAAC,YAAY,yBAAc;IAqB/B,MAAM;IAMN,0CAA0C;IAC1C,SAAS,CAAC,eAAe,CACvB,aAAa,EAAE,MAAM,GAAG;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC,GACjF,QAAQ,CAAC,WAAW,CAAC;IAWxB,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcnE;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAO9B,SAAS,CAAC,cAAc,IAAI,IAAI;IAMhC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAQhG"}
@@ -0,0 +1,162 @@
1
+ import { log, TransformFeedback } from '@luma.gl/core';
2
+ import { GL } from '@luma.gl/constants';
3
+ import { WEBGLBuffer } from "../../index.js";
4
+ import { getGLPrimitive } from "../helpers/webgl-topology-utils.js";
5
+ export class WEBGLTransformFeedback extends TransformFeedback {
6
+ device;
7
+ gl;
8
+ handle;
9
+ /**
10
+ * NOTE: The Model already has this information while drawing, but
11
+ * TransformFeedback currently needs it internally, to look up
12
+ * varying information outside of a draw() call.
13
+ */
14
+ layout;
15
+ buffers = {};
16
+ unusedBuffers = {};
17
+ /**
18
+ * Allows us to avoid a Chrome bug where a buffer that is already bound to a
19
+ * different target cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.
20
+ * This a major workaround, see: https://github.com/KhronosGroup/WebGL/issues/2346
21
+ */
22
+ bindOnUse = true;
23
+ _bound = false;
24
+ constructor(device, props) {
25
+ super(device, props);
26
+ this.device = device;
27
+ this.gl = device.gl;
28
+ this.handle = this.props.handle || this.gl.createTransformFeedback();
29
+ this.layout = this.props.layout;
30
+ if (props.buffers) {
31
+ this.setBuffers(props.buffers);
32
+ }
33
+ Object.seal(this);
34
+ }
35
+ destroy() {
36
+ this.gl.deleteTransformFeedback(this.handle);
37
+ super.destroy();
38
+ }
39
+ begin(topology = 'point-list') {
40
+ this.gl.bindTransformFeedback(36386, this.handle);
41
+ if (this.bindOnUse) {
42
+ this._bindBuffers();
43
+ }
44
+ this.gl.beginTransformFeedback(getGLPrimitive(topology));
45
+ }
46
+ end() {
47
+ this.gl.endTransformFeedback();
48
+ if (!this.bindOnUse) {
49
+ this._unbindBuffers();
50
+ }
51
+ this.gl.bindTransformFeedback(36386, null);
52
+ }
53
+ // SUBCLASS
54
+ setBuffers(buffers) {
55
+ this.buffers = {};
56
+ this.unusedBuffers = {};
57
+ this.bind(() => {
58
+ for (const bufferName in buffers) {
59
+ this.setBuffer(bufferName, buffers[bufferName]);
60
+ }
61
+ });
62
+ }
63
+ setBuffer(locationOrName, bufferOrRange) {
64
+ const location = this._getVaryingIndex(locationOrName);
65
+ const { buffer, byteLength, byteOffset } = this._getBufferRange(bufferOrRange);
66
+ if (location < 0) {
67
+ this.unusedBuffers[locationOrName] = buffer;
68
+ log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();
69
+ return;
70
+ }
71
+ this.buffers[location] = { buffer, byteLength, byteOffset };
72
+ // Need to avoid chrome bug where buffer that is already bound to a different target
73
+ // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.
74
+ if (!this.bindOnUse) {
75
+ this._bindBuffer(location, buffer, byteOffset, byteLength);
76
+ }
77
+ }
78
+ getBuffer(locationOrName) {
79
+ if (isIndex(locationOrName)) {
80
+ return this.buffers[locationOrName] || null;
81
+ }
82
+ const location = this._getVaryingIndex(locationOrName);
83
+ return location >= 0 ? this.buffers[location] : null;
84
+ }
85
+ bind(funcOrHandle = this.handle) {
86
+ if (typeof funcOrHandle !== 'function') {
87
+ this.gl.bindTransformFeedback(36386, funcOrHandle);
88
+ return this;
89
+ }
90
+ let value;
91
+ if (!this._bound) {
92
+ this.gl.bindTransformFeedback(36386, this.handle);
93
+ this._bound = true;
94
+ value = funcOrHandle();
95
+ this._bound = false;
96
+ this.gl.bindTransformFeedback(36386, null);
97
+ }
98
+ else {
99
+ value = funcOrHandle();
100
+ }
101
+ return value;
102
+ }
103
+ unbind() {
104
+ this.bind(null);
105
+ }
106
+ // PRIVATE METHODS
107
+ /** Extract offsets for bindBufferRange */
108
+ _getBufferRange(bufferOrRange) {
109
+ if (bufferOrRange instanceof WEBGLBuffer) {
110
+ return { buffer: bufferOrRange, byteOffset: 0, byteLength: bufferOrRange.byteLength };
111
+ }
112
+ // To use bindBufferRange either offset or size must be specified.
113
+ // @ts-expect-error Must be a BufferRange.
114
+ const { buffer, byteOffset = 0, byteLength = bufferOrRange.buffer.byteLength } = bufferOrRange;
115
+ return { buffer, byteOffset, byteLength };
116
+ }
117
+ _getVaryingIndex(locationOrName) {
118
+ if (isIndex(locationOrName)) {
119
+ return Number(locationOrName);
120
+ }
121
+ for (const varying of this.layout.varyings) {
122
+ if (locationOrName === varying.name) {
123
+ return varying.location;
124
+ }
125
+ }
126
+ return -1;
127
+ }
128
+ /**
129
+ * Need to avoid chrome bug where buffer that is already bound to a different target
130
+ * cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.
131
+ */
132
+ _bindBuffers() {
133
+ for (const bufferIndex in this.buffers) {
134
+ const { buffer, byteLength, byteOffset } = this._getBufferRange(this.buffers[bufferIndex]);
135
+ this._bindBuffer(Number(bufferIndex), buffer, byteOffset, byteLength);
136
+ }
137
+ }
138
+ _unbindBuffers() {
139
+ for (const bufferIndex in this.buffers) {
140
+ this.gl.bindBufferBase(35982, Number(bufferIndex), null);
141
+ }
142
+ }
143
+ _bindBuffer(index, buffer, byteOffset = 0, byteLength) {
144
+ const handle = buffer && buffer.handle;
145
+ if (!handle || byteLength === undefined) {
146
+ this.gl.bindBufferBase(35982, index, handle);
147
+ }
148
+ else {
149
+ this.gl.bindBufferRange(35982, index, handle, byteOffset, byteLength);
150
+ }
151
+ }
152
+ }
153
+ /**
154
+ * Returns true if the given value is an integer, or a string that
155
+ * trivially converts to an integer (only numeric characters).
156
+ */
157
+ function isIndex(value) {
158
+ if (typeof value === 'number') {
159
+ return Number.isInteger(value);
160
+ }
161
+ return /^\d+$/.test(value);
162
+ }
@@ -0,0 +1,67 @@
1
+ import type { Device, Buffer, VertexArrayProps, TypedArray } from '@luma.gl/core';
2
+ import { VertexArray } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { WebGLDevice } from "../webgl-device.js";
5
+ /** VertexArrayObject wrapper */
6
+ export declare class WEBGLVertexArray extends VertexArray {
7
+ get [Symbol.toStringTag](): string;
8
+ readonly device: WebGLDevice;
9
+ readonly handle: WebGLVertexArrayObject;
10
+ /** Attribute 0 buffer constant */
11
+ private buffer;
12
+ private bufferValue;
13
+ /** * Attribute 0 can not be disable on most desktop OpenGL based browsers */
14
+ static isConstantAttributeZeroSupported(device: Device): boolean;
15
+ constructor(device: WebGLDevice, props?: VertexArrayProps);
16
+ destroy(): void;
17
+ /**
18
+ // Set (bind/unbind) an elements buffer, for indexed rendering.
19
+ // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER or null. Constants not supported
20
+ *
21
+ * @param elementBuffer
22
+ */
23
+ setIndexBuffer(indexBuffer: Buffer | null): void;
24
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
25
+ setBuffer(location: number, attributeBuffer: Buffer): void;
26
+ /** Set a location in vertex attributes array to a constant value, disables the location */
27
+ setConstantWebGL(location: number, value: TypedArray): void;
28
+ init: boolean;
29
+ bindBeforeRender(): void;
30
+ unbindAfterRender(): void;
31
+ /**
32
+ * Constant attributes need to be reset before every draw call
33
+ * Any attribute that is disabled in the current vertex array object
34
+ * is read from the context's global constant value for that attribute location.
35
+ * @note Constant attributes are only supported in WebGL, not in WebGPU
36
+ */
37
+ protected _applyConstantAttributes(): void;
38
+ /**
39
+ * Set a location in vertex attributes array to a buffer, enables the location, sets divisor
40
+ * @note requires vertex array to be bound
41
+ */
42
+ /** Get an accessor from the */
43
+ protected _getAccessor(location: number): {
44
+ size: 4 | 1 | 2 | 3;
45
+ type: GL.BYTE | GL.UNSIGNED_BYTE | GL.SHORT | GL.UNSIGNED_SHORT | GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT;
46
+ stride: number;
47
+ offset: number;
48
+ normalized: boolean;
49
+ integer: boolean;
50
+ divisor: number;
51
+ };
52
+ /**
53
+ * Enabling an attribute location makes it reference the currently bound buffer
54
+ * Disabling an attribute location makes it reference the global constant value
55
+ * TODO - handle single values for size 1 attributes?
56
+ * TODO - convert classic arrays based on known type?
57
+ */
58
+ protected _enable(location: number, enable?: boolean): void;
59
+ /**
60
+ * Provide a means to create a buffer that is equivalent to a constant.
61
+ * NOTE: Desktop OpenGL cannot disable attribute 0.
62
+ * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
63
+ * this-has-significant-performance-penalty
64
+ */
65
+ getConstantBuffer(elementCount: number, value: TypedArray): Buffer;
66
+ }
67
+ //# sourceMappingURL=webgl-vertex-array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-vertex-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAc,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAC,WAAW,EAA6B,MAAM,eAAe,CAAC;AACtE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAGtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAO5C,gCAAgC;AAChC,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAExC,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAQ;IAE3B,6EAA6E;IAC7E,MAAM,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAKpD,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,gBAAgB;IAMhD,OAAO,IAAI,IAAI;IAexB;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAgBhD,gGAAgG;IAChG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IA6B1D,2FAA2F;IAClF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAKpE,IAAI,UAAS;IAEJ,gBAAgB,IAAI,IAAI;IAYxB,iBAAiB,IAAI,IAAI;IAUlC;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAU1C;;;OAGG;IAcH,gCAAgC;IAChC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;IAsBvC;;;;;OAKG;IACH,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;IAiBxD;;;;;OAKG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM;CA8BnE"}
@@ -0,0 +1,239 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { VertexArray, getScratchArray, fillArray } from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
6
+ import { getBrowser } from '@probe.gl/env';
7
+ import { getGLFromVertexType } from "../converters/vertex-formats.js";
8
+ // import {AccessorObject} from '../..';
9
+ // import {getGLFromVertexType} from '../converters/vertex-formats';
10
+ /** VertexArrayObject wrapper */
11
+ export class WEBGLVertexArray extends VertexArray {
12
+ get [Symbol.toStringTag]() {
13
+ return 'VertexArray';
14
+ }
15
+ device;
16
+ handle;
17
+ /** Attribute 0 buffer constant */
18
+ buffer = null;
19
+ bufferValue = null;
20
+ /** * Attribute 0 can not be disable on most desktop OpenGL based browsers */
21
+ static isConstantAttributeZeroSupported(device) {
22
+ return getBrowser() === 'Chrome';
23
+ }
24
+ // Create a VertexArray
25
+ constructor(device, props) {
26
+ super(device, props);
27
+ this.device = device;
28
+ this.handle = this.device.gl.createVertexArray();
29
+ }
30
+ destroy() {
31
+ super.destroy();
32
+ if (this.buffer) {
33
+ this.buffer?.destroy();
34
+ }
35
+ if (this.handle) {
36
+ this.device.gl.deleteVertexArray(this.handle);
37
+ // @ts-expect-error read-only/undefined
38
+ this.handle = undefined;
39
+ }
40
+ // Auto-delete elements?
41
+ // return [this.elements];
42
+ }
43
+ /**
44
+ // Set (bind/unbind) an elements buffer, for indexed rendering.
45
+ // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER or null. Constants not supported
46
+ *
47
+ * @param elementBuffer
48
+ */
49
+ setIndexBuffer(indexBuffer) {
50
+ const buffer = indexBuffer;
51
+ // Explicitly allow `null` to support clearing the index buffer
52
+ if (buffer && buffer.glTarget !== 34963) {
53
+ throw new Error('Use .setBuffer()');
54
+ }
55
+ // In WebGL The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject
56
+ this.device.gl.bindVertexArray(this.handle);
57
+ // TODO - this initial binding does not seem to take effect? see bindBeforeRender()
58
+ this.device.gl.bindBuffer(34963, buffer ? buffer.handle : null);
59
+ // log.log(1, 'VertexArray.setIndexBuffer', indexBuffer)();
60
+ // log.log(1, `Binding vertex array ${this.id}`, buffer?.id)();
61
+ this.indexBuffer = buffer;
62
+ }
63
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
64
+ setBuffer(location, attributeBuffer) {
65
+ const buffer = attributeBuffer;
66
+ // Sanity check target
67
+ if (buffer.glTarget === 34963) {
68
+ throw new Error('Use .setIndexBuffer()');
69
+ }
70
+ const { size, type, stride, offset, normalized, integer, divisor } = this._getAccessor(location);
71
+ this.device.gl.bindVertexArray(this.handle);
72
+ // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
73
+ this.device.gl.bindBuffer(34962, buffer.handle);
74
+ // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
75
+ if (integer) {
76
+ this.device.gl.vertexAttribIPointer(location, size, type, stride, offset);
77
+ }
78
+ else {
79
+ // Attaches ARRAY_BUFFER with specified buffer format to location
80
+ this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
81
+ }
82
+ // Mark as non-constant
83
+ this.device.gl.enableVertexAttribArray(location);
84
+ // Set the step mode 0=vertex, 1=instance
85
+ this.device.gl.vertexAttribDivisor(location, divisor || 0);
86
+ this.attributes[location] = buffer;
87
+ }
88
+ /** Set a location in vertex attributes array to a constant value, disables the location */
89
+ setConstantWebGL(location, value) {
90
+ this._enable(location, false);
91
+ this.attributes[location] = value;
92
+ }
93
+ init = false;
94
+ bindBeforeRender() {
95
+ this.device.gl.bindVertexArray(this.handle);
96
+ // TODO - the initial bind does not seem to take effect.
97
+ if (!this.init) {
98
+ // log.log(1, `Binding vertex array ${this.id}`, this.indexBuffer?.id)();
99
+ const webglBuffer = this.indexBuffer;
100
+ this.device.gl.bindBuffer(34963, webglBuffer?.handle || null);
101
+ this.init = true;
102
+ }
103
+ this._applyConstantAttributes();
104
+ }
105
+ unbindAfterRender() {
106
+ // log.log(1, `Unbinding vertex array ${this.id}`)();
107
+ // TODO technically this is not necessary, but we might be interfacing
108
+ // with code that does not use vertex array objects
109
+ this.device.gl.bindVertexArray(null);
110
+ // this.device.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null);
111
+ }
112
+ // Internal methods
113
+ /**
114
+ * Constant attributes need to be reset before every draw call
115
+ * Any attribute that is disabled in the current vertex array object
116
+ * is read from the context's global constant value for that attribute location.
117
+ * @note Constant attributes are only supported in WebGL, not in WebGPU
118
+ */
119
+ _applyConstantAttributes() {
120
+ for (let location = 0; location < this.maxVertexAttributes; ++location) {
121
+ const constant = this.attributes[location];
122
+ // A typed array means this is a constant
123
+ if (ArrayBuffer.isView(constant)) {
124
+ this.device.setConstantAttributeWebGL(location, constant);
125
+ }
126
+ }
127
+ }
128
+ /**
129
+ * Set a location in vertex attributes array to a buffer, enables the location, sets divisor
130
+ * @note requires vertex array to be bound
131
+ */
132
+ // protected _setAttributeLayout(location: number): void {
133
+ // const {size, type, stride, offset, normalized, integer, divisor} = this._getAccessor(location);
134
+ // // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
135
+ // if (integer) {
136
+ // this.device.gl.vertexAttribIPointer(location, size, type, stride, offset);
137
+ // } else {
138
+ // // Attaches ARRAY_BUFFER with specified buffer format to location
139
+ // this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
140
+ // }
141
+ // this.device.gl.vertexAttribDivisor(location, divisor || 0);
142
+ // }
143
+ /** Get an accessor from the */
144
+ _getAccessor(location) {
145
+ const attributeInfo = this.attributeInfos[location];
146
+ if (!attributeInfo) {
147
+ throw new Error(`Unknown attribute location ${location}`);
148
+ }
149
+ const glType = getGLFromVertexType(attributeInfo.bufferDataType);
150
+ return {
151
+ size: attributeInfo.bufferComponents,
152
+ type: glType,
153
+ stride: attributeInfo.byteStride,
154
+ offset: attributeInfo.byteOffset,
155
+ normalized: attributeInfo.normalized,
156
+ // it is the shader attribute declaration, not the vertex memory format,
157
+ // that determines if the data in the buffer will be treated as integers.
158
+ //
159
+ // Also note that WebGL supports assigning non-normalized integer data to floating point attributes,
160
+ // but as far as we can tell, WebGPU does not.
161
+ integer: attributeInfo.integer,
162
+ divisor: attributeInfo.stepMode === 'instance' ? 1 : 0
163
+ };
164
+ }
165
+ /**
166
+ * Enabling an attribute location makes it reference the currently bound buffer
167
+ * Disabling an attribute location makes it reference the global constant value
168
+ * TODO - handle single values for size 1 attributes?
169
+ * TODO - convert classic arrays based on known type?
170
+ */
171
+ _enable(location, enable = true) {
172
+ // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
173
+ const canDisableAttributeZero = WEBGLVertexArray.isConstantAttributeZeroSupported(this.device);
174
+ const canDisableAttribute = canDisableAttributeZero || location !== 0;
175
+ if (enable || canDisableAttribute) {
176
+ location = Number(location);
177
+ this.device.gl.bindVertexArray(this.handle);
178
+ if (enable) {
179
+ this.device.gl.enableVertexAttribArray(location);
180
+ }
181
+ else {
182
+ this.device.gl.disableVertexAttribArray(location);
183
+ }
184
+ this.device.gl.bindVertexArray(null);
185
+ }
186
+ }
187
+ /**
188
+ * Provide a means to create a buffer that is equivalent to a constant.
189
+ * NOTE: Desktop OpenGL cannot disable attribute 0.
190
+ * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
191
+ * this-has-significant-performance-penalty
192
+ */
193
+ getConstantBuffer(elementCount, value) {
194
+ // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)
195
+ const constantValue = normalizeConstantArrayValue(value);
196
+ const byteLength = constantValue.byteLength * elementCount;
197
+ const length = constantValue.length * elementCount;
198
+ if (this.buffer && byteLength !== this.buffer.byteLength) {
199
+ throw new Error(`Buffer size is immutable, byte length ${byteLength} !== ${this.buffer.byteLength}.`);
200
+ }
201
+ let updateNeeded = !this.buffer;
202
+ this.buffer = this.buffer || this.device.createBuffer({ byteLength });
203
+ // Reallocate and update contents if needed
204
+ updateNeeded = updateNeeded || !compareConstantArrayValues(constantValue, this.bufferValue);
205
+ if (updateNeeded) {
206
+ // Create a typed array that is big enough, and fill it with the required data
207
+ const typedArray = getScratchArray(value.constructor, length);
208
+ fillArray({ target: typedArray, source: constantValue, start: 0, count: length });
209
+ this.buffer.write(typedArray);
210
+ this.bufferValue = value;
211
+ }
212
+ return this.buffer;
213
+ }
214
+ }
215
+ // HELPER FUNCTIONS
216
+ /**
217
+ * TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)
218
+ * TODO - handle single values for size 1 attributes?
219
+ */
220
+ function normalizeConstantArrayValue(arrayValue) {
221
+ if (Array.isArray(arrayValue)) {
222
+ return new Float32Array(arrayValue);
223
+ }
224
+ return arrayValue;
225
+ }
226
+ /**
227
+ *
228
+ */
229
+ function compareConstantArrayValues(v1, v2) {
230
+ if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
231
+ return false;
232
+ }
233
+ for (let i = 0; i < v1.length; ++i) {
234
+ if (v1[i] !== v2[i]) {
235
+ return false;
236
+ }
237
+ }
238
+ return true;
239
+ }
@@ -1,12 +1,11 @@
1
- import type { CanvasContextProps } from '@luma.gl/api';
2
- import { CanvasContext } from '@luma.gl/api';
3
- import WebGLDevice from './webgl-device';
4
- import WEBGLFramebuffer from './resources/webgl-framebuffer';
1
+ import type { CanvasContextProps } from '@luma.gl/core';
2
+ import { CanvasContext } from '@luma.gl/core';
3
+ import { WebGLDevice } from "./webgl-device.js";
4
+ import { WEBGLFramebuffer } from "./resources/webgl-framebuffer.js";
5
5
  /**
6
- * Holds a WebGL Canvas Context which will handle drawing buffer resizing etc
7
- * @todo This class is WIP, intended to replace the old gltools-based context size tracking
6
+ * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
8
7
  */
9
- export default class WebGLCanvasContext extends CanvasContext {
8
+ export declare class WebGLCanvasContext extends CanvasContext {
10
9
  readonly device: WebGLDevice;
11
10
  presentationSize: [number, number];
12
11
  private _framebuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-canvas-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAE3C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,aAAa;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,YAAY,CAAiC;gBAEzC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB;IAQ1D,qBAAqB,IAAI,gBAAgB;IAMzC,sDAAsD;IACtD,MAAM;IAQN;;;;;;;;;;;OAWG;IACF,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI;IAe9F,MAAM;CAOP"}
1
+ {"version":3,"file":"webgl-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgl-canvas-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAC3C,OAAO,EAAC,gBAAgB,EAAC,yCAAsC;AAE/D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,YAAY,CAAiC;gBAEzC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB;IAS1D,qBAAqB,IAAI,gBAAgB;IAOzC,sDAAsD;IACtD,MAAM;IAUN;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI;IAW7F,MAAM;CAOP"}
@@ -1,54 +1,65 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { CanvasContext } from '@luma.gl/api';
3
- import { getDevicePixelRatio, setDevicePixelRatio } from '../context/context/device-pixels';
4
- import WEBGLFramebuffer from './resources/webgl-framebuffer';
5
- export default class WebGLCanvasContext extends CanvasContext {
6
- constructor(device, props) {
7
- super(props);
8
-
9
- _defineProperty(this, "device", void 0);
10
-
11
- _defineProperty(this, "presentationSize", void 0);
12
-
13
- _defineProperty(this, "_framebuffer", null);
14
-
15
- this.device = device;
16
- this.presentationSize = [-1, -1];
17
- this.update();
18
- }
19
-
20
- getCurrentFramebuffer() {
21
- this.update();
22
- this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {
23
- handle: null
24
- });
25
- return this._framebuffer;
26
- }
27
-
28
- update() {
29
- const size = this.getPixelSize();
30
- const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
31
-
32
- if (sizeChanged) {
33
- this.presentationSize = size;
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { CanvasContext } from '@luma.gl/core';
5
+ import { WEBGLFramebuffer } from "./resources/webgl-framebuffer.js";
6
+ /**
7
+ * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
8
+ */
9
+ export class WebGLCanvasContext extends CanvasContext {
10
+ device;
11
+ presentationSize;
12
+ _framebuffer = null;
13
+ constructor(device, props) {
14
+ // Note: Base class creates / looks up the canvas (unless under Node.js)
15
+ super(props);
16
+ this.device = device;
17
+ this.presentationSize = [-1, -1];
18
+ this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
19
+ this.update();
34
20
  }
35
- }
36
-
37
- resize(options) {
38
- if (this.canvas) {
39
- const devicePixelRatio = getDevicePixelRatio(options === null || options === void 0 ? void 0 : options.useDevicePixels);
40
- setDevicePixelRatio(this.device.gl, devicePixelRatio, options);
41
- return;
21
+ getCurrentFramebuffer() {
22
+ this.update();
23
+ // Setting handle to null returns a reference to the default framebuffer
24
+ this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, { handle: null });
25
+ return this._framebuffer;
42
26
  }
43
-
44
- const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
45
-
46
- if (ext && options && "width" in options && "height" in options) {
47
- ext.resize(options.width, options.height);
27
+ /** Resizes and updates render targets if necessary */
28
+ update() {
29
+ const size = this.getPixelSize();
30
+ const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
31
+ if (sizeChanged) {
32
+ this.presentationSize = size;
33
+ this.resize();
34
+ }
35
+ }
36
+ /**
37
+ * Resize the canvas' drawing buffer.
38
+ *
39
+ * Can match the canvas CSS size, and optionally also consider devicePixelRatio
40
+ * Can be called every frame
41
+ *
42
+ * Regardless of size, the drawing buffer will always be scaled to the viewport, but
43
+ * for best visual results, usually set to either:
44
+ * canvas CSS width x canvas CSS height
45
+ * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
46
+ * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
47
+ */
48
+ resize(options) {
49
+ if (!this.device.gl)
50
+ return;
51
+ // Resize browser context .
52
+ if (this.canvas) {
53
+ const devicePixelRatio = this.getDevicePixelRatio(options?.useDevicePixels);
54
+ this.setDevicePixelRatio(devicePixelRatio, options);
55
+ return;
56
+ }
57
+ }
58
+ commit() {
59
+ // gl.commit was ultimately removed from the WebGL standard??
60
+ // if (this.offScreen && this.gl.commit) {
61
+ // // @ts-expect-error gl.commit is not officially part of WebGL2RenderingContext
62
+ // this.gl.commit();
63
+ // }
48
64
  }
49
- }
50
-
51
- commit() {}
52
-
53
65
  }
54
- //# sourceMappingURL=webgl-canvas-context.js.map