@luma.gl/webgl 8.6.0-alpha.3 → 9.0.0-alpha.2

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 (731) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +17 -0
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
  4. package/dist/{esm/adapter/converters/set-device-parameters.js → adapter/converters/device-parameters.js} +36 -5
  5. package/dist/adapter/converters/device-parameters.js.map +1 -0
  6. package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
  7. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
  8. package/dist/{esm/classes → adapter/converters}/renderbuffer-formats.js +1 -1
  9. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  10. package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
  11. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/sampler-parameters.js +208 -0
  13. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +93 -0
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/texture-formats.js +954 -0
  17. package/dist/adapter/converters/texture-formats.js.map +1 -0
  18. package/dist/adapter/converters/vertex-formats.d.ts +4 -0
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
  20. package/dist/adapter/converters/vertex-formats.js +35 -0
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-features.d.ts +3 -6
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +27 -48
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +1 -0
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.js +7 -7
  31. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
  34. package/dist/adapter/helpers/attribute-utils.js +81 -0
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  36. package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
  37. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-layout.js +306 -0
  39. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  40. package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
  41. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
  42. package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  43. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  44. package/dist/adapter/helpers/set-uniform.d.ts +4 -0
  45. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
  46. package/dist/adapter/helpers/set-uniform.js +115 -0
  47. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  48. package/dist/adapter/helpers/uniforms.d.ts +26 -0
  49. package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
  50. package/dist/adapter/helpers/uniforms.js +99 -0
  51. package/dist/adapter/helpers/uniforms.js.map +1 -0
  52. package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
  53. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
  54. package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  55. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  56. package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
  57. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
  58. package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
  59. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  60. package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
  61. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
  62. package/dist/{esm/classes → adapter/objects}/webgl-resource.js +7 -3
  63. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  64. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
  65. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
  66. package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
  67. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  68. package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
  69. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
  70. package/dist/adapter/resources/webgl-buffer.js +164 -0
  71. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  72. package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
  74. package/dist/adapter/resources/webgl-command-buffer.js +65 -0
  75. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  76. package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
  78. package/dist/adapter/resources/webgl-command-encoder.js +53 -0
  79. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  80. package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
  81. package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-external-texture.js +2 -0
  83. package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.d.ts +40 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +265 -0
  87. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  88. package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
  89. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
  90. package/dist/adapter/resources/webgl-render-pass.js +19 -0
  91. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  92. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
  94. package/dist/adapter/resources/webgl-render-pipeline.js +400 -0
  95. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  96. package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
  97. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
  98. package/dist/adapter/resources/webgl-sampler.js +50 -0
  99. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  100. package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
  101. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
  102. package/dist/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
  103. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  104. package/dist/adapter/resources/webgl-texture.d.ts +193 -0
  105. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
  106. package/dist/{esm/classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  107. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  108. package/dist/adapter/webgl-canvas-context.d.ts +36 -0
  109. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
  110. package/dist/adapter/webgl-canvas-context.js +54 -0
  111. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  112. package/dist/adapter/webgl-device.d.ts +58 -77
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +185 -113
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
  123. package/dist/classic/buffer.js.map +1 -0
  124. package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
  125. package/dist/classic/typed-array-utils.d.ts.map +1 -0
  126. package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
  127. package/dist/classic/typed-array-utils.js.map +1 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -1
  129. package/dist/context/context/context-state.js +1 -1
  130. package/dist/context/context/context-state.js.map +1 -1
  131. package/dist/context/context/create-context.d.ts +1 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -1
  133. package/dist/context/context/create-context.js +12 -0
  134. package/dist/context/context/create-context.js.map +1 -1
  135. package/dist/context/context/device-pixels.d.ts +1 -1
  136. package/dist/context/context/device-pixels.d.ts.map +1 -1
  137. package/dist/context/context/device-pixels.js.map +1 -1
  138. package/dist/context/debug/spector.d.ts +18 -0
  139. package/dist/context/debug/spector.d.ts.map +1 -0
  140. package/dist/context/debug/spector.js +76 -0
  141. package/dist/context/debug/spector.js.map +1 -0
  142. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  143. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  144. package/dist/context/debug/webgl-developer-tools.js +121 -0
  145. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
  147. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  148. package/dist/context/parameters/unified-parameter-api.js +4 -4
  149. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  150. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  151. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  152. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  154. package/dist/context/polyfill/polyfill-context.js +4 -3
  155. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +25 -11
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
  162. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  163. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  164. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  165. package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
  166. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  167. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  168. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  169. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  170. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  171. package/dist/es5/adapter/device-helpers/device-features.js +46 -54
  172. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  173. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  174. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  175. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  176. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  177. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  178. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  179. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
  180. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  181. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  182. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  183. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  184. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  185. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  186. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  187. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  188. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  189. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  190. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  191. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  192. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  193. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  194. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  195. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  196. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  197. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  198. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  199. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  200. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  201. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  202. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  203. package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
  204. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  205. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
  206. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  207. package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
  208. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  209. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  210. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  211. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
  212. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  213. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
  214. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  215. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  216. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  217. package/dist/es5/adapter/webgl-device.js +255 -135
  218. package/dist/es5/adapter/webgl-device.js.map +1 -1
  219. package/dist/es5/{classes → classic}/accessor.js +25 -1
  220. package/dist/es5/classic/accessor.js.map +1 -0
  221. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
  222. package/dist/es5/classic/buffer.js.map +1 -0
  223. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  224. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  225. package/dist/es5/context/context/context-state.js +1 -1
  226. package/dist/es5/context/context/context-state.js.map +1 -1
  227. package/dist/es5/context/context/create-context.js +12 -0
  228. package/dist/es5/context/context/create-context.js.map +1 -1
  229. package/dist/es5/context/context/device-pixels.js.map +1 -1
  230. package/dist/es5/context/debug/spector.js +133 -0
  231. package/dist/es5/context/debug/spector.js.map +1 -0
  232. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  233. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  234. package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
  235. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  236. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  237. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  238. package/dist/es5/context/polyfill/polyfill-context.js +4 -3
  239. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  240. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  241. package/dist/es5/context/state-tracker/track-context-state.js +26 -11
  242. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  243. package/dist/es5/index.js +66 -238
  244. package/dist/es5/index.js.map +1 -1
  245. package/dist/es5/init.js +1 -41
  246. package/dist/es5/init.js.map +1 -1
  247. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  248. package/dist/es5/types/webgl.js.map +1 -0
  249. package/dist/{adapter/converters/set-device-parameters.js → esm/adapter/converters/device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/{classes → esm/adapter/converters}/renderbuffer-formats.js +1 -1
  252. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  253. package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
  254. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  255. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  256. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  257. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  258. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  259. package/dist/esm/adapter/device-helpers/device-features.js +27 -48
  260. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  261. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  262. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  263. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  264. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  265. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  266. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  267. package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
  268. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  269. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  270. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  271. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  272. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  273. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  274. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  275. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  276. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  277. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  278. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  279. package/dist/{classes → esm/adapter/objects}/webgl-resource.js +7 -3
  280. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  281. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  282. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  283. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  284. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  285. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  286. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  287. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  288. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  289. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  290. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  291. package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
  292. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  293. package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
  294. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  295. package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
  296. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  297. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  298. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  299. package/dist/esm/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/{classes/texture.js → esm/adapter/resources/webgl-texture.js} +274 -229
  302. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  303. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  304. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  305. package/dist/esm/adapter/webgl-device.js +185 -113
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
  310. package/dist/esm/classic/buffer.js.map +1 -0
  311. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  312. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  313. package/dist/esm/context/context/context-state.js +1 -1
  314. package/dist/esm/context/context/context-state.js.map +1 -1
  315. package/dist/esm/context/context/create-context.js +12 -0
  316. package/dist/esm/context/context/create-context.js.map +1 -1
  317. package/dist/esm/context/context/device-pixels.js.map +1 -1
  318. package/dist/esm/context/debug/spector.js +76 -0
  319. package/dist/esm/context/debug/spector.js.map +1 -0
  320. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  321. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  322. package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
  323. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  324. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  325. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  326. package/dist/esm/context/polyfill/polyfill-context.js +4 -3
  327. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  328. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  329. package/dist/esm/context/state-tracker/track-context-state.js +25 -11
  330. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  331. package/dist/esm/index.js +19 -29
  332. package/dist/esm/index.js.map +1 -1
  333. package/dist/esm/init.js +2 -31
  334. package/dist/esm/init.js.map +1 -1
  335. package/dist/esm/types/webgl.js +2 -0
  336. package/dist/esm/types/webgl.js.map +1 -0
  337. package/dist/index.d.ts +22 -43
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -29
  340. package/dist/index.js.map +1 -1
  341. package/dist/init.d.ts +1 -4
  342. package/dist/init.d.ts.map +1 -1
  343. package/dist/init.js +2 -31
  344. package/dist/init.js.map +1 -1
  345. package/dist/types/webgl.d.ts +144 -0
  346. package/dist/types/webgl.d.ts.map +1 -0
  347. package/dist/types/webgl.js +2 -0
  348. package/dist/types/webgl.js.map +1 -0
  349. package/package.json +5 -5
  350. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
  351. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  352. package/src/adapter/converters/sampler-parameters.ts +175 -0
  353. package/src/adapter/converters/texture-formats.ts +633 -0
  354. package/src/adapter/converters/vertex-formats.ts +22 -0
  355. package/src/adapter/device-helpers/device-features.ts +46 -123
  356. package/src/adapter/device-helpers/device-limits.ts +5 -2
  357. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  358. package/src/adapter/helpers/attribute-utils.ts +61 -0
  359. package/src/adapter/helpers/get-shader-layout.ts +388 -0
  360. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  361. package/src/adapter/helpers/set-uniform.ts +87 -0
  362. package/src/adapter/helpers/uniforms.ts +110 -0
  363. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  364. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  365. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  366. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  367. package/src/adapter/resources/webgl-buffer.ts +219 -0
  368. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  369. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  370. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  371. package/src/adapter/resources/webgl-framebuffer.ts +279 -0
  372. package/src/adapter/resources/webgl-render-pass.ts +23 -0
  373. package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
  374. package/src/adapter/resources/webgl-sampler.ts +54 -0
  375. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
  376. package/src/adapter/resources/webgl-texture.ts +1023 -0
  377. package/src/adapter/webgl-canvas-context.ts +74 -0
  378. package/src/adapter/webgl-device.ts +229 -285
  379. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
  380. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
  381. package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
  382. package/src/context/context/context-state.ts +4 -2
  383. package/src/context/context/create-context.ts +28 -1
  384. package/src/context/context/device-pixels.ts +9 -4
  385. package/src/context/debug/spector.ts +92 -0
  386. package/src/context/debug/webgl-developer-tools.ts +162 -0
  387. package/src/context/parameters/unified-parameter-api.ts +6 -4
  388. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  389. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  390. package/src/context/polyfill/polyfill-context.ts +4 -3
  391. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  392. package/src/context/state-tracker/track-context-state.ts +27 -20
  393. package/src/index.ts +33 -91
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  397. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  398. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  399. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  400. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  401. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  402. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  403. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  404. package/dist/adapter/webgl-shader.js.map +0 -1
  405. package/dist/classes/accessor.d.ts +0 -28
  406. package/dist/classes/accessor.d.ts.map +0 -1
  407. package/dist/classes/accessor.js.map +0 -1
  408. package/dist/classes/accessor.ts.disabled +0 -159
  409. package/dist/classes/clear.d.ts +0 -17
  410. package/dist/classes/clear.d.ts.map +0 -1
  411. package/dist/classes/clear.js +0 -105
  412. package/dist/classes/clear.js.map +0 -1
  413. package/dist/classes/copy-and-blit.d.ts +0 -86
  414. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  415. package/dist/classes/copy-and-blit.js +0 -338
  416. package/dist/classes/copy-and-blit.js.map +0 -1
  417. package/dist/classes/framebuffer.d.ts +0 -139
  418. package/dist/classes/framebuffer.d.ts.map +0 -1
  419. package/dist/classes/framebuffer.js +0 -656
  420. package/dist/classes/framebuffer.js.map +0 -1
  421. package/dist/classes/program-configuration.d.ts +0 -24
  422. package/dist/classes/program-configuration.d.ts.map +0 -1
  423. package/dist/classes/program-configuration.js +0 -73
  424. package/dist/classes/program-configuration.js.map +0 -1
  425. package/dist/classes/program.d.ts +0 -66
  426. package/dist/classes/program.d.ts.map +0 -1
  427. package/dist/classes/program.js +0 -379
  428. package/dist/classes/program.js.map +0 -1
  429. package/dist/classes/query.d.ts +0 -27
  430. package/dist/classes/query.d.ts.map +0 -1
  431. package/dist/classes/query.js +0 -145
  432. package/dist/classes/query.js.map +0 -1
  433. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  434. package/dist/classes/renderbuffer-formats.js.map +0 -1
  435. package/dist/classes/renderbuffer.d.ts +0 -60
  436. package/dist/classes/renderbuffer.d.ts.map +0 -1
  437. package/dist/classes/renderbuffer.js.map +0 -1
  438. package/dist/classes/shader.d.ts +0 -42
  439. package/dist/classes/shader.d.ts.map +0 -1
  440. package/dist/classes/shader.js +0 -118
  441. package/dist/classes/shader.js.map +0 -1
  442. package/dist/classes/texture-2d.d.ts +0 -9
  443. package/dist/classes/texture-2d.d.ts.map +0 -1
  444. package/dist/classes/texture-2d.js +0 -36
  445. package/dist/classes/texture-2d.js.map +0 -1
  446. package/dist/classes/texture-3d.d.ts +0 -29
  447. package/dist/classes/texture-3d.d.ts.map +0 -1
  448. package/dist/classes/texture-3d.js +0 -76
  449. package/dist/classes/texture-3d.js.map +0 -1
  450. package/dist/classes/texture-cube.d.ts +0 -28
  451. package/dist/classes/texture-cube.d.ts.map +0 -1
  452. package/dist/classes/texture-cube.js +0 -130
  453. package/dist/classes/texture-cube.js.map +0 -1
  454. package/dist/classes/texture-formats.d.ts +0 -37
  455. package/dist/classes/texture-formats.d.ts.map +0 -1
  456. package/dist/classes/texture-formats.js +0 -98
  457. package/dist/classes/texture-formats.js.map +0 -1
  458. package/dist/classes/texture.d.ts +0 -123
  459. package/dist/classes/texture.d.ts.map +0 -1
  460. package/dist/classes/texture.js.map +0 -1
  461. package/dist/classes/transform-feedback.d.ts +0 -33
  462. package/dist/classes/transform-feedback.d.ts.map +0 -1
  463. package/dist/classes/transform-feedback.js +0 -198
  464. package/dist/classes/transform-feedback.js.map +0 -1
  465. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  466. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  467. package/dist/classes/uniform-buffer-layout.js +0 -104
  468. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  469. package/dist/classes/uniforms.d.ts +0 -37
  470. package/dist/classes/uniforms.d.ts.map +0 -1
  471. package/dist/classes/uniforms.js +0 -250
  472. package/dist/classes/uniforms.js.map +0 -1
  473. package/dist/classes/vertex-array-object.d.ts +0 -76
  474. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  475. package/dist/classes/vertex-array-object.js +0 -261
  476. package/dist/classes/vertex-array-object.js.map +0 -1
  477. package/dist/classes/vertex-array.d.ts +0 -75
  478. package/dist/classes/vertex-array.d.ts.map +0 -1
  479. package/dist/classes/vertex-array.js +0 -408
  480. package/dist/classes/vertex-array.js.map +0 -1
  481. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  482. package/dist/classes/webgl-buffer.js.map +0 -1
  483. package/dist/classes/webgl-resource.d.ts.map +0 -1
  484. package/dist/classes/webgl-resource.js.map +0 -1
  485. package/dist/context/context/get-canvas.d.ts +0 -13
  486. package/dist/context/context/get-canvas.d.ts.map +0 -1
  487. package/dist/context/context/get-canvas.js +0 -31
  488. package/dist/context/context/get-canvas.js.map +0 -1
  489. package/dist/context/context/resize-context.d.ts +0 -20
  490. package/dist/context/context/resize-context.d.ts.map +0 -1
  491. package/dist/context/context/resize-context.js +0 -15
  492. package/dist/context/context/resize-context.js.map +0 -1
  493. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  494. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  495. package/dist/context/parameters/webgl-parameters.js +0 -2
  496. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  497. package/dist/debug/debug-program-configuration.d.ts +0 -2
  498. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  499. package/dist/debug/debug-program-configuration.js +0 -40
  500. package/dist/debug/debug-program-configuration.js.map +0 -1
  501. package/dist/debug/debug-uniforms.d.ts +0 -12
  502. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  503. package/dist/debug/debug-uniforms.js +0 -108
  504. package/dist/debug/debug-uniforms.js.map +0 -1
  505. package/dist/debug/debug-vertex-array.d.ts +0 -5
  506. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  507. package/dist/debug/debug-vertex-array.js +0 -118
  508. package/dist/debug/debug-vertex-array.js.map +0 -1
  509. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  510. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  511. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  512. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  513. package/dist/es5/classes/accessor.d.ts +0 -28
  514. package/dist/es5/classes/accessor.js.map +0 -1
  515. package/dist/es5/classes/accessor.ts.disabled +0 -159
  516. package/dist/es5/classes/clear.js +0 -135
  517. package/dist/es5/classes/clear.js.map +0 -1
  518. package/dist/es5/classes/copy-and-blit.js +0 -382
  519. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  520. package/dist/es5/classes/framebuffer.js +0 -807
  521. package/dist/es5/classes/framebuffer.js.map +0 -1
  522. package/dist/es5/classes/program-configuration.js +0 -119
  523. package/dist/es5/classes/program-configuration.js.map +0 -1
  524. package/dist/es5/classes/program.js +0 -471
  525. package/dist/es5/classes/program.js.map +0 -1
  526. package/dist/es5/classes/query.js +0 -222
  527. package/dist/es5/classes/query.js.map +0 -1
  528. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  529. package/dist/es5/classes/renderbuffer.js.map +0 -1
  530. package/dist/es5/classes/shader.js +0 -195
  531. package/dist/es5/classes/shader.js.map +0 -1
  532. package/dist/es5/classes/texture-2d.js.map +0 -1
  533. package/dist/es5/classes/texture-3d.js +0 -142
  534. package/dist/es5/classes/texture-3d.js.map +0 -1
  535. package/dist/es5/classes/texture-cube.js +0 -202
  536. package/dist/es5/classes/texture-cube.js.map +0 -1
  537. package/dist/es5/classes/texture-formats.js +0 -87
  538. package/dist/es5/classes/texture-formats.js.map +0 -1
  539. package/dist/es5/classes/texture.js.map +0 -1
  540. package/dist/es5/classes/transform-feedback.js +0 -267
  541. package/dist/es5/classes/transform-feedback.js.map +0 -1
  542. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  543. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  544. package/dist/es5/classes/uniforms.js +0 -232
  545. package/dist/es5/classes/uniforms.js.map +0 -1
  546. package/dist/es5/classes/vertex-array-object.js +0 -337
  547. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  548. package/dist/es5/classes/vertex-array.js +0 -465
  549. package/dist/es5/classes/vertex-array.js.map +0 -1
  550. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  551. package/dist/es5/classes/webgl-resource.js.map +0 -1
  552. package/dist/es5/context/context/get-canvas.js +0 -40
  553. package/dist/es5/context/context/get-canvas.js.map +0 -1
  554. package/dist/es5/context/context/resize-context.js +0 -23
  555. package/dist/es5/context/context/resize-context.js.map +0 -1
  556. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  557. package/dist/es5/debug/debug-program-configuration.js +0 -76
  558. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  559. package/dist/es5/debug/debug-uniforms.js +0 -156
  560. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  561. package/dist/es5/debug/debug-vertex-array.js +0 -126
  562. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  563. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  564. package/dist/es5/helpers/program-bindings.js +0 -2
  565. package/dist/es5/types/accessor.d.ts +0 -29
  566. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  567. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  568. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  569. package/dist/es5/webgl-utils/format-utils.js +0 -58
  570. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  571. package/dist/es5/webgl-utils/get-error.js +0 -49
  572. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  573. package/dist/es5/webgl-utils/index.js +0 -74
  574. package/dist/es5/webgl-utils/index.js.map +0 -1
  575. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  576. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  577. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  578. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  579. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  581. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  582. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  583. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  584. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  585. package/dist/esm/classes/accessor.d.ts +0 -28
  586. package/dist/esm/classes/accessor.js.map +0 -1
  587. package/dist/esm/classes/clear.js +0 -105
  588. package/dist/esm/classes/clear.js.map +0 -1
  589. package/dist/esm/classes/copy-and-blit.js +0 -338
  590. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  591. package/dist/esm/classes/framebuffer.js +0 -656
  592. package/dist/esm/classes/framebuffer.js.map +0 -1
  593. package/dist/esm/classes/program-configuration.js +0 -73
  594. package/dist/esm/classes/program-configuration.js.map +0 -1
  595. package/dist/esm/classes/program.js +0 -379
  596. package/dist/esm/classes/program.js.map +0 -1
  597. package/dist/esm/classes/query.js +0 -145
  598. package/dist/esm/classes/query.js.map +0 -1
  599. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  600. package/dist/esm/classes/renderbuffer.js.map +0 -1
  601. package/dist/esm/classes/shader.js +0 -118
  602. package/dist/esm/classes/shader.js.map +0 -1
  603. package/dist/esm/classes/texture-2d.js +0 -36
  604. package/dist/esm/classes/texture-2d.js.map +0 -1
  605. package/dist/esm/classes/texture-3d.js +0 -76
  606. package/dist/esm/classes/texture-3d.js.map +0 -1
  607. package/dist/esm/classes/texture-cube.js +0 -130
  608. package/dist/esm/classes/texture-cube.js.map +0 -1
  609. package/dist/esm/classes/texture-formats.js +0 -98
  610. package/dist/esm/classes/texture-formats.js.map +0 -1
  611. package/dist/esm/classes/texture.js.map +0 -1
  612. package/dist/esm/classes/transform-feedback.js +0 -198
  613. package/dist/esm/classes/transform-feedback.js.map +0 -1
  614. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  615. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  616. package/dist/esm/classes/uniforms.js +0 -250
  617. package/dist/esm/classes/uniforms.js.map +0 -1
  618. package/dist/esm/classes/vertex-array-object.js +0 -261
  619. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  620. package/dist/esm/classes/vertex-array.js +0 -408
  621. package/dist/esm/classes/vertex-array.js.map +0 -1
  622. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  623. package/dist/esm/classes/webgl-resource.js.map +0 -1
  624. package/dist/esm/context/context/get-canvas.js +0 -31
  625. package/dist/esm/context/context/get-canvas.js.map +0 -1
  626. package/dist/esm/context/context/resize-context.js +0 -15
  627. package/dist/esm/context/context/resize-context.js.map +0 -1
  628. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  629. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  630. package/dist/esm/debug/debug-program-configuration.js +0 -40
  631. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  632. package/dist/esm/debug/debug-uniforms.js +0 -108
  633. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  634. package/dist/esm/debug/debug-vertex-array.js +0 -118
  635. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  636. package/dist/esm/helpers/get-program-bindings.js +0 -228
  637. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  638. package/dist/esm/helpers/program-bindings.js +0 -2
  639. package/dist/esm/types/accessor.d.ts +0 -29
  640. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  641. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  642. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  643. package/dist/esm/webgl-utils/format-utils.js +0 -45
  644. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  645. package/dist/esm/webgl-utils/get-error.js +0 -41
  646. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  647. package/dist/esm/webgl-utils/index.js +0 -5
  648. package/dist/esm/webgl-utils/index.js.map +0 -1
  649. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  650. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  651. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  652. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  653. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  654. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  655. package/dist/helpers/get-program-bindings.d.ts +0 -8
  656. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  657. package/dist/helpers/get-program-bindings.js +0 -228
  658. package/dist/helpers/get-program-bindings.js.map +0 -1
  659. package/dist/helpers/program-bindings.d.ts +0 -41
  660. package/dist/helpers/program-bindings.d.ts.map +0 -1
  661. package/dist/helpers/program-bindings.js +0 -2
  662. package/dist/types/accessor.d.ts +0 -29
  663. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  664. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  665. package/dist/webgl-utils/attribute-utils.js +0 -182
  666. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  667. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  668. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  669. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  670. package/dist/webgl-utils/format-utils.d.ts +0 -3
  671. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  672. package/dist/webgl-utils/format-utils.js +0 -45
  673. package/dist/webgl-utils/format-utils.js.map +0 -1
  674. package/dist/webgl-utils/get-error.d.ts +0 -3
  675. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  676. package/dist/webgl-utils/get-error.js +0 -41
  677. package/dist/webgl-utils/get-error.js.map +0 -1
  678. package/dist/webgl-utils/index.d.ts +0 -5
  679. package/dist/webgl-utils/index.d.ts.map +0 -1
  680. package/dist/webgl-utils/index.js +0 -5
  681. package/dist/webgl-utils/index.js.map +0 -1
  682. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  683. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  684. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  685. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  686. package/dist/webgl-utils/request-animation-frame.js +0 -7
  687. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  688. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  689. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  690. package/dist/webgl-utils/texture-utils.js +0 -48
  691. package/dist/webgl-utils/texture-utils.js.map +0 -1
  692. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  693. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  694. package/src/.DS_Store +0 -0
  695. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  696. package/src/classes/accessor.d.ts +0 -28
  697. package/src/classes/accessor.js +0 -129
  698. package/src/classes/accessor.ts.disabled +0 -159
  699. package/src/classes/clear.ts +0 -108
  700. package/src/classes/copy-and-blit.ts +0 -460
  701. package/src/classes/framebuffer.ts +0 -763
  702. package/src/classes/program-configuration.ts +0 -77
  703. package/src/classes/program.ts +0 -431
  704. package/src/classes/query.ts +0 -171
  705. package/src/classes/renderbuffer.ts +0 -154
  706. package/src/classes/shader.ts +0 -129
  707. package/src/classes/texture-2d.ts +0 -35
  708. package/src/classes/texture-3d.ts +0 -123
  709. package/src/classes/texture-cube.ts +0 -162
  710. package/src/classes/texture-formats.ts +0 -171
  711. package/src/classes/texture.ts +0 -965
  712. package/src/classes/transform-feedback.ts +0 -191
  713. package/src/classes/uniform-buffer-layout.ts +0 -113
  714. package/src/classes/uniforms.ts +0 -394
  715. package/src/classes/vertex-array-object.ts +0 -339
  716. package/src/classes/vertex-array.ts +0 -484
  717. package/src/context/context/get-canvas.ts +0 -37
  718. package/src/context/context/resize-context.ts +0 -37
  719. package/src/context/parameters/webgl-parameters.ts +0 -197
  720. package/src/debug/debug-program-configuration.ts +0 -32
  721. package/src/debug/debug-uniforms.ts +0 -100
  722. package/src/debug/debug-vertex-array.ts +0 -123
  723. package/src/helpers/get-program-bindings.ts +0 -244
  724. package/src/helpers/program-bindings.ts +0 -46
  725. package/src/types/accessor.d.ts +0 -29
  726. package/src/webgl-utils/attribute-utils.ts +0 -171
  727. package/src/webgl-utils/format-utils.ts +0 -43
  728. package/src/webgl-utils/get-error.ts +0 -56
  729. package/src/webgl-utils/index.ts +0 -12
  730. package/src/webgl-utils/request-animation-frame.ts +0 -14
  731. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -0,0 +1,162 @@
1
+ // luma.gl, MIT license
2
+ import {log, loadScript} from '@luma.gl/api/';
3
+ import GL from '@luma.gl/constants';
4
+
5
+ const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
6
+
7
+ type DebugContextProps = {
8
+ debug?: boolean;
9
+ throwOnError?: boolean;
10
+ break?: string[];
11
+ webgl2?: boolean;
12
+ };
13
+
14
+ const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
+ debug: true,
16
+ throwOnError: false,
17
+ break: undefined,
18
+ webgl2: false,
19
+ }
20
+
21
+ // Helper to get shared context data
22
+ function getContextData(gl: any) {
23
+ gl.luma = gl.luma || {};
24
+ return gl.luma;
25
+ }
26
+
27
+ declare global {
28
+ var WebGLDebugUtils: any;
29
+ }
30
+
31
+ /**
32
+ * Loads Khronos WebGLDeveloperTools from CDN if not already installed
33
+ * const WebGLDebugUtils = require('webgl-debug');
34
+ * @see https://github.com/KhronosGroup/WebGLDeveloperTools
35
+ * @see https://github.com/vorg/webgl-debug
36
+ */
37
+ export async function loadWebGLDeveloperTools(): Promise<void> {
38
+ if (!globalThis.WebGLDebugUtils) {
39
+ // @ts-expect-error Developer tools expects global to be set
40
+ globalThis.global = globalThis.global || globalThis;
41
+ // @ts-expect-error Developer tools expects global to be set
42
+ globalThis.global.module = {};
43
+ await loadScript(WEBGL_DEBUG_CDN_URL);
44
+ }
45
+ }
46
+
47
+ // Returns (a potentially new) context with debug instrumentation turned off or on.
48
+ // Note that this actually returns a new context
49
+ export function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext {
50
+ // Return null to ensure we don't try to create a context in this case (TODO what case is that?)
51
+ if (!gl) {
52
+ return null;
53
+ }
54
+
55
+ return props.debug ? getDebugContext(gl, props) : getRealContext(gl);
56
+ }
57
+
58
+ // Returns the real context from either of the real/debug contexts
59
+ function getRealContext(gl: WebGLRenderingContext): WebGLRenderingContext {
60
+ const data = getContextData(gl);
61
+ // If the context has a realContext member, it is a debug context so return the realContext
62
+ return data.realContext ? data.realContext : gl;
63
+ }
64
+
65
+ // Returns the debug context from either of the real/debug contexts
66
+ function getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): WebGLRenderingContext {
67
+ if (!globalThis.WebGLDebugUtils) {
68
+ log.warn('webgl-debug not loaded')();
69
+ return gl;
70
+ }
71
+
72
+ const data = getContextData(gl);
73
+
74
+ // If this already has a debug context, return it.
75
+ if (data.debugContext) {
76
+ return data.debugContext;
77
+ }
78
+
79
+ // Create a new debug context
80
+ globalThis.WebGLDebugUtils.init({...GL, ...gl});
81
+ const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(
82
+ gl,
83
+ onGLError.bind(null, props),
84
+ onValidateGLFunc.bind(null, props)
85
+ );
86
+
87
+ // Make sure we have all WebGL2 and extension constants (todo dynamic import to circumvent minification?)
88
+ for (const key in GL) {
89
+ if (!(key in glDebug) && typeof GL[key] === 'number') {
90
+ glDebug[key] = GL[key];
91
+ }
92
+ }
93
+
94
+ // Ensure we have a clean prototype on the instrumented object
95
+ // Note: setPrototypeOf does come with perf warnings, but we already take a bigger perf reduction
96
+ // by synchronizing the WebGL errors after each WebGL call.
97
+ class WebGLDebugContext {}
98
+ Object.setPrototypeOf(glDebug, Object.getPrototypeOf(gl));
99
+ Object.setPrototypeOf(WebGLDebugContext, glDebug);
100
+ const debugContext = Object.create(WebGLDebugContext);
101
+ // Store the debug context
102
+ data.realContext = gl;
103
+ data.debugContext = debugContext;
104
+ debugContext.debug = true;
105
+
106
+ // Return it
107
+ return debugContext;
108
+ }
109
+
110
+ // DEBUG TRACING
111
+
112
+ function getFunctionString(functionName: string, functionArgs): string {
113
+ // Cover bug in webgl-debug-tools
114
+ functionArgs = Array.from(functionArgs).map(arg => arg === undefined ? 'undefined' : arg);
115
+ let args = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, functionArgs);
116
+ args = `${args.slice(0, 100)}${args.length > 100 ? '...' : ''}`;
117
+ return `gl.${functionName}(${args})`;
118
+ }
119
+
120
+ function onGLError(props: DebugContextProps, err, functionName: string, args: any[]): void {
121
+ // Cover bug in webgl-debug-tools
122
+ args = Array.from(args).map(arg => arg === undefined ? 'undefined' : arg);
123
+ const errorMessage = globalThis.WebGLDebugUtils.glEnumToString(err);
124
+ const functionArgs = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, args);
125
+ const glName = props.webgl2 ? 'gl2' : 'gl1';
126
+ const message = `${errorMessage} in ${glName}.${functionName}(${functionArgs})`;
127
+ log.error(message)();
128
+ debugger; // eslint-disable-line
129
+ if (props.throwOnError) {
130
+ throw new Error(message);
131
+ }
132
+ }
133
+
134
+ // Don't generate function string until it is needed
135
+ function onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {
136
+ let functionString: string;
137
+ if (log.level >= 1) {
138
+ functionString = getFunctionString(functionName, functionArgs);
139
+ log.log(1, functionString)();
140
+ }
141
+
142
+ if (props.break) {
143
+ functionString = functionString || getFunctionString(functionName, functionArgs);
144
+ const isBreakpoint =
145
+ props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);
146
+ if (isBreakpoint) {
147
+ debugger; // eslint-disable-line
148
+ }
149
+ }
150
+
151
+ for (const arg of functionArgs) {
152
+ if (arg === undefined) {
153
+ functionString = functionString || getFunctionString(functionName, functionArgs);
154
+ if (props.throwOnError) {
155
+ throw new Error(`Undefined argument: ${functionString}`);
156
+ } else {
157
+ log.error(`Undefined argument: ${functionString}`)();
158
+ debugger; // eslint-disable-line
159
+ }
160
+ }
161
+ }
162
+ }
@@ -1,8 +1,8 @@
1
1
  // Provides a unified API for getting and setting any WebGL parameter
