@luma.gl/webgl 9.0.0-alpha.14 → 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,346 +1,296 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { Device, CanvasContext, log, uid } from '@luma.gl/api';
3
2
  import { isBrowser } from '@probe.gl/env';
4
- import { polyfillContext } from '../context/polyfill/polyfill-context';
5
- import { popContextState, pushContextState, trackContextState } from '../context/state-tracker/track-context-state';
6
- import { createBrowserContext } from '../context/context/create-browser-context';
7
- import { createHeadlessContext, isHeadlessGLRegistered } from '../context/context/create-headless-context';
8
- import { getDeviceInfo } from './device-helpers/get-device-info';
9
- import { getDeviceFeatures } from './device-helpers/device-features';
10
- import { getDeviceLimits, getWebGLLimits } from './device-helpers/device-limits';
11
- import WebGLCanvasContext from './webgl-canvas-context';
12
- import { loadSpectorJS, initializeSpectorJS } from '../context/debug/spector';
13
- import { loadWebGLDeveloperTools, makeDebugContext } from '../context/debug/webgl-developer-tools';
14
- import { isTextureFormatSupported, isTextureFormatRenderable, isTextureFormatFilterable } from './converters/texture-formats';
15
- import ClassicBuffer from '../classic/buffer';
16
- import WEBGLShader from './resources/webgl-shader';
17
- import WEBGLSampler from './resources/webgl-sampler';
18
- import WEBGLTexture from './resources/webgl-texture';
19
- import WEBGLFramebuffer from './resources/webgl-framebuffer';
20
- import WEBGLRenderPass from './resources/webgl-render-pass';
21
- import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
3
+ import { polyfillContext } from '../context/polyfill/polyfill-context.js';
4
+ import { popContextState, pushContextState, trackContextState } from '../context/state-tracker/track-context-state.js';
5
+ import { createBrowserContext } from '../context/context/create-browser-context.js';
6
+ import { createHeadlessContext, isHeadlessGLRegistered } from '../context/context/create-headless-context.js';
7
+ import { getDeviceInfo } from './device-helpers/get-device-info.js';
8
+ import { getDeviceFeatures } from './device-helpers/device-features.js';
9
+ import { getDeviceLimits, getWebGLLimits } from './device-helpers/device-limits.js';
10
+ import WebGLCanvasContext from './webgl-canvas-context.js';
11
+ import { loadSpectorJS, initializeSpectorJS } from '../context/debug/spector.js';
12
+ import { loadWebGLDeveloperTools, makeDebugContext } from '../context/debug/webgl-developer-tools.js';
13
+ import { isTextureFormatSupported, isTextureFormatRenderable, isTextureFormatFilterable } from './converters/texture-formats.js';
14
+ import ClassicBuffer from '../classic/buffer.js';
15
+ import WEBGLShader from './resources/webgl-shader.js';
16
+ import WEBGLSampler from './resources/webgl-sampler.js';
17
+ import WEBGLTexture from './resources/webgl-texture.js';
18
+ import WEBGLFramebuffer from './resources/webgl-framebuffer.js';
19
+ import WEBGLRenderPass from './resources/webgl-render-pass.js';
20
+ import WEBGLRenderPipeline from './resources/webgl-render-pipeline.js';
22
21
  const LOG_LEVEL = 1;
