@luma.gl/webgl 9.0.0-alpha.15 → 9.0.0-alpha.16

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 (367) hide show
  1. package/dist/adapter/converters/device-parameters.js +199 -136
  2. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  3. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +62 -176
  5. package/dist/adapter/converters/sampler-parameters.js +149 -206
  6. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  7. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  8. package/dist/adapter/converters/texture-formats.js +437 -890
  9. package/dist/adapter/converters/vertex-formats.js +15 -33
  10. package/dist/adapter/device-helpers/device-features.js +119 -100
  11. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  12. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  13. package/dist/adapter/device-helpers/device-limits.js +88 -86
  14. package/dist/adapter/device-helpers/get-device-info.js +42 -43
  15. package/dist/adapter/device-helpers/is-old-ie.js +9 -6
  16. package/dist/adapter/helpers/attribute-utils.js +50 -74
  17. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  18. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  19. package/dist/adapter/helpers/get-shader-info.js +27 -0
  20. package/dist/adapter/helpers/get-shader-layout.js +307 -296
  21. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  22. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  23. package/dist/adapter/helpers/parse-shader-compiler-log.js +32 -33
  24. package/dist/adapter/helpers/set-uniform.js +67 -110
  25. package/dist/adapter/helpers/uniforms.js +80 -85
  26. package/dist/adapter/objects/constants-to-keys.js +33 -33
  27. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  28. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
  30. package/dist/adapter/objects/webgl-resource.js +213 -205
  31. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  32. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  33. package/dist/adapter/objects/webgl-vertex-array-object.js +74 -76
  34. package/dist/adapter/resources/webgl-buffer.js +150 -147
  35. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  36. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgl-command-buffer.js +39 -55
  38. package/dist/adapter/resources/webgl-command-encoder.js +25 -49
  39. package/dist/adapter/resources/webgl-external-texture.js +91 -1
  40. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  41. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-framebuffer.js +231 -258
  43. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  44. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-render-pass.js +8 -18
  46. package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
  47. package/dist/adapter/resources/webgl-sampler.js +42 -47
  48. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  49. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgl-shader.js +58 -68
  51. package/dist/adapter/resources/webgl-texture.d.ts +5 -5
  52. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgl-texture.js +661 -815
  54. package/dist/adapter/webgl-canvas-context.js +55 -49
  55. package/dist/adapter/webgl-device.js +288 -338
  56. package/dist/bundle.js +1 -2
  57. package/dist/classic/accessor.js +120 -127
  58. package/dist/classic/buffer.d.ts +1 -1
  59. package/dist/classic/buffer.d.ts.map +1 -1
  60. package/dist/classic/buffer.js +325 -356
  61. package/dist/classic/typed-array-utils.d.ts +1 -1
  62. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  63. package/dist/classic/typed-array-utils.js +91 -101
  64. package/dist/context/context/create-browser-context.d.ts +1 -2
  65. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  66. package/dist/context/context/create-browser-context.js +61 -52
  67. package/dist/context/context/create-headless-context.d.ts +1 -1
  68. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  69. package/dist/context/context/create-headless-context.js +26 -33
  70. package/dist/context/context/webgl-checks.js +25 -20
  71. package/dist/context/debug/spector.d.ts +1 -2
  72. package/dist/context/debug/spector.d.ts.map +1 -1
  73. package/dist/context/debug/spector.js +53 -62
  74. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  75. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  76. package/dist/context/debug/webgl-developer-tools.js +106 -93
  77. package/dist/context/parameters/unified-parameter-api.js +91 -55
  78. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  79. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  80. package/dist/context/parameters/webgl-parameter-tables.js +462 -423
  81. package/dist/context/polyfill/context-data.js +16 -12
  82. package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
  83. package/dist/context/polyfill/polyfill-context.js +75 -80
  84. package/dist/context/polyfill/polyfill-table.js +133 -139
  85. package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
  86. package/dist/context/state-tracker/deep-array-equal.js +16 -18
  87. package/dist/context/state-tracker/track-context-state.js +183 -161
  88. package/dist/context/state-tracker/with-parameters.js +43 -35
  89. package/dist/dist.min.js +1 -0
  90. package/dist/es5/adapter/converters/device-parameters.js +3 -38
  91. package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
  92. package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
  93. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
  94. package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
  95. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
  96. package/dist/es5/adapter/converters/texture-formats.js +9 -81
  97. package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
  98. package/dist/es5/adapter/converters/vertex-formats.js +0 -12
  99. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
  100. package/dist/es5/adapter/device-helpers/device-features.js +6 -40
  101. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  102. package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
  103. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  104. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
  105. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  106. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
  107. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
  108. package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
  109. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
  110. package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
  111. package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
  112. package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
  113. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
  114. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
  115. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  116. package/dist/es5/adapter/helpers/set-uniform.js +0 -33
  117. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
  118. package/dist/es5/adapter/helpers/uniforms.js +13 -37
  119. package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
  120. package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
  121. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
  122. package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
  123. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
  124. package/dist/es5/adapter/objects/webgl-resource.js +6 -60
  125. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
  126. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
  127. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  128. package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
  129. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
  130. package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
  131. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
  132. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
  133. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
  134. package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
  135. package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
  136. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
  137. package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
  138. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
  139. package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
  140. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
  141. package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
  142. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
  143. package/dist/es5/adapter/resources/webgl-shader.js +13 -52
  144. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
  145. package/dist/es5/adapter/resources/webgl-texture.js +137 -291
  146. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
  147. package/dist/es5/adapter/webgl-canvas-context.js +0 -24
  148. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  149. package/dist/es5/adapter/webgl-device.js +40 -127
  150. package/dist/es5/adapter/webgl-device.js.map +1 -1
  151. package/dist/es5/bundle.js +0 -1
  152. package/dist/es5/bundle.js.map +1 -1
  153. package/dist/es5/classic/accessor.js +1 -31
  154. package/dist/es5/classic/accessor.js.map +1 -1
  155. package/dist/es5/classic/buffer.js +32 -102
  156. package/dist/es5/classic/buffer.js.map +1 -1
  157. package/dist/es5/classic/typed-array-utils.js +10 -37
  158. package/dist/es5/classic/typed-array-utils.js.map +1 -1
  159. package/dist/es5/context/context/create-browser-context.js +4 -21
  160. package/dist/es5/context/context/create-browser-context.js.map +1 -1
  161. package/dist/es5/context/context/create-headless-context.js +8 -21
  162. package/dist/es5/context/context/create-headless-context.js.map +1 -1
  163. package/dist/es5/context/context/webgl-checks.js +4 -14
  164. package/dist/es5/context/context/webgl-checks.js.map +1 -1
  165. package/dist/es5/context/debug/spector.js +20 -54
  166. package/dist/es5/context/debug/spector.js.map +1 -1
  167. package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
  168. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
  169. package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
  170. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  171. package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
  172. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/es5/context/polyfill/context-data.js +0 -3
  174. package/dist/es5/context/polyfill/context-data.js.map +1 -1
  175. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
  176. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/es5/context/polyfill/polyfill-context.js +8 -33
  178. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  179. package/dist/es5/context/polyfill/polyfill-table.js +3 -27
  180. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
  182. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  183. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
  184. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  185. package/dist/es5/context/state-tracker/track-context-state.js +10 -53
  186. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  187. package/dist/es5/context/state-tracker/with-parameters.js +1 -13
  188. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  189. package/dist/es5/index.js +72 -99
  190. package/dist/es5/index.js.map +1 -1
  191. package/dist/es5/init.js +0 -3
  192. package/dist/es5/init.js.map +1 -1
  193. package/dist/es5/types/webgl.js +0 -1
  194. package/dist/es5/types/webgl.js.map +1 -1
  195. package/dist/es5/types.js.map +1 -1
  196. package/dist/esm/adapter/converters/device-parameters.js +0 -20
  197. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  198. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
  199. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
  200. package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
  201. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
  202. package/dist/esm/adapter/converters/texture-formats.js +8 -52
  203. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  204. package/dist/esm/adapter/converters/vertex-formats.js +0 -9
  205. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  206. package/dist/esm/adapter/device-helpers/device-features.js +2 -19
  207. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  208. package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
  209. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  210. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
  211. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  212. package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
  213. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
  214. package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
  215. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
  216. package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
  217. package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
  218. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
  219. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  220. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
  221. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  222. package/dist/esm/adapter/helpers/set-uniform.js +0 -30
  223. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  224. package/dist/esm/adapter/helpers/uniforms.js +0 -10
  225. package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
  226. package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
  227. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  228. package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
  229. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  230. package/dist/esm/adapter/objects/webgl-resource.js +10 -57
  231. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  232. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
  233. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  234. package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
  235. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  236. package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
  237. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
  238. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
  239. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  240. package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
  241. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
  242. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  243. package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
  244. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
  245. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
  246. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  247. package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
  248. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  249. package/dist/esm/adapter/resources/webgl-shader.js +2 -16
  250. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  251. package/dist/esm/adapter/resources/webgl-texture.js +36 -154
  252. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  253. package/dist/esm/adapter/webgl-canvas-context.js +0 -14
  254. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  255. package/dist/esm/adapter/webgl-device.js +19 -89
  256. package/dist/esm/adapter/webgl-device.js.map +1 -1
  257. package/dist/esm/bundle.js +0 -1
  258. package/dist/esm/bundle.js.map +1 -1
  259. package/dist/esm/classic/accessor.js +10 -34
  260. package/dist/esm/classic/accessor.js.map +1 -1
  261. package/dist/esm/classic/buffer.js +15 -71
  262. package/dist/esm/classic/buffer.js.map +1 -1
  263. package/dist/esm/classic/typed-array-utils.js +0 -20
  264. package/dist/esm/classic/typed-array-utils.js.map +1 -1
  265. package/dist/esm/context/context/create-browser-context.js +6 -14
  266. package/dist/esm/context/context/create-browser-context.js.map +1 -1
  267. package/dist/esm/context/context/create-headless-context.js +2 -6
  268. package/dist/esm/context/context/create-headless-context.js.map +1 -1
  269. package/dist/esm/context/context/webgl-checks.js +0 -3
  270. package/dist/esm/context/context/webgl-checks.js.map +1 -1
  271. package/dist/esm/context/debug/spector.js +2 -14
  272. package/dist/esm/context/debug/spector.js.map +1 -1
  273. package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
  274. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  275. package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
  276. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  277. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
  278. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  279. package/dist/esm/context/polyfill/context-data.js +0 -2
  280. package/dist/esm/context/polyfill/context-data.js.map +1 -1
  281. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
  282. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  283. package/dist/esm/context/polyfill/polyfill-context.js +14 -21
  284. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  285. package/dist/esm/context/polyfill/polyfill-table.js +0 -23
  286. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  287. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
  288. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  289. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
  290. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  291. package/dist/esm/context/state-tracker/track-context-state.js +11 -45
  292. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  293. package/dist/esm/context/state-tracker/with-parameters.js +0 -6
  294. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  295. package/dist/esm/index.js.map +1 -1
  296. package/dist/esm/init.js.map +1 -1
  297. package/dist/esm/types/webgl.js.map +1 -1
  298. package/dist/esm/types.js.map +1 -1
  299. package/dist/index.js +39 -25
  300. package/dist/init.js +1 -2
  301. package/dist/types/webgl.d.ts +20 -20
  302. package/dist/types/webgl.d.ts.map +1 -1
  303. package/dist/types/webgl.js +0 -1
  304. package/dist/types.d.ts +1 -1
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +0 -1
  307. package/package.json +8 -8
  308. package/src/adapter/helpers/get-shader-info.ts +37 -0
  309. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  310. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  311. package/src/adapter/resources/webgl-shader.ts +2 -2
  312. package/src/adapter/webgl-device.ts +1 -1
  313. package/src/context/debug/webgl-developer-tools.ts +0 -1
  314. package/src/types/webgl.ts +4 -4
  315. package/dist/adapter/converters/device-parameters.js.map +0 -1
  316. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  317. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  318. package/dist/adapter/converters/texture-formats.js.map +0 -1
  319. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  320. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  321. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  323. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  324. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  326. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  327. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/adapter/helpers/uniforms.js.map +0 -1
  329. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  330. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  331. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  333. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  334. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  335. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  336. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  338. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  339. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  341. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  343. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  344. package/dist/adapter/webgl-device.js.map +0 -1
  345. package/dist/bundle.js.map +0 -1
  346. package/dist/classic/accessor.js.map +0 -1
  347. package/dist/classic/buffer.js.map +0 -1
  348. package/dist/classic/typed-array-utils.js.map +0 -1
  349. package/dist/context/context/create-browser-context.js.map +0 -1
  350. package/dist/context/context/create-headless-context.js.map +0 -1
  351. package/dist/context/context/webgl-checks.js.map +0 -1
  352. package/dist/context/debug/spector.js.map +0 -1
  353. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  354. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  355. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  356. package/dist/context/polyfill/context-data.js.map +0 -1
  357. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  358. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  359. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  360. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  361. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  362. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  363. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/init.js.map +0 -1
  366. package/dist/types/webgl.js.map +0 -1
  367. package/dist/types.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { TypedArray } from '@luma.gl/api';
