@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,335 +1,293 @@
1
+ /*
2
+ ** Copyright (c) 2015 The Khronos Group Inc.
3
+ **
4
+ ** Permission is hereby granted, free of charge, to any person obtaining a
5
+ ** copy of this software and/or associated documentation files (the
6
+ ** "Materials"), to deal in the Materials without restriction, including
7
+ ** without limitation the rights to use, copy, modify, merge, publish,
8
+ ** distribute, sublicense, and/or sell copies of the Materials, and to
9
+ ** permit persons to whom the Materials are furnished to do so, subject to
10
+ ** the following conditions:
11
+ **
12
+ ** The above copyright notice and this permission notice shall be included
13
+ ** in all copies or substantial portions of the Materials.
14
+ **
15
+ ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
22
+ */
23
+ // Modified to use ES6 and polyfill a provided context rather than
24
+ // the global class.
25
+ // @ts-nocheck external code
1
26
  const glErrorShadow = {};
2
-
3
27
  function error(msg) {
4
- if (globalThis.console && globalThis.console.error) {
5
- globalThis.console.error(msg);
6
- }
28
+ if (globalThis.console && globalThis.console.error) {
29
+ globalThis.console.error(msg);
30
+ }
7
31
  }
8
-
9
32
  function log(msg) {
10
- if (globalThis.console && globalThis.console.log) {
11
- globalThis.console.log(msg);
12
- }
33
+ if (globalThis.console && globalThis.console.log) {
34
+ globalThis.console.log(msg);
35
+ }
13
36
  }
14
-
15
37
  function synthesizeGLError(err, opt_msg) {
16
- glErrorShadow[err] = true;
17
-
18
- if (opt_msg !== undefined) {
19
- error(opt_msg);
20
- }
38
+ glErrorShadow[err] = true;
39
+ if (opt_msg !== undefined) {
40
+ error(opt_msg);
41
+ }
21
42
  }
22
-
23
43
  function wrapGLError(gl) {
24
- const f = gl.getError;
25
-
26
- gl.getError = function getError() {
27
- let err;
28
-
29
- do {
30
- err = f.apply(gl);
31
-
32
- if (err !== gl.NO_ERROR) {
33
- glErrorShadow[err] = true;
34
- }
35
- } while (err !== gl.NO_ERROR);
36
-
37
- for (err in glErrorShadow) {
38
- if (glErrorShadow[err]) {
39
- delete glErrorShadow[err];
40
- return parseInt(err, 10);
41
- }
42
- }
43
-
44
- return gl.NO_ERROR;
45
- };
44
+ const f = gl.getError;
45
+ gl.getError = function getError() {
46
+ let err;
47
+ do {
48
+ err = f.apply(gl);
49
+ if (err !== gl.NO_ERROR) {
50
+ glErrorShadow[err] = true;
51
+ }
52
+ } while (err !== gl.NO_ERROR);
53
+ for (err in glErrorShadow) {
54
+ if (glErrorShadow[err]) {
55
+ delete glErrorShadow[err];
56
+ return parseInt(err, 10);
57
+ }
58
+ }
59
+ return gl.NO_ERROR;
60
+ };
46
61
  }
47
-
48
62
  const WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {
49
- const gl = ext.gl;
50
- this.ext = ext;
51
- this.isAlive = true;
52
- this.hasBeenBound = false;
53
- this.elementArrayBuffer = null;
54
- this.attribs = new Array(ext.maxVertexAttribs);
55
-
56
- for (let n = 0; n < this.attribs.length; n++) {
57
- const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);
58
- this.attribs[n] = attrib;
59
- }
60
-
61
- this.maxAttrib = 0;
63
+ const gl = ext.gl;
64
+ this.ext = ext;
65
+ this.isAlive = true;
66
+ this.hasBeenBound = false;
67
+ this.elementArrayBuffer = null;
68
+ this.attribs = new Array(ext.maxVertexAttribs);
69
+ for (let n = 0; n < this.attribs.length; n++) {
70
+ const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);
71
+ this.attribs[n] = attrib;
72
+ }
73
+ this.maxAttrib = 0;
62
74
  };
63
-
64
75
  WebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {
65
- this.enabled = false;
66
- this.buffer = null;
67
- this.size = 4;
68
- this.type = gl.FLOAT;
69
- this.normalized = false;
70
- this.stride = 16;
71
- this.offset = 0;
72
- this.cached = '';
73
- this.recache();
76
+ this.enabled = false;
77
+ this.buffer = null;
78
+ this.size = 4;
79
+ this.type = gl.FLOAT;
80
+ this.normalized = false;
81
+ this.stride = 16;
82
+ this.offset = 0;
83
+ this.cached = '';
84
+ this.recache();
74
85
  };