23
- export default class WebGLDevice extends Device {
24
- static isSupported() {
25
- return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
26
- }
27
-
28
- get features() {
29
- this._features = this._features || getDeviceFeatures(this.gl);
30
- return this._features;
31
- }
32
-
33
- get limits() {
34
- this._limits = this._limits || getDeviceLimits(this.gl);
35
- return this._limits;
36
- }
37
-
38
- static attach(gl) {
39
- if (gl instanceof WebGLDevice) {
40
- return gl;
41
- }
42
-
43
- if ((gl === null || gl === void 0 ? void 0 : gl.device) instanceof Device) {
44
- return gl.device;
45
- }
46
-
47
- if (!isWebGL(gl)) {
48
- throw new Error('Invalid WebGLRenderingContext');
49
- }
50
-
51
- return new WebGLDevice({
52
- gl: gl
53
- });
54
- }
55
-
56
- static async create(props = {}) {
57
- log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
58
-
59
- if (typeof props.canvas === 'string') {
60
- await CanvasContext.pageLoaded;
61
- }
62
-
63
- if (props.debug) {
64
- await loadWebGLDeveloperTools();
65
- }
66
-
67
- if (props.spector) {
68
- await loadSpectorJS();
69
- }
70
-
71
- log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
72
-
73
- if (props.gl && props.gl.device) {
74
- return WebGLDevice.attach(props.gl);
75
- }
76
-
77
- return new WebGLDevice(props);
78
- }
79
-
80
- constructor(props) {
81
- var _props$gl;
82
-
83
- super({ ...props,
84
- id: props.id || uid('webgl-device')
85
- });
86
-
87
- _defineProperty(this, "info", void 0);
88
-
89
- _defineProperty(this, "canvasContext", void 0);
90
-
91
- _defineProperty(this, "handle", void 0);
92
-
93
- _defineProperty(this, "lost", void 0);
94
-
95
- _defineProperty(this, "_resolveContextLost", void 0);
96
-
97
- _defineProperty(this, "_features", void 0);
98
-
99
- _defineProperty(this, "_limits", void 0);
100
-
101
- _defineProperty(this, "renderPass", null);
102
-
103
- _defineProperty(this, "gl", void 0);
104
-
105
- _defineProperty(this, "gl2", null);
106
-
107
- _defineProperty(this, "debug", false);
108
-
109
- _defineProperty(this, "isWebGL1", void 0);
110
-
111
- _defineProperty(this, "isWebGL2", void 0);
112
-
113
- _defineProperty(this, "_canvasSizeInfo", {
114
- clientWidth: 0,
115
- clientHeight: 0,
116
- devicePixelRatio: 1
117
- });
118
-
119
- _defineProperty(this, "_extensions", {});
120
-
121
- _defineProperty(this, "_polyfilled", false);
122
-
123
- _defineProperty(this, "spector", void 0);
124
-
125
- _defineProperty(this, "_webglLimits", void 0);
126
-
127
- const device = (_props$gl = props.gl) === null || _props$gl === void 0 ? void 0 : _props$gl.device;
128
-
129
- if (device) {
130
- throw new Error("WebGL context already attached to device ".concat(device.id));
131
- }
132
-
133
- this.canvasContext = new WebGLCanvasContext(this, props);
134
- this.lost = new Promise(resolve => {
135
- this._resolveContextLost = resolve;
136
- });
137
-
138
- const onContextLost = event => {
139
- var _this$_resolveContext;
140
-
141
- return (_this$_resolveContext = this._resolveContextLost) === null || _this$_resolveContext === void 0 ? void 0 : _this$_resolveContext.call(this, {
142
- reason: 'destroyed',
143
- message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
144
- });
145
- };
146
-
147
- let gl = props.gl || null;
148
- gl = gl || (isBrowser() ? createBrowserContext(this.canvasContext.canvas, { ...props,
149
- onContextLost
150
- }) : null);
151
- gl = gl || (!isBrowser() ? createHeadlessContext({ ...props,
152
- onContextLost
153
- }) : null);
154
-
155
- if (!gl) {
156
- throw new Error('WebGL context creation failed');
157
- }
158
-
159
- this.handle = gl;
160
- this.gl = this.handle;
161
- this.gl2 = this.gl;
162
- this.isWebGL2 = isWebGL2(this.gl);
163
- this.isWebGL1 = !this.isWebGL2;
164
- this.info = getDeviceInfo(this.gl);
165
- this.gl.device = this;
166
- this.gl._version = this.isWebGL2 ? 2 : 1;
167
- polyfillContext(this.gl);
168
- const {
169
- enable = true,
170
- copyState = false
171
- } = props;
172
- trackContextState(this.gl, {
173
- enable,
174
- copyState,
175
- log: (...args) => log.log(1, ...args)()
176
- });
177
-
178
- if (isBrowser() && props.debug) {
179
- this.gl = makeDebugContext(this.gl, { ...props,
180
- webgl2: this.isWebGL2,
181
- throwOnError: true
182
- });
183
- this.gl2 = this.gl;
184
- this.debug = true;
185
- log.level = Math.max(log.level, 1);
186
- log.warn('WebGL debug mode activated. Performance reduced.')();
187
- }
188
-
189
- if (isBrowser() && props.spector) {
190
- const canvas = this.handle.canvas || props.canvas;
191
- this.spector = initializeSpectorJS({ ...this.props,
192
- canvas
193
- });
194
- }
195
-
196
- const message = "Created ".concat(this.info.type).concat(this.debug ? ' debug' : '', " context: ").concat(this.info.vendor, ", ").concat(this.info.renderer, " for canvas: ").concat(this.canvasContext.id);
197
- log.probe(LOG_LEVEL, message)();
198
- log.groupEnd(LOG_LEVEL)();
199
- }
200
-
201
- destroy() {
202
- const ext = this.gl.getExtension('STACKGL_destroy_context');
203
-
204
- if (ext) {
205
- ext.destroy();
206
- }
207
- }
208
-
209
- get isLost() {
210
- return this.gl.isContextLost();
211
- }
212
-
213
- getSize() {
214
- return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
215
- }
216
-
217
- isTextureFormatSupported(format) {
218
- return isTextureFormatSupported(this.gl, format);
219
- }
220
-
221
- isTextureFormatFilterable(format) {
222
- return isTextureFormatFilterable(this.gl, format);
223
- }
224
-
225
- isTextureFormatRenderable(format) {
226
- return isTextureFormatRenderable(this.gl, format);
227
- }
228
-
229
- assertWebGL2() {
230
- if (!this.gl2) {
231
- throw new Error('Requires WebGL2');
232
- }
233
-
234
- return this.gl2;
235
- }
236
-
237
- createCanvasContext(props) {
238
- throw new Error('WebGL only supports a single canvas');
239
- }
240
-
241
- _createBuffer(props) {
242
- return new ClassicBuffer(this, props);
243
- }
244
-
245
- _createTexture(props) {
246
- return new WEBGLTexture(this, props);
247
- }
248
-
249
- createExternalTexture(props) {
250
- throw new Error('createExternalTexture() not implemented');
251
- }
252
-
253
- createSampler(props) {
254
- return new WEBGLSampler(this, props);
255
- }
256
-
257
- createShader(props) {
258
- return new WEBGLShader(this, props);
259
- }
260
-
261
- createFramebuffer(props) {
262
- return new WEBGLFramebuffer(this, props);
263
- }
264
-
265
- createRenderPipeline(props) {
266
- return new WEBGLRenderPipeline(this, props);
267
- }
268
-
269
- beginRenderPass(props) {
270
- return new WEBGLRenderPass(this, props);
271
- }
272
-
273
- createComputePipeline(props) {
274
- throw new Error('ComputePipeline not supported in WebGL');
275
- }
276
-
277
- beginComputePass(props) {
278
- throw new Error('compute shaders not supported in WebGL');
279
- }
280
-
281
- getDefaultRenderPass() {
282
- this.renderPass = this.renderPass || this.beginRenderPass({
283
- framebuffer: this.canvasContext.getCurrentFramebuffer()
284
- });
285
- return this.renderPass;
286
- }
287
-
288
- submit() {
289
- var _this$renderPass;
290
-
291
- (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.endPass();
292
- this.renderPass = null;
293
- }
294
-
295
- get webglLimits() {
296
- this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
297
- return this._webglLimits;
298
- }
299
-
300
- loseDevice() {
301
- var _this$_resolveContext2;
302
-
303
- const ext = this.gl.getExtension('WEBGL_lose_context');
304
-
305
- if (ext) {
306
- ext.loseContext();
307
- }
308
-
309
- (_this$_resolveContext2 = this._resolveContextLost) === null || _this$_resolveContext2 === void 0 ? void 0 : _this$_resolveContext2.call(this, {
310
- reason: 'destroyed',
311
- message: 'Application triggered context loss'
312
- });
313
- }
314
-
315
- pushState() {
316
- pushContextState(this.gl);
317
- }
318
-
319
- popState() {
320
- popContextState(this.gl);
321
- }
322
-
22
+ /** WebGPU style Device API for a WebGL context */
23
+ class WebGLDevice extends Device {
24
+ static isSupported() {
25
+ return typeof WebGLRenderingContext !== 'undefined' || isHeadlessGLRegistered();
26
+ }
27
+ get features() {
28
+ this._features = this._features || getDeviceFeatures(this.gl);
29
+ return this._features;
30
+ }
31
+ get limits() {
32
+ this._limits = this._limits || getDeviceLimits(this.gl);
33
+ return this._limits;
34
+ }
35
+ //
36
+ // Static methods, expected to be present by `luma.createDevice()`
37
+ //
38
+ /**
39
+ * Get a device instance from a GL context
40
+ * Creates and instruments the device if not already created
41
+ * @param gl
42
+ * @returns
43
+ */
44
+ static attach(gl) {
45
+ if (gl instanceof WebGLDevice) {
46
+ return gl;
47
+ }
48
+ // @ts-expect-error
49
+ if (gl?.device instanceof Device) {
50
+ // @ts-expect-error
51
+ return gl.device;
52
+ }
53
+ if (!isWebGL(gl)) {
54
+ throw new Error('Invalid WebGLRenderingContext');
55
+ }
56
+ return new WebGLDevice({ gl: gl });
57
+ }
58
+ static async create(props = {}) {
59
+ log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
60
+ // Wait for page to load. Only wait when props. canvas is string
61
+ // to avoid setting page onload callback unless necessary
62
+ if (typeof props.canvas === 'string') {
63
+ await CanvasContext.pageLoaded;
64
+ }
65
+ // Load webgl and spector debug scripts from CDN if requested
66
+ if (props.debug) {
67
+ await loadWebGLDeveloperTools();
68
+ }
69
+ // @ts-expect-error spector not on props
70
+ if (props.spector) {
71
+ await loadSpectorJS();
72
+ }
73
+ log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
74
+ // @ts-expect-error
75
+ if (props.gl && props.gl.device) {
76
+ return WebGLDevice.attach(props.gl);
77
+ }
78
+ return new WebGLDevice(props);
79
+ }
80
+ //
81
+ // Public API
82
+ //
83
+ constructor(props) {
84
+ super({ ...props, id: props.id || uid('webgl-device') });
85
+ this.renderPass = null;
86
+ /** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
87
+ this.gl2 = null;
88
+ this.debug = false;
89
+ /** State used by luma.gl classes: TODO - move to canvasContext*/
90
+ this._canvasSizeInfo = { clientWidth: 0, clientHeight: 0, devicePixelRatio: 1 };
91
+ /** State used by luma.gl classes - TODO - not used? */
92
+ this._extensions = {};
93
+ this._polyfilled = false;
94
+ // If attaching to an already attached context, return the attached device
95
+ // @ts-expect-error device is attached to context
96
+ const device = props.gl?.device;
97
+ if (device) {
98
+ throw new Error(`WebGL context already attached to device ${device.id}`);
99
+ }
100
+ // Create and instrument context
101
+ this.canvasContext = new WebGLCanvasContext(this, props);
102
+ this.lost = new Promise((resolve) => {
103
+ this._resolveContextLost = resolve;
104
+ });
105
+ const onContextLost = (event) => this._resolveContextLost?.({
106
+ reason: 'destroyed',
107
+ message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
108
+ });
109
+ let gl = props.gl || null;
110
+ gl =
111
+ gl ||
112
+ (isBrowser() ? createBrowserContext(this.canvasContext.canvas, { ...props, onContextLost }) : null);
113
+ gl = gl || (!isBrowser() ? createHeadlessContext({ ...props, onContextLost }) : null);
114
+ if (!gl) {
115
+ throw new Error('WebGL context creation failed');
116
+ }
117
+ this.handle = gl;
118
+ this.gl = this.handle;
119
+ this.gl2 = this.gl;
120
+ this.isWebGL2 = isWebGL2(this.gl);
121
+ this.isWebGL1 = !this.isWebGL2;
122
+ // luma Device fields
123
+ this.info = getDeviceInfo(this.gl);
124
+ // @ts-expect-error Link webgl context back to device
125
+ this.gl.device = this;
126
+ // @ts-expect-error Annotate webgl context to handle
127
+ this.gl._version = this.isWebGL2 ? 2 : 1;
128
+ // Add subset of WebGL2 methods to WebGL1 context
129
+ polyfillContext(this.gl);
130
+ // Install context state tracking
131
+ // @ts-expect-error - hidden parameters
132
+ const { enable = true, copyState = false } = props;
133
+ trackContextState(this.gl, {
134
+ enable,
135
+ copyState,
136
+ log: (...args) => log.log(1, ...args)()
137
+ });
138
+ // DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
139
+ if (isBrowser() && props.debug) {
140
+ this.gl = makeDebugContext(this.gl, { ...props, webgl2: this.isWebGL2, throwOnError: true });
141
+ this.gl2 = this.gl;
142
+ this.debug = true;
143
+ log.level = Math.max(log.level, 1);
144
+ log.warn('WebGL debug mode activated. Performance reduced.')();
145
+ }
146
+ // @ts-expect-error spector not on props
147
+ if (isBrowser() && props.spector) {
148
+ const canvas = this.handle.canvas || props.canvas;
149
+ this.spector = initializeSpectorJS({ ...this.props, canvas });
150
+ }
151
+ // Log some debug info about the newly created context
152
+ const message = `\
153
+ Created ${this.info.type}${this.debug ? ' debug' : ''} context: \
154
+ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`;
155
+ log.probe(LOG_LEVEL, message)();
156
+ log.groupEnd(LOG_LEVEL)();
157
+ }
158
+ /**
159
+ * Destroys the context
160
+ * @note Has no effect for browser contexts, there is no browser API for destroying contexts
161
+ */
162
+ destroy() {
163
+ const ext = this.gl.getExtension('STACKGL_destroy_context');
164
+ if (ext) {
165
+ ext.destroy();
166
+ }
167
+ }
168
+ get isLost() {
169
+ return this.gl.isContextLost();
170
+ }
171
+ getSize() {
172
+ return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
173
+ }
174
+ isTextureFormatSupported(format) {
175
+ return isTextureFormatSupported(this.gl, format);
176
+ }
177
+ isTextureFormatFilterable(format) {
178
+ return isTextureFormatFilterable(this.gl, format);
179
+ }
180
+ isTextureFormatRenderable(format) {
181
+ return isTextureFormatRenderable(this.gl, format);
182
+ }
183
+ // WEBGL SPECIFIC METHODS
184
+ /** Returns a WebGL2RenderingContext or throws an error */
185
+ assertWebGL2() {
186
+ if (!this.gl2) {
187
+ throw new Error('Requires WebGL2');
188
+ }
189
+ return this.gl2;
190
+ }
191
+ // IMPLEMENTATION OF ABSTRACT DEVICE
192
+ createCanvasContext(props) {
193
+ throw new Error('WebGL only supports a single canvas');
194
+ }
195
+ _createBuffer(props) {
196
+ return new ClassicBuffer(this, props);
197
+ }
198
+ _createTexture(props) {
199
+ return new WEBGLTexture(this, props);
200
+ }
201
+ createExternalTexture(props) {
202
+ throw new Error('createExternalTexture() not implemented'); // return new Program(props);
203
+ }
204
+ createSampler(props) {
205
+ return new WEBGLSampler(this, props);
206
+ }
207
+ createShader(props) {
208
+ return new WEBGLShader(this, props);
209
+ }
210
+ createFramebuffer(props) {
211
+ return new WEBGLFramebuffer(this, props);
212
+ }
213
+ createRenderPipeline(props) {
214
+ return new WEBGLRenderPipeline(this, props);
215
+ }
216
+ beginRenderPass(props) {
217
+ return new WEBGLRenderPass(this, props);
218
+ }
219
+ createComputePipeline(props) {
220
+ throw new Error('ComputePipeline not supported in WebGL');
221
+ }
222
+ beginComputePass(props) {
223
+ throw new Error('compute shaders not supported in WebGL');
224
+ }
225
+ getDefaultRenderPass() {
226
+ this.renderPass =
227
+ this.renderPass ||
228
+ this.beginRenderPass({
229
+ framebuffer: this.canvasContext.getCurrentFramebuffer()
230
+ });
231
+ return this.renderPass;
232
+ }
233
+ /**
234
+ * Offscreen Canvas Support: Commit the frame
235
+ * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
236
+ * Chrome's offscreen canvas does not require gl.commit
237
+ */
238
+ submit() {
239
+ this.renderPass?.end();
240
+ this.renderPass = null;
241
+ // this.canvasContext.commit();
242
+ }
243
+ /** Return WebGL specific limits */
244
+ get webglLimits() {
245
+ this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
246
+ return this._webglLimits;
247
+ }
248
+ /**
249
+ * Loses the context
250
+ * @note Triggers context loss, mainly for testing
251
+ * @todo Promote to `Device` API?
252
+ */
253
+ loseDevice() {
254
+ const ext = this.gl.getExtension('WEBGL_lose_context');
255
+ if (ext) {
256
+ ext.loseContext();
257
+ }
258
+ // loseContext should trigger context loss callback but
259
+ this._resolveContextLost?.({
260
+ reason: 'destroyed',
261
+ message: 'Application triggered context loss'
262
+ });
263
+ }
264
+ /** Save current WebGL context state onto an internal stack */
265
+ pushState() {
266
+ pushContextState(this.gl);
267
+ }
268
+ /** Restores previously saved context state */
269
+ popState() {
270
+ popContextState(this.gl);
271
+ }
323
272
  }
324
-
325
- _defineProperty(WebGLDevice, "type", 'webgl');
326
-
273
+ //
274
+ // Public `Device` API
275
+ //
276
+ WebGLDevice.type = 'webgl';
277
+ export default WebGLDevice;
278
+ /** Check if supplied parameter is a WebGLRenderingContext */
327
279
  function isWebGL(gl) {
328
- if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
329
- return true;
330
- }
331
-
332
- if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
333
- return true;
334
- }
335
-
336
- return Boolean(gl && Number.isFinite(gl._version));
280
+ if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
281
+ return true;
282
+ }
283
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
284
+ return true;
285
+ }
286
+ // Look for debug contexts, headless gl etc
287
+ return Boolean(gl && Number.isFinite(gl._version));
337
288
  }
338
-
289
+ /** Check if supplied parameter is a WebGL2RenderingContext */
339
290
  function isWebGL2(gl) {
340
- if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
341
- return true;
342
- }
343
-
344
- return Boolean(gl && gl._version === 2);
291
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
292
+ return true;
293
+ }
294
+ // Look for debug contexts, headless gl etc
295
+ return Boolean(gl && gl._version === 2);
345
296
  }
346
- //# sourceMappingURL=webgl-device.js.map
package/dist/bundle.js CHANGED
@@ -1,5 +1,4 @@
1
+ // @ts-nocheck
1
2
  const moduleExports = require('./index');
2
-
3
3
  globalThis.luma = globalThis.luma || {};
4
4
  module.exports = Object.assign(globalThis.luma, moduleExports);
5
- //# sourceMappingURL=bundle.js.map