2
2
  import { GLType } from '../types/webgl';
3
- declare type TypedArrayConstructor = Float32ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int8ArrayConstructor | Int16ArrayConstructor | Int32ArrayConstructor;
3
+ type TypedArrayConstructor = Float32ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int8ArrayConstructor | Int16ArrayConstructor | Int32ArrayConstructor;
4
4
  /**
5
5
  * Converts TYPED ARRAYS to corresponding GL constant
6
6
  * Used to auto deduce gl parameter types
@@ -1 +1 @@
1
- {"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAIrC,aAAK,qBAAqB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,qBAAqB,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAuBvE;AAED;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,EACX,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,qBAAqB,CAwBvB;AAED;;;;;GAKG;AACF,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IACjC,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,IAAI,CAgBP;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;CACb,GAAG;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
1
+ {"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAIrC,KAAK,qBAAqB,GACtB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,qBAAqB,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAuBvE;AAED;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,EACX,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,qBAAqB,CAwBvB;AAED;;;;;GAKG;AACF,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IACjC,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,IAAI,CAgBP;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;CACb,GAAG;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
@@ -1,112 +1,102 @@
1
+ // luma.gl, MIT license
1
2
  import GL from '@luma.gl/constants';
2
3
  const ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';
4
+ /**
5
+ * Converts TYPED ARRAYS to corresponding GL constant
6
+ * Used to auto deduce gl parameter types
7
+ * @param {*} arrayOrType
8
+ * @returns
9
+ */
3
10
  export function getGLTypeFromTypedArray(arrayOrType) {
4
- const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;
5
-
6
- switch (type) {
7
- case Float32Array:
8
- return GL.FLOAT;
9
-
10
- case Uint16Array:
11
- return GL.UNSIGNED_SHORT;
12
-
13
- case Uint32Array:
14
- return GL.UNSIGNED_INT;
15
-
16
- case Uint8Array:
17
- return GL.UNSIGNED_BYTE;
18
-
19
- case Uint8ClampedArray:
20
- return GL.UNSIGNED_BYTE;
21
-
22
- case Int8Array:
23
- return GL.BYTE;
24
-
25
- case Int16Array:
26
- return GL.SHORT;
27
-
28
- case Int32Array:
29
- return GL.INT;
30
-
31
- default:
32
- throw new Error(ERR_TYPE_DEDUCTION);
33
- }
11
+ // If typed array, look up constructor
12
+ const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;
13
+ switch (type) {
14
+ case Float32Array:
15
+ return GL.FLOAT;
16
+ case Uint16Array:
17
+ return GL.UNSIGNED_SHORT;
18
+ case Uint32Array:
19
+ return GL.UNSIGNED_INT;
20
+ case Uint8Array:
21
+ return GL.UNSIGNED_BYTE;
22
+ case Uint8ClampedArray:
23
+ return GL.UNSIGNED_BYTE;
24
+ case Int8Array:
25
+ return GL.BYTE;
26
+ case Int16Array:
27
+ return GL.SHORT;
28
+ case Int32Array:
29
+ return GL.INT;
30
+ default:
31
+ throw new Error(ERR_TYPE_DEDUCTION);
32
+ }
34
33
  }
