@luma.gl/webgl 8.6.0-alpha.4 → 9.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (783) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +27 -0
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
  4. package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
  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/{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 +227 -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 +39 -50
  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 +330 -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/{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 +41 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +267 -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 +21 -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 +428 -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/{esm/adapter → adapter/resources}/webgl-shader.js +17 -23
  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/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
  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 +63 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +244 -115
  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} +67 -57
  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 → create-browser-context.d.ts} +2 -1
  132. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  133. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +27 -3
  134. package/dist/context/context/create-browser-context.js.map +1 -0
  135. package/dist/context/context/create-headless-context.d.ts +9 -0
  136. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  137. package/dist/context/context/create-headless-context.js +43 -0
  138. package/dist/context/context/create-headless-context.js.map +1 -0
  139. package/dist/context/context/device-pixels.d.ts +1 -1
  140. package/dist/context/context/device-pixels.d.ts.map +1 -1
  141. package/dist/context/context/device-pixels.js +13 -8
  142. package/dist/context/context/device-pixels.js.map +1 -1
  143. package/dist/context/debug/spector.d.ts +18 -0
  144. package/dist/context/debug/spector.d.ts.map +1 -0
  145. package/dist/context/debug/spector.js +76 -0
  146. package/dist/context/debug/spector.js.map +1 -0
  147. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  148. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  149. package/dist/context/debug/webgl-developer-tools.js +121 -0
  150. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  151. package/dist/context/parameters/unified-parameter-api.d.ts +9 -7
  152. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  153. package/dist/context/parameters/unified-parameter-api.js +9 -8
  154. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  155. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  156. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  157. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  158. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  159. package/dist/context/polyfill/polyfill-context.js +3 -3
  160. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-table.d.ts +1 -1
  162. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  163. package/dist/context/polyfill/polyfill-table.js +1 -1
  164. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  165. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  166. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  168. package/dist/context/state-tracker/track-context-state.js +26 -12
  169. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  171. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  172. package/dist/context/state-tracker/with-parameters.js +6 -2
  173. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  174. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +53 -6
  175. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  176. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  177. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  178. package/dist/es5/adapter/converters/sampler-parameters.js +245 -0
  179. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  180. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  181. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  182. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  183. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  184. package/dist/es5/adapter/device-helpers/device-features.js +61 -58
  185. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  186. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  187. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  188. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  189. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  190. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  191. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  192. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +211 -94
  193. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  194. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  195. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  196. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  197. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  198. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  199. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  200. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  201. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  202. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  203. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  204. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  205. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  206. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  207. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  208. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  209. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  210. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  211. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  212. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  213. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  214. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  215. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  216. package/dist/es5/adapter/resources/webgl-framebuffer.js +346 -0
  217. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  218. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +26 -45
  219. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  220. package/dist/es5/adapter/resources/webgl-render-pipeline.js +530 -0
  221. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  222. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  223. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  224. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +16 -21
  225. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  226. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +374 -298
  227. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  228. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  229. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  230. package/dist/es5/adapter/webgl-device.js +316 -132
  231. package/dist/es5/adapter/webgl-device.js.map +1 -1
  232. package/dist/es5/{classes → classic}/accessor.js +25 -1
  233. package/dist/es5/classic/accessor.js.map +1 -0
  234. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +88 -72
  235. package/dist/es5/classic/buffer.js.map +1 -0
  236. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  237. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  238. package/dist/es5/context/context/context-state.js +1 -1
  239. package/dist/es5/context/context/context-state.js.map +1 -1
  240. package/dist/es5/context/context/{create-context.js → create-browser-context.js} +29 -3
  241. package/dist/es5/context/context/create-browser-context.js.map +1 -0
  242. package/dist/es5/context/context/create-headless-context.js +60 -0
  243. package/dist/es5/context/context/create-headless-context.js.map +1 -0
  244. package/dist/es5/context/context/device-pixels.js +14 -8
  245. package/dist/es5/context/context/device-pixels.js.map +1 -1
  246. package/dist/es5/context/debug/spector.js +133 -0
  247. package/dist/es5/context/debug/spector.js.map +1 -0
  248. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  249. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  250. package/dist/es5/context/parameters/unified-parameter-api.js +15 -9
  251. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  252. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  253. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  254. package/dist/es5/context/polyfill/polyfill-context.js +3 -3
  255. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  256. package/dist/es5/context/polyfill/polyfill-table.js +1 -1
  257. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  258. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  259. package/dist/es5/context/state-tracker/track-context-state.js +39 -24
  260. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  261. package/dist/es5/context/state-tracker/with-parameters.js +8 -2
  262. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  263. package/dist/es5/index.js +72 -300
  264. package/dist/es5/index.js.map +1 -1
  265. package/dist/es5/init.js +1 -41
  266. package/dist/es5/init.js.map +1 -1
  267. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  268. package/dist/es5/types/webgl.js.map +1 -0
  269. package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
  270. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  271. package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  272. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  273. package/dist/esm/adapter/converters/sampler-parameters.js +227 -0
  274. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  275. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  276. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  277. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  278. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  279. package/dist/esm/adapter/device-helpers/device-features.js +39 -50
  280. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  281. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  282. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  283. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  284. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  285. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  286. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  287. package/dist/esm/adapter/helpers/get-shader-layout.js +330 -0
  288. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  289. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  290. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  291. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  292. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  293. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  294. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  295. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  296. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  297. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  298. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  299. package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
  300. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  301. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  302. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  303. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  304. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  305. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  306. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  307. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  308. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  309. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  310. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  311. package/dist/esm/adapter/resources/webgl-framebuffer.js +267 -0
  312. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  313. package/dist/esm/adapter/resources/webgl-render-pass.js +21 -0
  314. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  315. package/dist/esm/adapter/resources/webgl-render-pipeline.js +428 -0
  316. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  317. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  318. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  319. package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +17 -23
  320. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  321. package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
  322. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  323. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  324. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  325. package/dist/esm/adapter/webgl-device.js +244 -115
  326. package/dist/esm/adapter/webgl-device.js.map +1 -1
  327. package/dist/esm/{classes → classic}/accessor.js +33 -1
  328. package/dist/esm/classic/accessor.js.map +1 -0
  329. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +67 -57
  330. package/dist/esm/classic/buffer.js.map +1 -0
  331. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  332. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  333. package/dist/esm/context/context/context-state.js +1 -1
  334. package/dist/esm/context/context/context-state.js.map +1 -1
  335. package/dist/{context/context/create-context.js → esm/context/context/create-browser-context.js} +27 -3
  336. package/dist/esm/context/context/create-browser-context.js.map +1 -0
  337. package/dist/esm/context/context/create-headless-context.js +43 -0
  338. package/dist/esm/context/context/create-headless-context.js.map +1 -0
  339. package/dist/esm/context/context/device-pixels.js +13 -8
  340. package/dist/esm/context/context/device-pixels.js.map +1 -1
  341. package/dist/esm/context/debug/spector.js +76 -0
  342. package/dist/esm/context/debug/spector.js.map +1 -0
  343. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  344. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  345. package/dist/esm/context/parameters/unified-parameter-api.js +9 -8
  346. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  347. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  348. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  349. package/dist/esm/context/polyfill/polyfill-context.js +3 -3
  350. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  351. package/dist/esm/context/polyfill/polyfill-table.js +1 -1
  352. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  353. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  354. package/dist/esm/context/state-tracker/track-context-state.js +26 -12
  355. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  356. package/dist/esm/context/state-tracker/with-parameters.js +6 -2
  357. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  358. package/dist/esm/index.js +20 -31
  359. package/dist/esm/index.js.map +1 -1
  360. package/dist/esm/init.js +2 -31
  361. package/dist/esm/init.js.map +1 -1
  362. package/dist/esm/types/webgl.js +2 -0
  363. package/dist/esm/types/webgl.js.map +1 -0
  364. package/dist/index.d.ts +25 -46
  365. package/dist/index.d.ts.map +1 -1
  366. package/dist/index.js +20 -31
  367. package/dist/index.js.map +1 -1
  368. package/dist/init.d.ts +1 -4
  369. package/dist/init.d.ts.map +1 -1
  370. package/dist/init.js +2 -31
  371. package/dist/init.js.map +1 -1
  372. package/dist/types/webgl.d.ts +145 -0
  373. package/dist/types/webgl.d.ts.map +1 -0
  374. package/dist/types/webgl.js +2 -0
  375. package/dist/types/webgl.js.map +1 -0
  376. package/package.json +5 -5
  377. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +81 -12
  378. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  379. package/src/adapter/converters/sampler-parameters.ts +184 -0
  380. package/src/adapter/converters/texture-formats.ts +633 -0
  381. package/src/adapter/converters/vertex-formats.ts +22 -0
  382. package/src/adapter/device-helpers/device-features.ts +55 -124
  383. package/src/adapter/device-helpers/device-limits.ts +6 -3
  384. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  385. package/src/adapter/helpers/attribute-utils.ts +61 -0
  386. package/src/adapter/helpers/get-shader-layout.ts +407 -0
  387. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  388. package/src/adapter/helpers/set-uniform.ts +87 -0
  389. package/src/adapter/helpers/uniforms.ts +121 -0
  390. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  391. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  392. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  393. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  394. package/src/adapter/resources/webgl-buffer.ts +219 -0
  395. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  396. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  397. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  398. package/src/adapter/resources/webgl-framebuffer.ts +282 -0
  399. package/src/adapter/resources/webgl-render-pass.ts +24 -0
  400. package/src/adapter/resources/webgl-render-pipeline.ts +425 -0
  401. package/src/adapter/resources/webgl-sampler.ts +56 -0
  402. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +19 -24
  403. package/src/adapter/resources/webgl-texture.ts +1036 -0
  404. package/src/adapter/webgl-canvas-context.ts +74 -0
  405. package/src/adapter/webgl-device.ts +297 -289
  406. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +38 -37
  407. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +76 -84
  408. package/src/{webgl-utils → classic}/typed-array-utils.ts +5 -1
  409. package/src/context/context/context-state.ts +4 -2
  410. package/src/context/context/{create-context.ts → create-browser-context.ts} +41 -6
  411. package/src/context/context/create-headless-context.ts +48 -0
  412. package/src/context/context/device-pixels.ts +24 -13
  413. package/src/context/debug/spector.ts +92 -0
  414. package/src/context/debug/webgl-developer-tools.ts +162 -0
  415. package/src/context/parameters/unified-parameter-api.ts +21 -13
  416. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  417. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  418. package/src/context/polyfill/polyfill-context.ts +4 -5
  419. package/src/context/polyfill/polyfill-table.ts +1 -1
  420. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  421. package/src/context/state-tracker/track-context-state.ts +34 -26
  422. package/src/context/state-tracker/with-parameters.ts +7 -2
  423. package/src/index.ts +42 -102
  424. package/src/init.ts +2 -46
  425. package/src/types/webgl.ts +284 -0
  426. package/dist/_deprecated/context-api.d.ts +0 -85
  427. package/dist/_deprecated/context-api.d.ts.map +0 -1
  428. package/dist/_deprecated/context-api.js +0 -70
  429. package/dist/_deprecated/context-api.js.map +0 -1
  430. package/dist/_deprecated/features.d.ts +0 -27
  431. package/dist/_deprecated/features.d.ts.map +0 -1
  432. package/dist/_deprecated/features.js +0 -111
  433. package/dist/_deprecated/features.js.map +0 -1
  434. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  435. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  436. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  437. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  438. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  439. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  440. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  441. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  442. package/dist/adapter/webgl-shader.js.map +0 -1
  443. package/dist/classes/accessor.d.ts +0 -28
  444. package/dist/classes/accessor.d.ts.map +0 -1
  445. package/dist/classes/accessor.js.map +0 -1
  446. package/dist/classes/accessor.ts.disabled +0 -159
  447. package/dist/classes/clear.d.ts +0 -17
  448. package/dist/classes/clear.d.ts.map +0 -1
  449. package/dist/classes/clear.js +0 -105
  450. package/dist/classes/clear.js.map +0 -1
  451. package/dist/classes/copy-and-blit.d.ts +0 -86
  452. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  453. package/dist/classes/copy-and-blit.js +0 -338
  454. package/dist/classes/copy-and-blit.js.map +0 -1
  455. package/dist/classes/framebuffer.d.ts +0 -139
  456. package/dist/classes/framebuffer.d.ts.map +0 -1
  457. package/dist/classes/framebuffer.js +0 -656
  458. package/dist/classes/framebuffer.js.map +0 -1
  459. package/dist/classes/program-configuration.d.ts +0 -24
  460. package/dist/classes/program-configuration.d.ts.map +0 -1
  461. package/dist/classes/program-configuration.js +0 -73
  462. package/dist/classes/program-configuration.js.map +0 -1
  463. package/dist/classes/program.d.ts +0 -66
  464. package/dist/classes/program.d.ts.map +0 -1
  465. package/dist/classes/program.js +0 -379
  466. package/dist/classes/program.js.map +0 -1
  467. package/dist/classes/query.d.ts +0 -27
  468. package/dist/classes/query.d.ts.map +0 -1
  469. package/dist/classes/query.js +0 -145
  470. package/dist/classes/query.js.map +0 -1
  471. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  472. package/dist/classes/renderbuffer-formats.js.map +0 -1
  473. package/dist/classes/renderbuffer.d.ts +0 -60
  474. package/dist/classes/renderbuffer.d.ts.map +0 -1
  475. package/dist/classes/renderbuffer.js.map +0 -1
  476. package/dist/classes/shader.d.ts +0 -42
  477. package/dist/classes/shader.d.ts.map +0 -1
  478. package/dist/classes/shader.js +0 -118
  479. package/dist/classes/shader.js.map +0 -1
  480. package/dist/classes/texture-2d.d.ts +0 -9
  481. package/dist/classes/texture-2d.d.ts.map +0 -1
  482. package/dist/classes/texture-2d.js +0 -36
  483. package/dist/classes/texture-2d.js.map +0 -1
  484. package/dist/classes/texture-3d.d.ts +0 -29
  485. package/dist/classes/texture-3d.d.ts.map +0 -1
  486. package/dist/classes/texture-3d.js +0 -76
  487. package/dist/classes/texture-3d.js.map +0 -1
  488. package/dist/classes/texture-cube.d.ts +0 -28
  489. package/dist/classes/texture-cube.d.ts.map +0 -1
  490. package/dist/classes/texture-cube.js +0 -130
  491. package/dist/classes/texture-cube.js.map +0 -1
  492. package/dist/classes/texture-formats.d.ts +0 -37
  493. package/dist/classes/texture-formats.d.ts.map +0 -1
  494. package/dist/classes/texture-formats.js +0 -98
  495. package/dist/classes/texture-formats.js.map +0 -1
  496. package/dist/classes/texture.d.ts +0 -123
  497. package/dist/classes/texture.d.ts.map +0 -1
  498. package/dist/classes/texture.js.map +0 -1
  499. package/dist/classes/transform-feedback.d.ts +0 -33
  500. package/dist/classes/transform-feedback.d.ts.map +0 -1
  501. package/dist/classes/transform-feedback.js +0 -198
  502. package/dist/classes/transform-feedback.js.map +0 -1
  503. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  504. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  505. package/dist/classes/uniform-buffer-layout.js +0 -104
  506. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  507. package/dist/classes/uniforms.d.ts +0 -37
  508. package/dist/classes/uniforms.d.ts.map +0 -1
  509. package/dist/classes/uniforms.js +0 -250
  510. package/dist/classes/uniforms.js.map +0 -1
  511. package/dist/classes/vertex-array-object.d.ts +0 -76
  512. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  513. package/dist/classes/vertex-array-object.js +0 -261
  514. package/dist/classes/vertex-array-object.js.map +0 -1
  515. package/dist/classes/vertex-array.d.ts +0 -75
  516. package/dist/classes/vertex-array.d.ts.map +0 -1
  517. package/dist/classes/vertex-array.js +0 -408
  518. package/dist/classes/vertex-array.js.map +0 -1
  519. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  520. package/dist/classes/webgl-buffer.js.map +0 -1
  521. package/dist/classes/webgl-resource.d.ts.map +0 -1
  522. package/dist/classes/webgl-resource.js.map +0 -1
  523. package/dist/context/context/create-context.d.ts.map +0 -1
  524. package/dist/context/context/create-context.js.map +0 -1
  525. package/dist/context/context/get-canvas.d.ts +0 -13
  526. package/dist/context/context/get-canvas.d.ts.map +0 -1
  527. package/dist/context/context/get-canvas.js +0 -31
  528. package/dist/context/context/get-canvas.js.map +0 -1
  529. package/dist/context/context/resize-context.d.ts +0 -20
  530. package/dist/context/context/resize-context.d.ts.map +0 -1
  531. package/dist/context/context/resize-context.js +0 -15
  532. package/dist/context/context/resize-context.js.map +0 -1
  533. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  534. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  535. package/dist/context/parameters/webgl-parameters.js +0 -2
  536. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  537. package/dist/debug/debug-program-configuration.d.ts +0 -2
  538. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  539. package/dist/debug/debug-program-configuration.js +0 -40
  540. package/dist/debug/debug-program-configuration.js.map +0 -1
  541. package/dist/debug/debug-uniforms.d.ts +0 -12
  542. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  543. package/dist/debug/debug-uniforms.js +0 -108
  544. package/dist/debug/debug-uniforms.js.map +0 -1
  545. package/dist/debug/debug-vertex-array.d.ts +0 -5
  546. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  547. package/dist/debug/debug-vertex-array.js +0 -118
  548. package/dist/debug/debug-vertex-array.js.map +0 -1
  549. package/dist/es5/_deprecated/context-api.js +0 -110
  550. package/dist/es5/_deprecated/context-api.js.map +0 -1
  551. package/dist/es5/_deprecated/features.js +0 -118
  552. package/dist/es5/_deprecated/features.js.map +0 -1
  553. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  554. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  555. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  556. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  557. package/dist/es5/classes/accessor.d.ts +0 -28
  558. package/dist/es5/classes/accessor.js.map +0 -1
  559. package/dist/es5/classes/accessor.ts.disabled +0 -159
  560. package/dist/es5/classes/clear.js +0 -135
  561. package/dist/es5/classes/clear.js.map +0 -1
  562. package/dist/es5/classes/copy-and-blit.js +0 -382
  563. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  564. package/dist/es5/classes/framebuffer.js +0 -807
  565. package/dist/es5/classes/framebuffer.js.map +0 -1
  566. package/dist/es5/classes/program-configuration.js +0 -119
  567. package/dist/es5/classes/program-configuration.js.map +0 -1
  568. package/dist/es5/classes/program.js +0 -471
  569. package/dist/es5/classes/program.js.map +0 -1
  570. package/dist/es5/classes/query.js +0 -222
  571. package/dist/es5/classes/query.js.map +0 -1
  572. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  573. package/dist/es5/classes/renderbuffer.js.map +0 -1
  574. package/dist/es5/classes/shader.js +0 -195
  575. package/dist/es5/classes/shader.js.map +0 -1
  576. package/dist/es5/classes/texture-2d.js.map +0 -1
  577. package/dist/es5/classes/texture-3d.js +0 -142
  578. package/dist/es5/classes/texture-3d.js.map +0 -1
  579. package/dist/es5/classes/texture-cube.js +0 -202
  580. package/dist/es5/classes/texture-cube.js.map +0 -1
  581. package/dist/es5/classes/texture-formats.js +0 -87
  582. package/dist/es5/classes/texture-formats.js.map +0 -1
  583. package/dist/es5/classes/texture.js.map +0 -1
  584. package/dist/es5/classes/transform-feedback.js +0 -267
  585. package/dist/es5/classes/transform-feedback.js.map +0 -1
  586. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  587. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  588. package/dist/es5/classes/uniforms.js +0 -232
  589. package/dist/es5/classes/uniforms.js.map +0 -1
  590. package/dist/es5/classes/vertex-array-object.js +0 -337
  591. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  592. package/dist/es5/classes/vertex-array.js +0 -465
  593. package/dist/es5/classes/vertex-array.js.map +0 -1
  594. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  595. package/dist/es5/classes/webgl-resource.js.map +0 -1
  596. package/dist/es5/context/context/create-context.js.map +0 -1
  597. package/dist/es5/context/context/get-canvas.js +0 -40
  598. package/dist/es5/context/context/get-canvas.js.map +0 -1
  599. package/dist/es5/context/context/resize-context.js +0 -23
  600. package/dist/es5/context/context/resize-context.js.map +0 -1
  601. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  602. package/dist/es5/debug/debug-program-configuration.js +0 -76
  603. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  604. package/dist/es5/debug/debug-uniforms.js +0 -156
  605. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  606. package/dist/es5/debug/debug-vertex-array.js +0 -126
  607. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  608. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  609. package/dist/es5/helpers/program-bindings.js +0 -2
  610. package/dist/es5/types/accessor.d.ts +0 -29
  611. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  612. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  613. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  614. package/dist/es5/webgl-utils/format-utils.js +0 -58
  615. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  616. package/dist/es5/webgl-utils/get-error.js +0 -49
  617. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  618. package/dist/es5/webgl-utils/index.js +0 -74
  619. package/dist/es5/webgl-utils/index.js.map +0 -1
  620. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  621. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  622. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  623. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  624. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  625. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  626. package/dist/esm/_deprecated/context-api.js +0 -70
  627. package/dist/esm/_deprecated/context-api.js.map +0 -1
  628. package/dist/esm/_deprecated/features.js +0 -111
  629. package/dist/esm/_deprecated/features.js.map +0 -1
  630. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  631. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  632. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  633. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  634. package/dist/esm/classes/accessor.d.ts +0 -28
  635. package/dist/esm/classes/accessor.js.map +0 -1
  636. package/dist/esm/classes/clear.js +0 -105
  637. package/dist/esm/classes/clear.js.map +0 -1
  638. package/dist/esm/classes/copy-and-blit.js +0 -338
  639. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  640. package/dist/esm/classes/framebuffer.js +0 -656
  641. package/dist/esm/classes/framebuffer.js.map +0 -1
  642. package/dist/esm/classes/program-configuration.js +0 -73
  643. package/dist/esm/classes/program-configuration.js.map +0 -1
  644. package/dist/esm/classes/program.js +0 -379
  645. package/dist/esm/classes/program.js.map +0 -1
  646. package/dist/esm/classes/query.js +0 -145
  647. package/dist/esm/classes/query.js.map +0 -1
  648. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  649. package/dist/esm/classes/renderbuffer.js.map +0 -1
  650. package/dist/esm/classes/shader.js +0 -118
  651. package/dist/esm/classes/shader.js.map +0 -1
  652. package/dist/esm/classes/texture-2d.js +0 -36
  653. package/dist/esm/classes/texture-2d.js.map +0 -1
  654. package/dist/esm/classes/texture-3d.js +0 -76
  655. package/dist/esm/classes/texture-3d.js.map +0 -1
  656. package/dist/esm/classes/texture-cube.js +0 -130
  657. package/dist/esm/classes/texture-cube.js.map +0 -1
  658. package/dist/esm/classes/texture-formats.js +0 -98
  659. package/dist/esm/classes/texture-formats.js.map +0 -1
  660. package/dist/esm/classes/texture.js.map +0 -1
  661. package/dist/esm/classes/transform-feedback.js +0 -198
  662. package/dist/esm/classes/transform-feedback.js.map +0 -1
  663. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  664. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  665. package/dist/esm/classes/uniforms.js +0 -250
  666. package/dist/esm/classes/uniforms.js.map +0 -1
  667. package/dist/esm/classes/vertex-array-object.js +0 -261
  668. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  669. package/dist/esm/classes/vertex-array.js +0 -408
  670. package/dist/esm/classes/vertex-array.js.map +0 -1
  671. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  672. package/dist/esm/classes/webgl-resource.js.map +0 -1
  673. package/dist/esm/context/context/create-context.js.map +0 -1
  674. package/dist/esm/context/context/get-canvas.js +0 -31
  675. package/dist/esm/context/context/get-canvas.js.map +0 -1
  676. package/dist/esm/context/context/resize-context.js +0 -15
  677. package/dist/esm/context/context/resize-context.js.map +0 -1
  678. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  679. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  680. package/dist/esm/debug/debug-program-configuration.js +0 -40
  681. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  682. package/dist/esm/debug/debug-uniforms.js +0 -108
  683. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  684. package/dist/esm/debug/debug-vertex-array.js +0 -118
  685. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  686. package/dist/esm/helpers/get-program-bindings.js +0 -228
  687. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  688. package/dist/esm/helpers/program-bindings.js +0 -2
  689. package/dist/esm/types/accessor.d.ts +0 -29
  690. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  691. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  692. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  693. package/dist/esm/webgl-utils/format-utils.js +0 -45
  694. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  695. package/dist/esm/webgl-utils/get-error.js +0 -41
  696. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  697. package/dist/esm/webgl-utils/index.js +0 -5
  698. package/dist/esm/webgl-utils/index.js.map +0 -1
  699. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  701. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  702. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  703. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  704. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  705. package/dist/helpers/get-program-bindings.d.ts +0 -8
  706. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  707. package/dist/helpers/get-program-bindings.js +0 -228
  708. package/dist/helpers/get-program-bindings.js.map +0 -1
  709. package/dist/helpers/program-bindings.d.ts +0 -41
  710. package/dist/helpers/program-bindings.d.ts.map +0 -1
  711. package/dist/helpers/program-bindings.js +0 -2
  712. package/dist/types/accessor.d.ts +0 -29
  713. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  714. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  715. package/dist/webgl-utils/attribute-utils.js +0 -182
  716. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  717. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  718. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  719. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  720. package/dist/webgl-utils/format-utils.d.ts +0 -3
  721. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  722. package/dist/webgl-utils/format-utils.js +0 -45
  723. package/dist/webgl-utils/format-utils.js.map +0 -1
  724. package/dist/webgl-utils/get-error.d.ts +0 -3
  725. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  726. package/dist/webgl-utils/get-error.js +0 -41
  727. package/dist/webgl-utils/get-error.js.map +0 -1
  728. package/dist/webgl-utils/index.d.ts +0 -5
  729. package/dist/webgl-utils/index.d.ts.map +0 -1
  730. package/dist/webgl-utils/index.js +0 -5
  731. package/dist/webgl-utils/index.js.map +0 -1
  732. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  733. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  734. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  735. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  736. package/dist/webgl-utils/request-animation-frame.js +0 -7
  737. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  738. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  739. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  740. package/dist/webgl-utils/texture-utils.js +0 -48
  741. package/dist/webgl-utils/texture-utils.js.map +0 -1
  742. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  743. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  744. package/src/.DS_Store +0 -0
  745. package/src/_deprecated/context-api.ts +0 -140
  746. package/src/_deprecated/features.ts +0 -159
  747. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  748. package/src/classes/accessor.d.ts +0 -28
  749. package/src/classes/accessor.js +0 -129
  750. package/src/classes/accessor.ts.disabled +0 -159
  751. package/src/classes/clear.ts +0 -108
  752. package/src/classes/copy-and-blit.ts +0 -460
  753. package/src/classes/framebuffer.ts +0 -763
  754. package/src/classes/program-configuration.ts +0 -77
  755. package/src/classes/program.ts +0 -431
  756. package/src/classes/query.ts +0 -171
  757. package/src/classes/renderbuffer.ts +0 -154
  758. package/src/classes/shader.ts +0 -129
  759. package/src/classes/texture-2d.ts +0 -35
  760. package/src/classes/texture-3d.ts +0 -123
  761. package/src/classes/texture-cube.ts +0 -162
  762. package/src/classes/texture-formats.ts +0 -171
  763. package/src/classes/texture.ts +0 -965
  764. package/src/classes/transform-feedback.ts +0 -191
  765. package/src/classes/uniform-buffer-layout.ts +0 -113
  766. package/src/classes/uniforms.ts +0 -394
  767. package/src/classes/vertex-array-object.ts +0 -339
  768. package/src/classes/vertex-array.ts +0 -484
  769. package/src/context/context/get-canvas.ts +0 -37
  770. package/src/context/context/resize-context.ts +0 -37
  771. package/src/context/parameters/webgl-parameters.ts +0 -197
  772. package/src/debug/debug-program-configuration.ts +0 -32
  773. package/src/debug/debug-uniforms.ts +0 -100
  774. package/src/debug/debug-vertex-array.ts +0 -123
  775. package/src/helpers/get-program-bindings.ts +0 -244
  776. package/src/helpers/program-bindings.ts +0 -46
  777. package/src/types/accessor.d.ts +0 -29
  778. package/src/webgl-utils/attribute-utils.ts +0 -171
  779. package/src/webgl-utils/format-utils.ts +0 -43
  780. package/src/webgl-utils/get-error.ts +0 -56
  781. package/src/webgl-utils/index.ts +0 -12
  782. package/src/webgl-utils/request-animation-frame.ts +0 -14
  783. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -52,17 +52,23 @@ export function cssToDeviceRatio(gl: WebGLRenderingContext): number {
52
52
  }