2
2
  // Also knows default values of all parameters, enabling fast cache initialization
3
3
  // Provides base functionality for the state caching.
4
- import {assert} from '@luma.gl/api';
5
- import type {GLParameters} from './webgl-parameters';
4
+ import {Device} from '@luma.gl/api';
5
+ import type {GLParameters} from '../../types/webgl';
6
6
  import {
7
7
  GL_PARAMETER_DEFAULTS,
8
8
  GL_PARAMETER_SETTERS,
@@ -11,6 +11,7 @@ import {
11
11
  } from './webgl-parameter-tables';
12
12
 
13
13
  import {isWebGL} from '../context/webgl-checks';
14
+ import WebGLDevice from '../../adapter/webgl-device';
14
15
 
15
16
  export type {GLParameters};
16
17
 
@@ -20,8 +21,9 @@ export type {GLParameters};
20
21
  * @note requires a `cache` object to be set on the context (gl.state.cache)
21
22
  * This object is used to fill in any missing values for composite setter functions
22
23
  */
23
- export function setParameters(gl: WebGLRenderingContext, parameters: GLParameters): void {
24
- assert(isWebGL(gl), 'setParameters requires a WebGL context');
24
+ export function setParameters(device: Device | WebGLRenderingContext, parameters: GLParameters): void {
25
+ const webglDevice = WebGLDevice.attach(device);
26
+ const gl = webglDevice.gl;
25
27
 
26
28
  if (isObjectEmpty(parameters)) {
27
29
  return;
@@ -1,7 +1,7 @@
1
1
  // Tables describing WebGL parameters
2
2
  import GL from '@luma.gl/constants';
3
3
  import {isWebGL2} from '../context/webgl-checks';
4
- import {GLParameters} from './webgl-parameters';
4
+ import type {GLParameters} from '../../types/webgl';
5
5
  // DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS
6
6
 
7
7
  /* eslint-disable no-shadow */
@@ -346,42 +346,44 @@ export const GL_COMPOSITE_PARAMETER_SETTERS = {
346
346
  )
347
347
  };
348
348
 
349
+ type UpdateFunc = (params: Record<string, any>) => void;
350
+
349
351
  // Setter functions intercepted for cache updates
350
352
  export const GL_HOOKED_SETTERS = {
351
353
  // GENERIC SETTERS
352
354
 
353
- enable: (update, capability) =>
355
+ enable: (update: UpdateFunc, capability) =>
354
356
  update({
355
357
  [capability]: true
356
358
  }),
357
- disable: (update, capability) =>
359
+ disable: (update: UpdateFunc, capability) =>
358
360
  update({
359
361
  [capability]: false
360
362
  }),
361
- pixelStorei: (update, pname, value) =>
363
+ pixelStorei: (update: UpdateFunc, pname, value) =>
362
364
  update({
363
365
  [pname]: value
364
366
  }),
365
- hint: (update, pname, hint) =>
367
+ hint: (update: UpdateFunc, pname, hint) =>
366
368
  update({
367
369
  [pname]: hint
368
370
  }),
369
371
 
370
372
  // SPECIFIC SETTERS
371
- useProgram: (update, value) => update({
373
+ useProgram: (update: UpdateFunc, value) => update({
372
374
  [GL.CURRENT_PROGRAM]: value,
373
375
  }),
374
- bindRenderbuffer: (update, target, value) => update({
376
+ bindRenderbuffer: (update: UpdateFunc, target, value) => update({
375
377
  [GL.RENDERBUFFER_BINDING]: value
376
378
  }),
377
- bindTransformFeedback: (update, target, value) => update({
379
+ bindTransformFeedback: (update: UpdateFunc, target, value) => update({
378
380
  [GL.TRANSFORM_FEEDBACK_BINDING]: value
379
381
  }),
380
- bindVertexArray: (update, value) => update({
382
+ bindVertexArray: (update: UpdateFunc, value) => update({
381
383
  [GL.VERTEX_ARRAY_BINDING]: value
382
384
  }),
383
385
 
384
- bindFramebuffer: (update, target, framebuffer) => {
386
+ bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {
385
387
  switch (target) {
386
388
  case GL.FRAMEBUFFER:
387
389
  return update({
@@ -396,7 +398,7 @@ export const GL_HOOKED_SETTERS = {
396
398
  return null;
397
399
  }
398
400
  },
399
- bindBuffer: (update, target, buffer) => {
401
+ bindBuffer: (update: UpdateFunc, target, buffer) => {
400
402
  const pname = ({
401
403
  [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],
402
404
  [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],
@@ -412,24 +414,24 @@ export const GL_HOOKED_SETTERS = {
412
414
  return {valueChanged: true};
413
415
  },
414
416
 
415
- blendColor: (update, r, g, b, a) =>
417
+ blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>
416
418
  update({
417
419
  [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])
418
420
  }),
419
421
 
420
- blendEquation: (update, mode) =>
422
+ blendEquation: (update: UpdateFunc, mode) =>
421
423
  update({
422
424
  [GL.BLEND_EQUATION_RGB]: mode,
423
425
  [GL.BLEND_EQUATION_ALPHA]: mode
424
426
  }),
425
427
 
426
- blendEquationSeparate: (update, modeRGB, modeAlpha) =>
428
+ blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>
427
429
  update({
428
430
  [GL.BLEND_EQUATION_RGB]: modeRGB,
429
431
  [GL.BLEND_EQUATION_ALPHA]: modeAlpha
430
432
  }),
431
433
 
432
- blendFunc: (update, src, dst) =>
434
+ blendFunc: (update: UpdateFunc, src, dst) =>
433
435
  update({
434
436
  [GL.BLEND_SRC_RGB]: src,
435
437
  [GL.BLEND_DST_RGB]: dst,
@@ -437,7 +439,7 @@ export const GL_HOOKED_SETTERS = {
437
439
  [GL.BLEND_DST_ALPHA]: dst
438
440
  }),
439
441
 
440
- blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>
442
+ blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>
441
443
  update({
442
444
  [GL.BLEND_SRC_RGB]: srcRGB,
443
445
  [GL.BLEND_DST_RGB]: dstRGB,
@@ -445,85 +447,85 @@ export const GL_HOOKED_SETTERS = {
445
447
  [GL.BLEND_DST_ALPHA]: dstAlpha
446
448
  }),
447
449
 
448
- clearColor: (update, r, g, b, a) =>
450
+ clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>
449
451
  update({
450
452
  [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])
451
453
  }),
452
454
 
453
- clearDepth: (update, depth) =>
455
+ clearDepth: (update: UpdateFunc, depth: number) =>
454
456
  update({
455
457
  [GL.DEPTH_CLEAR_VALUE]: depth
456
458
  }),
457
459
 
458
- clearStencil: (update, s) =>
460
+ clearStencil: (update: UpdateFunc, s: number) =>
459
461
  update({
460
462
  [GL.STENCIL_CLEAR_VALUE]: s
461
463
  }),
462
464
 
463
- colorMask: (update, r, g, b, a) =>
465
+ colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>
464
466
  update({
465
467
  [GL.COLOR_WRITEMASK]: [r, g, b, a]
466
468
  }),
467
469
 
468
- cullFace: (update, mode) =>
470
+ cullFace: (update: UpdateFunc, mode) =>
469
471
  update({
470
472
  [GL.CULL_FACE_MODE]: mode
471
473
  }),
472
474
 
473
- depthFunc: (update, func) =>
475
+ depthFunc: (update: UpdateFunc, func) =>
474
476
  update({
475
477
  [GL.DEPTH_FUNC]: func
476
478
  }),
477
479
 
478
- depthRange: (update, zNear, zFar) =>
480
+ depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>
479
481
  update({
480
482
  [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])
481
483
  }),
482
484
 
483
- depthMask: (update, mask) =>
485
+ depthMask: (update: UpdateFunc, mask: number) =>
484
486
  update({
485
487
  [GL.DEPTH_WRITEMASK]: mask
486
488
  }),
487
489
 
488
- frontFace: (update, face) =>
490
+ frontFace: (update: UpdateFunc, face) =>
489
491
  update({
490
492
  [GL.FRONT_FACE]: face
491
493
  }),
492
494
 
493
- lineWidth: (update, width) =>
495
+ lineWidth: (update: UpdateFunc, width) =>
494
496
  update({
495
497
  [GL.LINE_WIDTH]: width
496
498
  }),
497
499
 
498
- polygonOffset: (update, factor, units) =>
500
+ polygonOffset: (update: UpdateFunc, factor, units) =>
499
501
  update({
500
502
  [GL.POLYGON_OFFSET_FACTOR]: factor,
501
503
  [GL.POLYGON_OFFSET_UNITS]: units
502
504
  }),
503
505
 
504
- sampleCoverage: (update, value, invert) =>
506
+ sampleCoverage: (update: UpdateFunc, value, invert) =>
505
507
  update({
506
508
  [GL.SAMPLE_COVERAGE_VALUE]: value,
507
509
  [GL.SAMPLE_COVERAGE_INVERT]: invert
508
510
  }),
509
511
 
510
- scissor: (update, x, y, width, height) =>
512
+ scissor: (update: UpdateFunc, x, y, width, height) =>
511
513
  update({
512
514
  [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])
513
515
  }),
514
516
 
515
- stencilMask: (update, mask) =>
517
+ stencilMask: (update: UpdateFunc, mask) =>
516
518
  update({
517
519
  [GL.STENCIL_WRITEMASK]: mask,
518
520
  [GL.STENCIL_BACK_WRITEMASK]: mask
519
521
  }),
520
522
 
521
- stencilMaskSeparate: (update, face, mask) =>
523
+ stencilMaskSeparate: (update: UpdateFunc, face, mask) =>
522
524
  update({
523
525
  [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask
524
526
  }),
525
527
 
526
- stencilFunc: (update, func, ref, mask) =>
528
+ stencilFunc: (update: UpdateFunc, func, ref, mask) =>
527
529
  update({
528
530
  [GL.STENCIL_FUNC]: func,
529
531
  [GL.STENCIL_REF]: ref,
@@ -533,14 +535,14 @@ export const GL_HOOKED_SETTERS = {
533
535
  [GL.STENCIL_BACK_VALUE_MASK]: mask
534
536
  }),
535
537
 
536
- stencilFuncSeparate: (update, face, func, ref, mask) =>
538
+ stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>
537
539
  update({
538
540
  [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,
539
541
  [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,
540
542
  [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask
541
543
  }),
542
544
 
543
- stencilOp: (update, fail, zfail, zpass) =>
545
+ stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>
544
546
  update({
545
547
  [GL.STENCIL_FAIL]: fail,
546
548
  [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,
@@ -550,14 +552,14 @@ export const GL_HOOKED_SETTERS = {
550
552
  [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass
551
553
  }),
552
554
 
553
- stencilOpSeparate: (update, face, fail, zfail, zpass) =>
555
+ stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>
554
556
  update({
555
557
  [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,
556
558
  [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,
557
559
  [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass
558
560
  }),
559
561
 
560
- viewport: (update, x, y, width, height) =>
562
+ viewport: (update: UpdateFunc, x, y, width, height) =>
561
563
  update({
562
564
  [GL.VIEWPORT]: [x, y, width, height]
563
565
  })
@@ -51,7 +51,7 @@ const WEBGL_PARAMETERS = {
51
51
 
52
52
  // Extension LIMITS
53
53
  [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {
54
- const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
54
+ const ext = gl.luma?.extensions?.[EXT_texture_filter_anisotropic] ||
55
55
  gl.getExtension('EXT_texture_filter_anisotropic');
56
56
  return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;
57
57
  },
@@ -35,10 +35,11 @@ function initializeExtensions(gl: WebGLRenderingContext): void {
35
35
  const contextState = getContextState(gl);
36
36
  // `getSupportedExtensions` can return null when context is lost.
37
37
  const EXTENSIONS = gl.getSupportedExtensions() || [];
38
- for (const extension of EXTENSIONS) {
39
- contextState._extensions[extension] = gl.getExtension(extension);
38
+ for (const extensionName of EXTENSIONS) {
39
+ const extension = gl.getExtension(extensionName);
40
+ contextState._extensions[extensionName] = extension;
40
41
  // TODO - this looks like a mistake?
41
- contextState[extension] = gl.getExtension(extension);
42
+ contextState[extensionName] = extension;
42
43
  }
43
44
  }
44
45
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  /** deeply compare two arrays */
3
- export function deepArrayEqual(x, y): boolean {
3
+ export function deepArrayEqual(x: any, y: any): boolean {
4
4
  if (x === y) {
5
5
  return true;
6
6
  }
@@ -81,6 +81,11 @@ class GLState {
81
81
  }
82
82
  }
83
83
 
84
+ function getContextState(gl: WebGLRenderingContext): GLState {
85
+ // @ts-expect-error
86
+ return gl.state as GLState;
87
+ }
88
+
84
89
  // PUBLIC API
85
90
 
86
91
  /**
@@ -127,8 +132,8 @@ class GLState {
127
132
  installGetterOverride(gl, 'isEnabled');
128
133
  }
129
134
 
130
- // @ts-expect-error
131
- gl.state.enable = enable;
135
+ const glState = getContextState(gl);
136
+ glState.enable = enable;
132
137
 
133
138
  return gl;
134
139
  }
@@ -137,12 +142,12 @@ class GLState {
137
142
  * Saves current WebGL context state onto an internal per-context stack
138
143
  */
139
144
  export function pushContextState(gl: WebGLRenderingContext): void {
140
- // @ts-expect-error
141
- if (!gl.state) {
145
+ let glState = getContextState(gl);
146
+ if (!glState) {
142
147
  trackContextState(gl, {copyState: false});
148
+ glState = getContextState(gl);
143
149
  }
144
- // @ts-expect-error
145
- gl.state.push();
150
+ glState.push();
146
151
  }
147
152
 
148
153
 
@@ -150,10 +155,9 @@ class GLState {
150
155
  * Restores previously saved WebGL context state
151
156
  */
152
157
  export function popContextState(gl: WebGLRenderingContext): void {
153
- // @ts-expect-error
154
- assert(gl.state);
155
- // @ts-expect-error
156
- gl.state.pop();
158
+ const glState = getContextState(gl);
159
+ assert(glState);
160
+ glState.pop();
157
161
  }
158
162
 
159
163
  // HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT
@@ -164,7 +168,7 @@ export function popContextState(gl: WebGLRenderingContext): void {
164
168
  * @param gl
165
169
  * @param functionName
166
170
  */
167
- function installGetterOverride(gl, functionName) {
171
+ function installGetterOverride(gl: WebGLRenderingContext, functionName: string) {
168
172
  // Get the original function from the WebGLRenderingContext
169
173
  const originalGetterFunc = gl[functionName].bind(gl);
170
174
 
@@ -175,15 +179,16 @@ function installGetterOverride(gl, functionName) {
175
179
  return originalGetterFunc(pname);
176
180
  }
177
181
 
178
- if (!(pname in gl.state.cache)) {
182
+ const glState = getContextState(gl);
183
+ if (!(pname in glState.cache)) {
179
184
  // WebGL limits are not prepopulated in the cache, call the original getter when first queried.
180
- gl.state.cache[pname] = originalGetterFunc(pname);
185
+ glState.cache[pname] = originalGetterFunc(pname);
181
186
  }
182
187
 
183
188
  // Optionally call the original function to do a "hard" query from the WebGLRenderingContext
184
- return gl.state.enable
189
+ return glState.enable
185
190
  ? // Call the getter the params so that it can e.g. serve from a cache
186
- gl.state.cache[pname]
191
+ glState.cache[pname]
187
192
  : // Optionally call the original function to do a "hard" query from the WebGLRenderingContext
188
193
  originalGetterFunc(pname);
189
194
  };
@@ -204,7 +209,7 @@ function installGetterOverride(gl, functionName) {
204
209
  * @param setter
205
210
  * @returns
206
211
  */
207
- function installSetterSpy(gl, functionName, setter) {
212
+ function installSetterSpy(gl: WebGLRenderingContext, functionName, setter) {
208
213
  // Get the original function from the WebGLRenderingContext
209
214
  if (!gl[functionName]) {
210
215
  // This could happen if we try to intercept WebGL2 method on a WebGL1 context
@@ -216,7 +221,8 @@ function installSetterSpy(gl, functionName, setter) {
216
221
  gl[functionName] = function set(...params) {
217
222
  // Update the value
218
223
  // Call the setter with the state cache and the params so that it can store the parameters
219
- const {valueChanged, oldValue} = setter(gl.state._updateCache, ...params);
224
+ const glState = getContextState(gl);
225
+ const {valueChanged, oldValue} = setter(glState._updateCache, ...params);
220
226
 
221
227
  // Call the original WebGLRenderingContext func to make sure the context actually gets updated
222
228
  if (valueChanged) {
@@ -238,13 +244,14 @@ function installSetterSpy(gl, functionName, setter) {
238
244
  });
239
245
  }
240
246
 
241
- function installProgramSpy(gl) {
247
+ function installProgramSpy(gl: WebGLRenderingContext): void {
242
248
  const originalUseProgram = gl.useProgram.bind(gl);
243
249
 
244
250
  gl.useProgram = function useProgramLuma(handle) {
245
- if (gl.state.program !== handle) {
251
+ const glState = getContextState(gl);
252
+ if (glState.program !== handle) {
246
253
  originalUseProgram(handle);
247
- gl.state.program = handle;
254
+ glState.program = handle;
248
255
  }
249
256
  };
250
257
  }