34
+ /**
35
+ * Converts GL constant to corresponding TYPED ARRAY
36
+ * Used to auto deduce gl parameter types
37
+ * @param {*} glType
38
+ * @param {*} param1
39
+ * @returns
40
+ */
41
+ // eslint-disable-next-line complexity
35
42
  export function getTypedArrayFromGLType(glType, options) {
36
- const {
37
- clamped = true
38
- } = options || {};
39
-
40
- switch (glType) {
41
- case GL.FLOAT:
42
- return Float32Array;
43
-
44
- case GL.UNSIGNED_SHORT:
45
- case GL.UNSIGNED_SHORT_5_6_5:
46
- case GL.UNSIGNED_SHORT_4_4_4_4:
47
- case GL.UNSIGNED_SHORT_5_5_5_1:
48
- return Uint16Array;
49
-
50
- case GL.UNSIGNED_INT:
51
- return Uint32Array;
52
-
53
- case GL.UNSIGNED_BYTE:
54
- return clamped ? Uint8ClampedArray : Uint8Array;
55
-
56
- case GL.BYTE:
57
- return Int8Array;
58
-
59
- case GL.SHORT:
60
- return Int16Array;
61
-
62
- case GL.INT:
63
- return Int32Array;
64
-
65
- default:
66
- throw new Error('Failed to deduce typed array type from GL constant');
67
- }
43
+ const { clamped = true } = options || {};
44
+ // Sorted in some order of likelihood to reduce amount of comparisons
45
+ switch (glType) {
46
+ case GL.FLOAT:
47
+ return Float32Array;
48
+ case GL.UNSIGNED_SHORT:
49
+ case GL.UNSIGNED_SHORT_5_6_5:
50
+ case GL.UNSIGNED_SHORT_4_4_4_4:
51
+ case GL.UNSIGNED_SHORT_5_5_5_1:
52
+ return Uint16Array;
53
+ case GL.UNSIGNED_INT:
54
+ return Uint32Array;
55
+ case GL.UNSIGNED_BYTE:
56
+ return clamped ? Uint8ClampedArray : Uint8Array;
57
+ case GL.BYTE:
58
+ return Int8Array;
59
+ case GL.SHORT:
60
+ return Int16Array;
61
+ case GL.INT:
62
+ return Int32Array;
63
+ default:
64
+ throw new Error('Failed to deduce typed array type from GL constant');
65
+ }
68
66
  }