75
-
76
86
  WebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {
77
- this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');
87
+ this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');
78
88
  };
79
-
80
89
  const OESVertexArrayObject = function OESVertexArrayObject(gl) {
81
- const self = this;
82
- this.gl = gl;
83
- wrapGLError(gl);
84
- const original = this.original = {
85
- getParameter: gl.getParameter,
86
- enableVertexAttribArray: gl.enableVertexAttribArray,
87
- disableVertexAttribArray: gl.disableVertexAttribArray,
88
- bindBuffer: gl.bindBuffer,
89
- getVertexAttrib: gl.getVertexAttrib,
90
- vertexAttribPointer: gl.vertexAttribPointer
91
- };
92
-
93
- gl.getParameter = function getParameter(pname) {
94
- if (pname === self.VERTEX_ARRAY_BINDING_OES) {
95
- if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {
96
- return null;
97
- }
98
-
99
- return self.currentVertexArrayObject;
100
- }
101
-
102
- return original.getParameter.apply(this, arguments);
103
- };
104
-
105
- gl.enableVertexAttribArray = function enableVertexAttribArray(index) {
106
- const vao = self.currentVertexArrayObject;
107
- vao.maxAttrib = Math.max(vao.maxAttrib, index);
108
- const attrib = vao.attribs[index];
109
- attrib.enabled = true;
110
- return original.enableVertexAttribArray.apply(this, arguments);
111
- };
112
-
113
- gl.disableVertexAttribArray = function disableVertexAttribArray(index) {
114
- const vao = self.currentVertexArrayObject;
115
- vao.maxAttrib = Math.max(vao.maxAttrib, index);
116
- const attrib = vao.attribs[index];
117
- attrib.enabled = false;
118
- return original.disableVertexAttribArray.apply(this, arguments);
119
- };
120
-
121
- gl.bindBuffer = function bindBuffer(target, buffer) {
122
- switch (target) {
123
- case gl.ARRAY_BUFFER:
124
- self.currentArrayBuffer = buffer;
125
- break;
126
-
127
- case gl.ELEMENT_ARRAY_BUFFER:
128
- self.currentVertexArrayObject.elementArrayBuffer = buffer;
129
- break;
130
-
131
- default:
90
+ const self = this;
91
+ this.gl = gl;
92
+ wrapGLError(gl);
93
+ const original = (this.original = {
94
+ getParameter: gl.getParameter,
95
+ enableVertexAttribArray: gl.enableVertexAttribArray,
96
+ disableVertexAttribArray: gl.disableVertexAttribArray,
97
+ bindBuffer: gl.bindBuffer,
98
+ getVertexAttrib: gl.getVertexAttrib,
99
+ vertexAttribPointer: gl.vertexAttribPointer
100
+ });
101
+ gl.getParameter = function getParameter(pname) {
102
+ if (pname === self.VERTEX_ARRAY_BINDING_OES) {
103
+ if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {
104
+ return null;
105
+ }
106
+ return self.currentVertexArrayObject;
107
+ }
108
+ return original.getParameter.apply(this, arguments);
109
+ };
110
+ gl.enableVertexAttribArray = function enableVertexAttribArray(index) {
111
+ const vao = self.currentVertexArrayObject;
112
+ vao.maxAttrib = Math.max(vao.maxAttrib, index);
113
+ const attrib = vao.attribs[index];
114
+ attrib.enabled = true;
115
+ return original.enableVertexAttribArray.apply(this, arguments);
116
+ };
117
+ gl.disableVertexAttribArray = function disableVertexAttribArray(index) {
118
+ const vao = self.currentVertexArrayObject;
119
+ vao.maxAttrib = Math.max(vao.maxAttrib, index);
120
+ const attrib = vao.attribs[index];
121
+ attrib.enabled = false;
122
+ return original.disableVertexAttribArray.apply(this, arguments);
123
+ };
124
+ gl.bindBuffer = function bindBuffer(target, buffer) {
125
+ switch (target) {
126
+ case gl.ARRAY_BUFFER:
127
+ self.currentArrayBuffer = buffer;
128
+ break;
129
+ case gl.ELEMENT_ARRAY_BUFFER:
130
+ self.currentVertexArrayObject.elementArrayBuffer = buffer;
131
+ break;
132
+ default:
133
+ }
134
+ return original.bindBuffer.apply(this, arguments);
135
+ };
136
+ gl.getVertexAttrib = function getVertexAttrib(index, pname) {
137
+ const vao = self.currentVertexArrayObject;
138
+ const attrib = vao.attribs[index];
139
+ switch (pname) {
140
+ case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
141
+ return attrib.buffer;
142
+ case gl.VERTEX_ATTRIB_ARRAY_ENABLED:
143
+ return attrib.enabled;
144
+ case gl.VERTEX_ATTRIB_ARRAY_SIZE:
145
+ return attrib.size;
146
+ case gl.VERTEX_ATTRIB_ARRAY_STRIDE:
147
+ return attrib.stride;
148
+ case gl.VERTEX_ATTRIB_ARRAY_TYPE:
149
+ return attrib.type;
150
+ case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:
151
+ return attrib.normalized;
152
+ default:
153
+ return original.getVertexAttrib.apply(this, arguments);
154
+ }
155
+ };
156
+ // eslint-disable-next-line max-params
157
+ gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {
158
+ const vao = self.currentVertexArrayObject;
159
+ vao.maxAttrib = Math.max(vao.maxAttrib, indx);
160
+ const attrib = vao.attribs[indx];
161
+ attrib.buffer = self.currentArrayBuffer;
162
+ attrib.size = size;
163
+ attrib.type = type;
164
+ attrib.normalized = normalized;
165
+ attrib.stride = stride;
166
+ attrib.offset = offset;
167
+ attrib.recache();
168
+ return original.vertexAttribPointer.apply(this, arguments);
169
+ };
170
+ if (gl.instrumentExtension) {
171
+ gl.instrumentExtension(this, 'OES_vertex_array_object');
132
172
  }
133
-
134
- return original.bindBuffer.apply(this, arguments);
135
- };
136
-
137
- gl.getVertexAttrib = function getVertexAttrib(index, pname) {
138
- const vao = self.currentVertexArrayObject;
139
- const attrib = vao.attribs[index];
140
-
141
- switch (pname) {
142
- case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
143
- return attrib.buffer;
144
-
145
- case gl.VERTEX_ATTRIB_ARRAY_ENABLED:
146
- return attrib.enabled;
147
-
148
- case gl.VERTEX_ATTRIB_ARRAY_SIZE:
149
- return attrib.size;
150
-
151
- case gl.VERTEX_ATTRIB_ARRAY_STRIDE:
152
- return attrib.stride;
153
-
154
- case gl.VERTEX_ATTRIB_ARRAY_TYPE:
155
- return attrib.type;
156
-
157
- case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:
158
- return attrib.normalized;
159
-
160
- default:
161
- return original.getVertexAttrib.apply(this, arguments);
173
+ // undefined for headless gl
174
+ if (gl.canvas) {
175
+ gl.canvas.addEventListener('webglcontextrestored', () => {
176
+ log('OESVertexArrayObject emulation library context restored');
177
+ self.reset_();
178
+ }, true);
162
179
  }
163
- };
164
-
165
- gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {
166
- const vao = self.currentVertexArrayObject;
167
- vao.maxAttrib = Math.max(vao.maxAttrib, indx);
168
- const attrib = vao.attribs[indx];
169
- attrib.buffer = self.currentArrayBuffer;
170
- attrib.size = size;
171
- attrib.type = type;
172
- attrib.normalized = normalized;
173
- attrib.stride = stride;
174
- attrib.offset = offset;
175
- attrib.recache();
176
- return original.vertexAttribPointer.apply(this, arguments);
177
- };
178
-
179
- if (gl.instrumentExtension) {
180
- gl.instrumentExtension(this, 'OES_vertex_array_object');
181
- }
182
-
183
- if (gl.canvas) {
184
- gl.canvas.addEventListener('webglcontextrestored', () => {
185
- log('OESVertexArrayObject emulation library context restored');
186
- self.reset_();
187
- }, true);
188
- }
189
-
190
- this.reset_();
180
+ this.reset_();
191
181
  };
192
-
193
182
  OESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;
194
-
195
183
  OESVertexArrayObject.prototype.reset_ = function reset_() {
196
- const contextWasLost = this.vertexArrayObjects !== undefined;
197
-
198
- if (contextWasLost) {
199
- for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {
200
- this.vertexArrayObjects.isAlive = false;
184
+ const contextWasLost = this.vertexArrayObjects !== undefined;
185
+ if (contextWasLost) {
186
+ for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {
187
+ this.vertexArrayObjects.isAlive = false;
188
+ }
201
189
  }
202
- }
203
-
204
- const gl = this.gl;
205
- this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
206
- this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);
207
- this.currentVertexArrayObject = null;
208
- this.currentArrayBuffer = null;
209
- this.vertexArrayObjects = [this.defaultVertexArrayObject];
210
- this.bindVertexArrayOES(null);
190
+ const gl = this.gl;
191
+ this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
192
+ this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);
193
+ this.currentVertexArrayObject = null;
194
+ this.currentArrayBuffer = null;
195
+ this.vertexArrayObjects = [this.defaultVertexArrayObject];
196
+ this.bindVertexArrayOES(null);
211
197
  };
212
-
213
198
  OESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {
214
- const arrayObject = new WebGLVertexArrayObjectOES(this);
215
- this.vertexArrayObjects.push(arrayObject);
216
- return arrayObject;
199
+ const arrayObject = new WebGLVertexArrayObjectOES(this);
200
+ this.vertexArrayObjects.push(arrayObject);
201
+ return arrayObject;
217
202
  };
218
-
219
203
  OESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {
220
- arrayObject.isAlive = false;
221
- this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);
222
-
223
- if (this.currentVertexArrayObject === arrayObject) {
224
- this.bindVertexArrayOES(null);
225
- }
204
+ arrayObject.isAlive = false;
205
+ this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);
206
+ if (this.currentVertexArrayObject === arrayObject) {
207
+ this.bindVertexArrayOES(null);
208
+ }
226
209
  };