53
53
 
54
54
  // use devicePixelRatio to set canvas width and height
55
- export function setDevicePixelRatio(gl, devicePixelRatio, options: {width?: number, height?: number} = {}) {
55
+ export function setDevicePixelRatio(gl: WebGLRenderingContext, devicePixelRatio: number, options: {width?: number, height?: number} = {}) {
56
+ if (!(gl.canvas instanceof HTMLCanvasElement)) {
57
+ return;
58
+ }
59
+
60
+ const canvas: HTMLCanvasElement = gl.canvas;
61
+
56
62
  // NOTE: if options.width and options.height not used remove in v8
57
- let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;
58
- let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;
63
+ let clientWidth = 'width' in options ? options.width : canvas.clientWidth;
64
+ let clientHeight = 'height' in options ? options.height : canvas.clientHeight;
59
65
 
60
66
  if (!clientWidth || !clientHeight) {
61
67
  log.log(1, 'Canvas clientWidth/clientHeight is 0')();
62
- // by forcing devicePixel ratio to 1, we do not scale gl.canvas.width and height in each frame.
68
+ // by forcing devicePixel ratio to 1, we do not scale canvas.width and height in each frame.
63
69
  devicePixelRatio = 1;
64
- clientWidth = gl.canvas.width || 1;
65
- clientHeight = gl.canvas.height || 1;
70
+ clientWidth = canvas.width || 1;
71
+ clientHeight = canvas.height || 1;
66
72
  }
67
73
 
68
74
  const contextState = getContextState(gl);
@@ -77,8 +83,8 @@ export function setDevicePixelRatio(gl, devicePixelRatio, options: {width?: numb
77
83
 
78
84
  const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);
79
85
  const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);
80
- gl.canvas.width = canvasWidth;
81
- gl.canvas.height = canvasHeight;
86
+ canvas.width = canvasWidth;
87
+ canvas.height = canvasHeight;
82
88
 
83
89
  // Note: when devicePixelRatio is too high, it is possible we might hit system limit for
84
90
  // drawing buffer width and hight, in those cases they get clamped and resulting aspect ration may not be maintained
@@ -90,8 +96,8 @@ export function setDevicePixelRatio(gl, devicePixelRatio, options: {width?: numb
90
96
  gl.drawingBufferHeight / clientHeight
91
97
  );
92
98
 
93
- gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);
94
- gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);
99
+ canvas.width = Math.floor(clientWidth * clampedPixelRatio);
100
+ canvas.height = Math.floor(clientHeight * clampedPixelRatio);
95
101
  }