67
+ /**
68
+ * Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)
69
+ * https: *stackoverflow.com/questions/41969562/
70
+ * how-can-i-flip-the-result-of-webglrenderingcontext-readpixels
71
+ * @param {*} param0
72
+ */
69
73
  export function flipRows(options) {
70
- const {
71
- data,
72
- width,
73
- height,
74
- bytesPerPixel = 4,
75
- temp
76
- } = options;
77
- const bytesPerRow = width * bytesPerPixel;
78
- const tempBuffer = temp || new Uint8Array(bytesPerRow);
79
-
80
- for (let y = 0; y < height / 2; ++y) {
81
- const topOffset = y * bytesPerRow;
82
- const bottomOffset = (height - y - 1) * bytesPerRow;
83
- tempBuffer.set(data.subarray(topOffset, topOffset + bytesPerRow));
84
- data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);
85
- data.set(tempBuffer, bottomOffset);
86
- }
74
+ const { data, width, height, bytesPerPixel = 4, temp } = options;
75
+ const bytesPerRow = width * bytesPerPixel;
76
+ // make a temp buffer to hold one row
77
+ const tempBuffer = temp || new Uint8Array(bytesPerRow);
78
+ for (let y = 0; y < height / 2; ++y) {
79
+ const topOffset = y * bytesPerRow;
80
+ const bottomOffset = (height - y - 1) * bytesPerRow;
81
+ // make copy of a row on the top half
82
+ tempBuffer.set(data.subarray(topOffset, topOffset + bytesPerRow));
83
+ // copy a row from the bottom half to the top
84
+ data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);
85
+ // copy the copy of the top half row to the bottom half
86
+ data.set(tempBuffer, bottomOffset);
87
+ }
87
88
  }