227
-
228
210
  OESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {
229
- if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {
230
- if (arrayObject.hasBeenBound && arrayObject.ext === this) {
231
- return true;
211
+ if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {
212
+ if (arrayObject.hasBeenBound && arrayObject.ext === this) {
213
+ return true;
214
+ }
232
215
  }
233
- }
234
-
235
- return false;
216
+ return false;
236
217
  };
237
-
238
218
  OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {
239
- const gl = this.gl;
240
-
241
- if (arrayObject && !arrayObject.isAlive) {
242
- synthesizeGLError(gl.INVALID_OPERATION, 'bindVertexArrayOES: attempt to bind deleted arrayObject');
243
- return;
244
- }
245
-
246
- const original = this.original;
247
- const oldVAO = this.currentVertexArrayObject;
248
- this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;
249
- this.currentVertexArrayObject.hasBeenBound = true;
250
- const newVAO = this.currentVertexArrayObject;
251
-
252
- if (oldVAO === newVAO) {
253
- return;
254
- }
255
-
256
- if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {
257
- original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);
258
- }
259
-
260
- let currentBinding = this.currentArrayBuffer;
261
- const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);
262
-
263
- for (let n = 0; n <= maxAttrib; n++) {
264
- const attrib = newVAO.attribs[n];
265
- const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;
266
-
267
- if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {
268
- if (attrib.enabled) {
269
- original.enableVertexAttribArray.call(gl, n);
270
- } else {
271
- original.disableVertexAttribArray.call(gl, n);
272
- }
219
+ const gl = this.gl;
220
+ if (arrayObject && !arrayObject.isAlive) {
221
+ synthesizeGLError(gl.INVALID_OPERATION, 'bindVertexArrayOES: attempt to bind deleted arrayObject');
222
+ return;
273
223
  }
274
-
275
- if (attrib.enabled) {
276
- let bufferChanged = false;
277
-
278
- if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {
279
- if (currentBinding !== attrib.buffer) {
280
- original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);
281
- currentBinding = attrib.buffer;
282
- }
283
-
284
- bufferChanged = true;
285
- }
286
-
287
- if (bufferChanged || attrib.cached !== oldAttrib.cached) {
288
- original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);
289
- }
224
+ const original = this.original;
225
+ const oldVAO = this.currentVertexArrayObject;
226
+ this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;
227
+ this.currentVertexArrayObject.hasBeenBound = true;
228
+ const newVAO = this.currentVertexArrayObject;
229
+ if (oldVAO === newVAO) {
230
+ return;
290
231
  }
291
- }
292
-
293
- if (this.currentArrayBuffer !== currentBinding) {
294
- original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);
295
- }
296
- };
297
-
298
- export function polyfillVertexArrayObject(gl) {
299
- if (typeof gl.createVertexArray === 'function') {
300
- return;
301
- }
302
-
303
- const original_getSupportedExtensions = gl.getSupportedExtensions;
304
-
305
- gl.getSupportedExtensions = function getSupportedExtensions() {
306
- const list = original_getSupportedExtensions.call(this) || [];
307
-
308
- if (list.indexOf('OES_vertex_array_object') < 0) {
309
- list.push('OES_vertex_array_object');
232
+ if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {
233
+ original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);
310
234
  }
311
-
312
- return list;
313
- };
314
-
315
- const original_getExtension = gl.getExtension;
316
-
317
- gl.getExtension = function getExtension(name) {
318
- const ext = original_getExtension.call(this, name);
319
-
320
- if (ext) {
321
- return ext;
235
+ let currentBinding = this.currentArrayBuffer;
236
+ const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);
237
+ for (let n = 0; n <= maxAttrib; n++) {
238
+ const attrib = newVAO.attribs[n];
239
+ const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;
240
+ if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {
241
+ if (attrib.enabled) {
242
+ original.enableVertexAttribArray.call(gl, n);
243
+ }
244
+ else {
245
+ original.disableVertexAttribArray.call(gl, n);
246
+ }
247
+ }
248
+ if (attrib.enabled) {
249
+ let bufferChanged = false;
250
+ if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {
251
+ if (currentBinding !== attrib.buffer) {
252
+ original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);
253
+ currentBinding = attrib.buffer;
254
+ }
255
+ bufferChanged = true;
256
+ }
257
+ if (bufferChanged || attrib.cached !== oldAttrib.cached) {
258
+ original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);
259
+ }
260
+ }
322
261
  }