96
102
 
97
103
  Object.assign(contextState._canvasSizeInfo, {clientWidth, clientHeight, devicePixelRatio});
@@ -101,7 +107,12 @@ export function setDevicePixelRatio(gl, devicePixelRatio, options: {width?: numb
101
107
 
102
108
  // PRIVATE
103
109
 
104
- function scalePixels(pixel, ratio, width, height, yInvert) {
110
+ function scalePixels(pixel: number[], ratio: number, width: number, height: number, yInvert: boolean): {
111
+ x: number;
112
+ y: number;
113
+ width: number;
114
+ height: number;
115
+ } {
105
116
  const x = scaleX(pixel[0], ratio, width);
106
117
  let y = scaleY(pixel[1], ratio, height, yInvert);
107
118
 
@@ -133,13 +144,13 @@ function scalePixels(pixel, ratio, width, height, yInvert) {
133
144
  };
134
145
  }
135
146
 
136
- function scaleX(x, ratio, width) {
147
+ function scaleX(x: number, ratio: number, width: number): number {
137
148
  // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit
138
149
  const r = Math.min(Math.round(x * ratio), width - 1);
139
150
  return r;
140
151
  }
141
152
 
142
- function scaleY(y, ratio, height, yInvert) {
153
+ function scaleY(y: number, ratio: number, height: number, yInvert: boolean): number {
143
154
  // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit
144
155
  return yInvert
145
156
  ? Math.max(0, height - 1 - Math.round(y * ratio))
@@ -0,0 +1,92 @@
1
+ // luma.gl, MIT license
2
+ import {log, loadScript} from '@luma.gl/api';
3
+
4
+ /** Spector debug initialization options */
5
+ type SpectorProps = {
6
+ /** Canvas to monitor */
7
+ canvas?: HTMLCanvasElement | OffscreenCanvas;
8
+ /** Whether debug is enabled. Auto-detected if ommitted */
9
+ debug?: boolean;
10
+ /** Whether spector is disabled */
11
+ spector?: boolean | string | object;
12
+ };
13
+
14
+ const DEFAULT_SPECTOR_PROPS: SpectorProps = {
15
+ spector: log.get('spector') || log.get('inspect')
16
+ };
17
+
18
+ // https://github.com/BabylonJS/Spector.js#basic-usage
19
+ const SPECTOR_CDN_URL = 'https://spectorcdn.babylonjs.com/spector.bundle.js';
20
+ const LOG_LEVEL = 1;
21
+
22
+ let spector: any = null;
23
+ let initialized: boolean = false;
24
+
25
+ declare global {
26
+ var SPECTOR: any;
27
+ }
28
+
29
+ /** Loads spector from CDN if not already installed */
30
+ export async function loadSpectorJS(props?: SpectorProps) {
31
+ if (!globalThis.SPECTOR) {
32
+ try {
33
+ await loadScript(SPECTOR_CDN_URL);
34
+ } catch(error) {
35
+ log.warn(String(error))
36
+ }
37
+ }
38
+ }
39
+
40
+ export function initializeSpectorJS(props?: SpectorProps) {
41
+ props = {...DEFAULT_SPECTOR_PROPS, ...props};
42
+ if (!props?.spector) {
43
+ return null;
44
+ }
45
+
46
+ if (!spector && globalThis.SPECTOR) {
47
+ log.probe(LOG_LEVEL, "SPECTOR found and initialized")();
48
+ spector = new globalThis.SPECTOR.Spector();
49
+ if (globalThis.luma) {
50
+ globalThis.luma.spector = spector;
51
+ }
52
+ }
53
+
54
+ if (!spector) {
55
+ return null;
56
+ }
57
+
58
+ if (!initialized) {
59
+ initialized = true;
60
+
61
+ // enables recording some extra information merged in the capture like texture memory sizes and formats
62
+ spector.spyCanvases();
63
+ // A callback when results are ready
64
+ spector?.onCaptureStarted.add((capture: unknown) => log.info(`Spector capture started:`, capture)());
65
+ spector?.onCapture.add((capture: unknown) => {
66
+ log.info(`Spector capture complete:`, capture)();
67
+ // Use undocumented Spector API to open the UI with our capture
68
+ // See https://github.com/BabylonJS/Spector.js/blob/767ad1195a25b85a85c381f400eb50a979239eca/src/spector.ts#L124
69
+ spector?.getResultUI()
70
+ spector?.resultView.display();
71
+ spector?.resultView.addCapture(capture)
72
+ });
73
+ }
74
+
75
+ if (props?.canvas) {
76
+ // @ts-expect-error If spector is specified as a canvas id, only monitor that canvas
77
+ if (typeof props.spector === 'string' && props.spector !== props.canvas.id) {
78
+ return spector;
79
+ }
80
+
81
+ // capture startup
82
+ // spector?.captureCanvas(props?.canvas);
83
+ spector?.startCapture(props?.canvas, 500); // 500 commands
84
+ new Promise(resolve => setTimeout(resolve, 2000)).then(_ => {
85
+ log.info(`Spector capture stopped after 2 seconds`)();
86
+ spector?.stopCapture();
87
+ // spector?.displayUI();
88
+ });
89
+ }
90
+
91
+ return spector;
92
+ }
@@ -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: [],
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 | null {
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,12 @@ 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(
25
+ device: Device | WebGLRenderingContext,
26
+ parameters: GLParameters
27
+ ): void {
28
+ const webglDevice = WebGLDevice.attach(device);
29
+ const gl = webglDevice.gl;
25
30
 
26
31
  if (isObjectEmpty(parameters)) {
27
32
  return;
@@ -72,7 +77,10 @@ export function setParameters(gl: WebGLRenderingContext, parameters: GLParameter
72
77
 
73
78
  /**
74
79
  * Reads the entire WebGL state from a context
75
- * @returns - a newly created map, with values keyed by GL parameters
80
+
81
+ // default to querying all parameters
82
+
83
+ * @returns - a newly created map, with values keyed by GL parameters
76
84
  *
77
85
  * @note Copies the state from a context (gl.getParameter should not be overriden)
78
86
  * Reads the entire WebGL state from a context
@@ -81,13 +89,13 @@ export function setParameters(gl: WebGLRenderingContext, parameters: GLParameter
81
89
  * considered a very slow operation, to be used only if/when a context already manipulated
82
90
  * by external code needs to be synchronized for the first time
83
91
  */
84
- export function getParameters(gl: WebGLRenderingContext, parameters?: Record<keyof GLParameters, any>): GLParameters;
85
- export function getParameters(gl: WebGLRenderingContext, parameters?: (keyof GLParameters)[]): GLParameters;
86
- export function getParameters(gl: WebGLRenderingContext, parameters: keyof GLParameters): GLParameters;
92
+ export function getParameters(
93
+ device: Device | WebGLRenderingContext,
94
+ parameters: keyof GLParameters | (keyof GLParameters)[] | GLParameters = GL_PARAMETER_DEFAULTS
95
+ ): GLParameters {
96
+ const webglDevice = WebGLDevice.attach(device);
97
+ const gl = webglDevice.gl;
87
98
 
88
- export function getParameters(gl, parameters) {
89
- // default to querying all parameters
90
- parameters = parameters || GL_PARAMETER_DEFAULTS;
91
99
  // support both arrays of parameters and objects (keys represent parameters)
92
100
 
93
101
  if (typeof parameters === 'number') {
@@ -113,8 +121,8 @@ export function getParameters(gl, parameters) {
113
121
  * NOT the canvas size dimensions, so they will have to be properly set after
114
122
  * calling this function.
115
123
  */
116
- export function resetParameters(gl: WebGLRenderingContext): void {
117
- setParameters(gl, GL_PARAMETER_DEFAULTS);
124
+ export function resetParameters(device: Device | WebGLRenderingContext): void {
125
+ setParameters(device, GL_PARAMETER_DEFAULTS);
118
126
  }
119
127
 
120
128
  // Helpers
@@ -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,9 @@ 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);
40
- // TODO - this looks like a mistake?
41
- contextState[extension] = gl.getExtension(extension);
38
+ for (const extensionName of EXTENSIONS) {
39
+ const extension = gl.getExtension(extensionName);
40
+ contextState._extensions[extensionName] = extension;
42
41
  }
43
42
  }
44
43
 
@@ -64,7 +63,7 @@ function polyfillExtension(gl: WebGLRenderingContext, {extension, target, target
64
63
  for (const key of Object.keys(defaults)) {
65
64
  const extKey = `${key}${suffix}`;
66
65
 
67
- let polyfill = null;
66
+ let polyfill: Function | null = null;
68
67
  if (key === 'meta') {
69
68
  // ignore
70
69
  } else if (typeof gl[key] === 'function') {