88
89
  export function scalePixels(options) {
89
- const {
90
- data,
91
- width,
92
- height
93
- } = options;
94
- const newWidth = Math.round(width / 2);
95
- const newHeight = Math.round(height / 2);
96
- const newData = new Uint8Array(newWidth * newHeight * 4);
97
-
98
- for (let y = 0; y < newHeight; y++) {
99
- for (let x = 0; x < newWidth; x++) {
100
- for (let c = 0; c < 4; c++) {
101
- newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];
102
- }
90
+ const { data, width, height } = options;
91
+ const newWidth = Math.round(width / 2);
92
+ const newHeight = Math.round(height / 2);
93
+ const newData = new Uint8Array(newWidth * newHeight * 4);
94
+ for (let y = 0; y < newHeight; y++) {
95
+ for (let x = 0; x < newWidth; x++) {
96
+ for (let c = 0; c < 4; c++) {
97
+ newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];
98
+ }
99
+ }
103
100
  }
104
- }
105
-
106
- return {
107
- data: newData,
108
- width: newWidth,
109
- height: newHeight
110
- };
101
+ return { data: newData, width: newWidth, height: newHeight };
111
102
  }
112
- //# sourceMappingURL=typed-array-utils.js.map
@@ -1,4 +1,3 @@
1
- /// <reference types="offscreencanvas" />
2
1
  /**
3
2
  * ContextProps
4
3
  * @param webgl2 Set to false to not create a WebGL2 context (force webgl1)
@@ -16,7 +15,7 @@
16
15
  * @param preserveDrawingBuffer Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten
17
16
  * @param failIfMajorPerformanceCaveat Do not create if the system performance is low.
18
17
  */