323
-
324
- if (name !== 'OES_vertex_array_object') {
325
- return null;
262
+ if (this.currentArrayBuffer !== currentBinding) {
263
+ original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);
326
264
  }
327
-
328
- if (!gl.__OESVertexArrayObject) {
329
- this.__OESVertexArrayObject = new OESVertexArrayObject(this);
265
+ };
266
+ export function polyfillVertexArrayObject(gl) {
267
+ if (typeof gl.createVertexArray === 'function') {
268
+ // VAOs directly supported on object (i.e. WebGL 2 context)
269
+ return;
330
270
  }
331
-
332
- return this.__OESVertexArrayObject;
333
- };
271
+ const original_getSupportedExtensions = gl.getSupportedExtensions;
272
+ gl.getSupportedExtensions = function getSupportedExtensions() {
273
+ const list = original_getSupportedExtensions.call(this) || [];
274
+ if (list.indexOf('OES_vertex_array_object') < 0) {
275
+ list.push('OES_vertex_array_object');
276
+ }
277
+ return list;
278
+ };
279
+ const original_getExtension = gl.getExtension;
280
+ gl.getExtension = function getExtension(name) {
281
+ const ext = original_getExtension.call(this, name);
282
+ if (ext) {
283
+ return ext;
284
+ }
285
+ if (name !== 'OES_vertex_array_object') {
286
+ return null;
287
+ }
288
+ if (!gl.__OESVertexArrayObject) {
289
+ this.__OESVertexArrayObject = new OESVertexArrayObject(this);
290
+ }
291
+ return this.__OESVertexArrayObject;
292
+ };
334
293
  }
335
- //# sourceMappingURL=polyfill-vertex-array-object.js.map
@@ -1,21 +1,19 @@
1
+ /** deeply compare two arrays */
1
2
  export function deepArrayEqual(x, y) {
2
- if (x === y) {
3
- return true;
4
- }
5
-
6
- const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);
7
- const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);
8
-
9
- if (isArrayX && isArrayY && x.length === y.length) {
10
- for (let i = 0; i < x.length; ++i) {
11
- if (x[i] !== y[i]) {
12
- return false;
13
- }
3
+ if (x === y) {
4
+ return true;
14
5
  }
15
-
16
- return true;
17
- }
18
-
19
- return false;
6
+ const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);
7
+ const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);
8
+ // @ts-expect-error TODO fix
9
+ if (isArrayX && isArrayY && x.length === y.length) {
10
+ // @ts-expect-error TODO fix
11
+ for (let i = 0; i < x.length; ++i) {
12
+ if (x[i] !== y[i]) {
13
+ return false;
14
+ }
15
+ }
16
+ return true;
17
+ }
18
+ return false;
20
19
  }
21
- //# sourceMappingURL=deep-array-equal.js.map