19
- declare type ContextProps = {
18
+ type ContextProps = {
20
19
  type?: 'webgl' | 'webgl1' | 'webgl2' | string;
21
20
  webgl1?: boolean;
22
21
  webgl2?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"create-browser-context.d.ts","sourceRoot":"","sources":["../../../src/context/context/create-browser-context.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;EAgBE;AACF,aAAK,YAAY,GAAG;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,eAAe,CAAC,EAAE,SAAS,GAAI,kBAAkB,GAAG,WAAW,CAAC;IAChE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAC;AAUF;;;;GAIG;AACF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAiD7H"}
1
+ {"version":3,"file":"create-browser-context.d.ts","sourceRoot":"","sources":["../../../src/context/context/create-browser-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;EAgBE;AACF,KAAK,YAAY,GAAG;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,eAAe,CAAC,EAAE,SAAS,GAAI,kBAAkB,GAAG,WAAW,CAAC;IAChE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAC;AAUF;;;;GAIG;AACF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,qBAAqB,CAiD7H"}
@@ -1,61 +1,70 @@
1
+ // luma.gl, MIT license
1
2
  const DEFAULT_CONTEXT_PROPS = {
2
- webgl2: true,
3
- webgl1: true,
4
- powerPreference: 'high-performance',
5
- onContextLost: () => console.error('WebGL context lost'),
6
- onContextRestored: () => console.info('WebGL context restored')
3
+ webgl2: true,
4
+ webgl1: true,
5
+ powerPreference: 'high-performance',
6
+ onContextLost: () => console.error('WebGL context lost'),
7
+ onContextRestored: () => console.info('WebGL context restored'),
7
8
  };
9
+ /**
10
+ * Create a WebGL context for a canvas
11
+ * Note calling this multiple time on the same canvas does return the same context
12
+ * @param canvas A canvas element or offscreen canvas
13
+ */
8
14
  export function createBrowserContext(canvas, props) {
9
- props = { ...DEFAULT_CONTEXT_PROPS,
10
- ...props
11
- };
12
- let errorMessage = null;
13
-
14
- const onCreateError = error => errorMessage = error.statusMessage || errorMessage;
15
-
16
- canvas.addEventListener('webglcontextcreationerror', onCreateError, false);
17
- let gl = null;
18
-
19
- if (props.type === 'webgl2') {
20
- props = { ...props,
21
- webgl1: false
22
- };
23
- }
24
-
25
- if (props.type === 'webgl1') {
26
- props = { ...props,
27
- webgl2: false
28
- };
29
- }
30
-
31
- if (props.webgl2) {
32
- gl = gl || canvas.getContext('webgl2', props);
33
- }
34
-
35
- if (props.webgl1) {
36
- gl = gl || canvas.getContext('webgl', props);
37
- }
15
+ props = { ...DEFAULT_CONTEXT_PROPS, ...props };
16
+ // Try to extract any extra information about why context creation failed
17
+ let errorMessage = null;
18
+ const onCreateError = (error) => (errorMessage = error.statusMessage || errorMessage);
19
+ canvas.addEventListener('webglcontextcreationerror', onCreateError, false);
20
+ // Create the desired context
21
+ let gl = null;
22
+ if (props.type === 'webgl2') {
23
+ props = { ...props, webgl1: false };
24
+ }
25
+ if (props.type === 'webgl1') {
26
+ props = { ...props, webgl2: false };
27
+ }
28
+ // Prefer webgl2 over webgl1 if both are acceptable
29
+ if (props.webgl2) {
30
+ gl = gl || canvas.getContext('webgl2', props);
31
+ }
32
+ if (props.webgl1) {
33
+ gl = gl || canvas.getContext('webgl', props);
34
+ }
35
+ // TODO are we removing this listener before giving it a chance to fire?
36
+ canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);
37
+ if (!gl) {
38
+ throw new Error(`Failed to create ${props.webgl2 && !props.webgl1 ? 'WebGL2' : 'WebGL'} context: ${errorMessage || 'Unknown error'}`);
39
+ }
40
+ if (props.onContextLost) {
41
+ // Carefully extract and wrap callbacks to prevent addEventListener from rebinding them.
42
+ const { onContextLost } = props;
43
+ canvas.addEventListener('webglcontextlost', (event) => onContextLost(event), false);
44
+ }
45
+ if (props.onContextRestored) {
46
+ // Carefully extract and wrap callbacks to prevent addEventListener from rebinding them.
47
+ const { onContextRestored } = props;
48
+ canvas.addEventListener('webglcontextrestored', (event) => onContextRestored(event), false);
49
+ }
50
+ return gl;
51
+ }
52
+ /* TODO - can we call this asynchronously to catch the error events?
53
+ export async function createBrowserContextAsync(canvas: HTMLCanvasElement | OffscreenCanvas, props: ContextProps): Promise<WebGLRenderingContext> {
54
+ props = {...DEFAULT_CONTEXT_PROPS, ...props};
38
55
 
39
- canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);
56
+ // Try to extract any extra information about why context creation failed
57
+ let errorMessage = null;
58
+ const onCreateError = (error) => (errorMessage = error.statusMessage || errorMessage);
59
+ canvas.addEventListener('webglcontextcreationerror', onCreateError, false);
40
60
 
41
- if (!gl) {
42
- throw new Error("Failed to create ".concat(props.webgl2 && !props.webgl1 ? 'WebGL2' : 'WebGL', " context: ").concat(errorMessage || 'Unknown error'));
43
- }
61
+ const gl = createBrowserContext(canvas, props);
44
62
 
45
- if (props.onContextLost) {
46
- const {
47
- onContextLost
48
- } = props;
49
- canvas.addEventListener('webglcontextlost', event => onContextLost(event), false);
50
- }
63
+ // Give the listener a chance to fire
64
+ await new Promise(resolve => setTimeout(resolve, 0));
51
65
 
52
- if (props.onContextRestored) {
53
- const {
54
- onContextRestored
55
- } = props;
56
- canvas.addEventListener('webglcontextrestored', event => onContextRestored(event), false);
57
- }
66
+ canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);
58
67
 
59
- return gl;
68
+ return gl;
60
69
  }
61
- //# sourceMappingURL=create-browser-context.js.map
70
+ */
@@ -1,5 +1,5 @@
1
1
  /** Duck typing for the main headless gl export, a function to create contexts */
2
- export declare type HeadlessGL = (width: number, height: number, options: Record<string, unknown>) => WebGLRenderingContext;
2
+ export type HeadlessGL = (width: number, height: number, options: Record<string, unknown>) => WebGLRenderingContext;
3
3
  /** By importing `gl` and registering it with this function, contexts can be created under Node.js */
4
4
  export declare function registerHeadlessGL(headlessgl: HeadlessGL): void;
5
5
  /** @returns true if headless gl is registered */
@@ -1 +1 @@
1
- {"version":3,"file":"create-headless-context.d.ts","sourceRoot":"","sources":["../../../src/context/context/create-headless-context.ts"],"names":[],"mappings":"AAeA,iFAAiF;AACjF,oBAAY,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,qBAAqB,CAAC;AAIpH,qGAAqG;AACrG,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,QAExD;AAED,iDAAiD;AACjD,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAgB1F"}
1
+ {"version":3,"file":"create-headless-context.d.ts","sourceRoot":"","sources":["../../../src/context/context/create-headless-context.ts"],"names":[],"mappings":"AAeA,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,qBAAqB,CAAC;AAIpH,qGAAqG;AACrG,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,QAExD;AAED,iDAAiD;AACjD,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAgB1F"}
@@ -1,43 +1,36 @@
1
1
  const ERR_HEADLESSGL_FAILED = 'Failed to create WebGL context in Node.js, headless gl returned null';
2
- const ERR_HEADLESSGL_LOAD = " luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL contexts can not be created. This may not be an error. For example, this is a typical configuration for isorender applications running on the server.";
2
+ const ERR_HEADLESSGL_LOAD = `\
3
+ luma.gl: loaded under Node.js without headless gl installed, meaning that WebGL \
4
+ contexts can not be created. This may not be an error. For example, this is a \
5
+ typical configuration for isorender applications running on the server.`;
3
6
  const CONTEXT_DEFAULTS = {
4
- width: 1,
5
- height: 1,
6
- debug: true,
7
- throwOnError: false
7
+ width: 1,
8
+ height: 1,
9
+ debug: true,
10
+ throwOnError: false
8
11
  };
9
12
  let headlessGL = null;
13
+ /** By importing `gl` and registering it with this function, contexts can be created under Node.js */
10
14
  export function registerHeadlessGL(headlessgl) {
11
- headlessGL = headlessgl;
15
+ headlessGL = headlessgl;
12
16
  }
17
+ /** @returns true if headless gl is registered */
13
18
  export function isHeadlessGLRegistered() {
14
- return headlessGL !== null;
19
+ return headlessGL !== null;
15
20
  }
21
+ /** Create headless gl context (for running under Node.js) */
16
22
  export function createHeadlessContext(options) {
17
- options = { ...CONTEXT_DEFAULTS,
18
- ...options
19
- };
20
- const {
21
- width,
22
- height,
23
- webgl1,
24
- webgl2
25
- } = options;
26
-
27
- if (webgl2 && !webgl1) {
28
- throw new Error('headless-gl does not support WebGL2');
29
- }
30
-
31
- if (!headlessGL) {
32
- throw new Error(ERR_HEADLESSGL_LOAD);
33
- }
34
-
35
- const gl = headlessGL(width, height, options);
36
-
37
- if (!gl) {
38
- throw new Error(ERR_HEADLESSGL_FAILED);
39
- }
40
-
41
- return gl;
23
+ options = { ...CONTEXT_DEFAULTS, ...options };
24
+ const { width, height, webgl1, webgl2 } = options;
25
+ if (webgl2 && !webgl1) {
26
+ throw new Error('headless-gl does not support WebGL2');
27
+ }
28
+ if (!headlessGL) {
29
+ throw new Error(ERR_HEADLESSGL_LOAD);
30
+ }
31
+ const gl = headlessGL(width, height, options);
32
+ if (!gl) {
33
+ throw new Error(ERR_HEADLESSGL_FAILED);
34
+ }
35
+ return gl;
42
36
  }
43
- //# sourceMappingURL=create-headless-context.js.map
@@ -1,34 +1,39 @@
1
+ // luma.gl, MIT license
1
2
  import { assert } from '@luma.gl/api';
2
3
  const ERR_CONTEXT = 'Invalid WebGLRenderingContext';
3
4
  export const ERR_WEBGL = ERR_CONTEXT;
4
5
  export const ERR_WEBGL2 = 'Requires WebGL2';
6
+ /** Check if supplied parameter is a WebGLRenderingContext */
5
7
  export function isWebGL(gl) {
6
- if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
7
- return true;
8
- }
9
-
10
- if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
11
- return true;
12
- }
13
-
14
- return Boolean(gl && Number.isFinite(gl._version));
8
+ if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
9
+ return true;
10
+ }
11
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
12
+ return true;
13
+ }
14
+ // Look for debug contexts, headless gl etc
15
+ return Boolean(gl && Number.isFinite(gl._version));
15
16
  }
17
+ /** Check if supplied parameter is a WebGL2RenderingContext */
16
18
  export function isWebGL2(gl) {
17
- if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
18
- return true;
19
- }
20
-
21
- return Boolean(gl && gl._version === 2);
19
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
20
+ return true;
21
+ }
22
+ // Look for debug contexts, headless gl etc
23
+ return Boolean(gl && gl._version === 2);
22
24
  }
25
+ /** Returns a properly typed WebGL2RenderingContext from a WebGL1 context, or null */
23
26
  export function getWebGL2Context(gl) {
24
- return isWebGL2(gl) ? gl : null;
27
+ // @ts-expect-error
28
+ return isWebGL2(gl) ? gl : null;
25
29
  }
30
+ /** Throw if supplied parameter is not a WebGLRenderingContext, otherwise return properly typed value */
26
31
  export function assertWebGLContext(gl) {
27
- assert(isWebGL(gl), ERR_CONTEXT);
28
- return gl;
32
+ assert(isWebGL(gl), ERR_CONTEXT);
33
+ return gl;
29
34
  }
35
+ /** Throw if supplied parameter is not a WebGL2RenderingContext, otherwise return properly typed value */
30
36
  export function assertWebGL2Context(gl) {
31
- assert(isWebGL2(gl), ERR_WEBGL2);
32
- return gl;
37
+ assert(isWebGL2(gl), ERR_WEBGL2);
38
+ return gl;
33
39
  }
34
- //# sourceMappingURL=webgl-checks.js.map
@@ -1,6 +1,5 @@
1
- /// <reference types="offscreencanvas" />
2
1
  /** Spector debug initialization options */
3
- declare type SpectorProps = {
2
+ type SpectorProps = {
4
3
  /** Canvas to monitor */
5
4
  canvas?: HTMLCanvasElement | OffscreenCanvas;
6
5
  /** Whether debug is enabled. Auto-detected if ommitted */
@@ -1 +1 @@
1
- {"version":3,"file":"spector.d.ts","sourceRoot":"","sources":["../../../src/context/debug/spector.ts"],"names":[],"mappings":";AAGA,2CAA2C;AAC3C,aAAK,YAAY,GAAG;IAClB,wBAAwB;IACxB,MAAM,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACrC,CAAC;AAaF,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,OAAO,EAAE,GAAG,CAAC;CAClB;AAED,sDAAsD;AACtD,wBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,iBAQvD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,YAAY,OAoDvD"}
1
+ {"version":3,"file":"spector.d.ts","sourceRoot":"","sources":["../../../src/context/debug/spector.ts"],"names":[],"mappings":"AAGA,2CAA2C;AAC3C,KAAK,YAAY,GAAG;IAClB,wBAAwB;IACxB,MAAM,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACrC,CAAC;AAaF,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,OAAO,EAAE,GAAG,CAAC;CAClB;AAED,sDAAsD;AACtD,wBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,iBAQvD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,YAAY,OAoDvD"}