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

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 (749) 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/adapter/converters/{set-device-parameters.js → 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/{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/{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/{esm/adapter → adapter/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/{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/{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 +65 -307
  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/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/esm/{classes → 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/esm/{classes → 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/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/esm/{classes/texture.js → 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/esm/{classes/webgl-buffer.js → 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 -31
  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 -46
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -31
  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 -102
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/_deprecated/context-api.d.ts +0 -85
  397. package/dist/_deprecated/context-api.d.ts.map +0 -1
  398. package/dist/_deprecated/context-api.js +0 -70
  399. package/dist/_deprecated/context-api.js.map +0 -1
  400. package/dist/_deprecated/features.d.ts +0 -27
  401. package/dist/_deprecated/features.d.ts.map +0 -1
  402. package/dist/_deprecated/features.js +0 -111
  403. package/dist/_deprecated/features.js.map +0 -1
  404. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  405. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  406. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  407. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  408. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  409. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  410. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  411. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  412. package/dist/adapter/webgl-shader.js.map +0 -1
  413. package/dist/classes/accessor.d.ts +0 -28
  414. package/dist/classes/accessor.d.ts.map +0 -1
  415. package/dist/classes/accessor.js.map +0 -1
  416. package/dist/classes/accessor.ts.disabled +0 -159
  417. package/dist/classes/clear.d.ts +0 -17
  418. package/dist/classes/clear.d.ts.map +0 -1
  419. package/dist/classes/clear.js +0 -105
  420. package/dist/classes/clear.js.map +0 -1
  421. package/dist/classes/copy-and-blit.d.ts +0 -86
  422. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  423. package/dist/classes/copy-and-blit.js +0 -338
  424. package/dist/classes/copy-and-blit.js.map +0 -1
  425. package/dist/classes/framebuffer.d.ts +0 -139
  426. package/dist/classes/framebuffer.d.ts.map +0 -1
  427. package/dist/classes/framebuffer.js +0 -656
  428. package/dist/classes/framebuffer.js.map +0 -1
  429. package/dist/classes/program-configuration.d.ts +0 -24
  430. package/dist/classes/program-configuration.d.ts.map +0 -1
  431. package/dist/classes/program-configuration.js +0 -73
  432. package/dist/classes/program-configuration.js.map +0 -1
  433. package/dist/classes/program.d.ts +0 -66
  434. package/dist/classes/program.d.ts.map +0 -1
  435. package/dist/classes/program.js +0 -379
  436. package/dist/classes/program.js.map +0 -1
  437. package/dist/classes/query.d.ts +0 -27
  438. package/dist/classes/query.d.ts.map +0 -1
  439. package/dist/classes/query.js +0 -145
  440. package/dist/classes/query.js.map +0 -1
  441. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  442. package/dist/classes/renderbuffer-formats.js.map +0 -1
  443. package/dist/classes/renderbuffer.d.ts +0 -60
  444. package/dist/classes/renderbuffer.d.ts.map +0 -1
  445. package/dist/classes/renderbuffer.js.map +0 -1
  446. package/dist/classes/shader.d.ts +0 -42
  447. package/dist/classes/shader.d.ts.map +0 -1
  448. package/dist/classes/shader.js +0 -118
  449. package/dist/classes/shader.js.map +0 -1
  450. package/dist/classes/texture-2d.d.ts +0 -9
  451. package/dist/classes/texture-2d.d.ts.map +0 -1
  452. package/dist/classes/texture-2d.js +0 -36
  453. package/dist/classes/texture-2d.js.map +0 -1
  454. package/dist/classes/texture-3d.d.ts +0 -29
  455. package/dist/classes/texture-3d.d.ts.map +0 -1
  456. package/dist/classes/texture-3d.js +0 -76
  457. package/dist/classes/texture-3d.js.map +0 -1
  458. package/dist/classes/texture-cube.d.ts +0 -28
  459. package/dist/classes/texture-cube.d.ts.map +0 -1
  460. package/dist/classes/texture-cube.js +0 -130
  461. package/dist/classes/texture-cube.js.map +0 -1
  462. package/dist/classes/texture-formats.d.ts +0 -37
  463. package/dist/classes/texture-formats.d.ts.map +0 -1
  464. package/dist/classes/texture-formats.js +0 -98
  465. package/dist/classes/texture-formats.js.map +0 -1
  466. package/dist/classes/texture.d.ts +0 -123
  467. package/dist/classes/texture.d.ts.map +0 -1
  468. package/dist/classes/texture.js.map +0 -1
  469. package/dist/classes/transform-feedback.d.ts +0 -33
  470. package/dist/classes/transform-feedback.d.ts.map +0 -1
  471. package/dist/classes/transform-feedback.js +0 -198
  472. package/dist/classes/transform-feedback.js.map +0 -1
  473. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  474. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  475. package/dist/classes/uniform-buffer-layout.js +0 -104
  476. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  477. package/dist/classes/uniforms.d.ts +0 -37
  478. package/dist/classes/uniforms.d.ts.map +0 -1
  479. package/dist/classes/uniforms.js +0 -250
  480. package/dist/classes/uniforms.js.map +0 -1
  481. package/dist/classes/vertex-array-object.d.ts +0 -76
  482. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  483. package/dist/classes/vertex-array-object.js +0 -261
  484. package/dist/classes/vertex-array-object.js.map +0 -1
  485. package/dist/classes/vertex-array.d.ts +0 -75
  486. package/dist/classes/vertex-array.d.ts.map +0 -1
  487. package/dist/classes/vertex-array.js +0 -408
  488. package/dist/classes/vertex-array.js.map +0 -1
  489. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  490. package/dist/classes/webgl-buffer.js.map +0 -1
  491. package/dist/classes/webgl-resource.d.ts.map +0 -1
  492. package/dist/classes/webgl-resource.js.map +0 -1
  493. package/dist/context/context/get-canvas.d.ts +0 -13
  494. package/dist/context/context/get-canvas.d.ts.map +0 -1
  495. package/dist/context/context/get-canvas.js +0 -31
  496. package/dist/context/context/get-canvas.js.map +0 -1
  497. package/dist/context/context/resize-context.d.ts +0 -20
  498. package/dist/context/context/resize-context.d.ts.map +0 -1
  499. package/dist/context/context/resize-context.js +0 -15
  500. package/dist/context/context/resize-context.js.map +0 -1
  501. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  502. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  503. package/dist/context/parameters/webgl-parameters.js +0 -2
  504. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  505. package/dist/debug/debug-program-configuration.d.ts +0 -2
  506. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  507. package/dist/debug/debug-program-configuration.js +0 -40
  508. package/dist/debug/debug-program-configuration.js.map +0 -1
  509. package/dist/debug/debug-uniforms.d.ts +0 -12
  510. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  511. package/dist/debug/debug-uniforms.js +0 -108
  512. package/dist/debug/debug-uniforms.js.map +0 -1
  513. package/dist/debug/debug-vertex-array.d.ts +0 -5
  514. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  515. package/dist/debug/debug-vertex-array.js +0 -118
  516. package/dist/debug/debug-vertex-array.js.map +0 -1
  517. package/dist/es5/_deprecated/context-api.js +0 -110
  518. package/dist/es5/_deprecated/context-api.js.map +0 -1
  519. package/dist/es5/_deprecated/features.js +0 -118
  520. package/dist/es5/_deprecated/features.js.map +0 -1
  521. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  522. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  523. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  524. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  525. package/dist/es5/classes/accessor.d.ts +0 -28
  526. package/dist/es5/classes/accessor.js.map +0 -1
  527. package/dist/es5/classes/accessor.ts.disabled +0 -159
  528. package/dist/es5/classes/clear.js +0 -135
  529. package/dist/es5/classes/clear.js.map +0 -1
  530. package/dist/es5/classes/copy-and-blit.js +0 -382
  531. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  532. package/dist/es5/classes/framebuffer.js +0 -807
  533. package/dist/es5/classes/framebuffer.js.map +0 -1
  534. package/dist/es5/classes/program-configuration.js +0 -119
  535. package/dist/es5/classes/program-configuration.js.map +0 -1
  536. package/dist/es5/classes/program.js +0 -471
  537. package/dist/es5/classes/program.js.map +0 -1
  538. package/dist/es5/classes/query.js +0 -222
  539. package/dist/es5/classes/query.js.map +0 -1
  540. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  541. package/dist/es5/classes/renderbuffer.js.map +0 -1
  542. package/dist/es5/classes/shader.js +0 -195
  543. package/dist/es5/classes/shader.js.map +0 -1
  544. package/dist/es5/classes/texture-2d.js.map +0 -1
  545. package/dist/es5/classes/texture-3d.js +0 -142
  546. package/dist/es5/classes/texture-3d.js.map +0 -1
  547. package/dist/es5/classes/texture-cube.js +0 -202
  548. package/dist/es5/classes/texture-cube.js.map +0 -1
  549. package/dist/es5/classes/texture-formats.js +0 -87
  550. package/dist/es5/classes/texture-formats.js.map +0 -1
  551. package/dist/es5/classes/texture.js.map +0 -1
  552. package/dist/es5/classes/transform-feedback.js +0 -267
  553. package/dist/es5/classes/transform-feedback.js.map +0 -1
  554. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  555. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  556. package/dist/es5/classes/uniforms.js +0 -232
  557. package/dist/es5/classes/uniforms.js.map +0 -1
  558. package/dist/es5/classes/vertex-array-object.js +0 -337
  559. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  560. package/dist/es5/classes/vertex-array.js +0 -465
  561. package/dist/es5/classes/vertex-array.js.map +0 -1
  562. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  563. package/dist/es5/classes/webgl-resource.js.map +0 -1
  564. package/dist/es5/context/context/get-canvas.js +0 -40
  565. package/dist/es5/context/context/get-canvas.js.map +0 -1
  566. package/dist/es5/context/context/resize-context.js +0 -23
  567. package/dist/es5/context/context/resize-context.js.map +0 -1
  568. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  569. package/dist/es5/debug/debug-program-configuration.js +0 -76
  570. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  571. package/dist/es5/debug/debug-uniforms.js +0 -156
  572. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  573. package/dist/es5/debug/debug-vertex-array.js +0 -126
  574. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  575. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  576. package/dist/es5/helpers/program-bindings.js +0 -2
  577. package/dist/es5/types/accessor.d.ts +0 -29
  578. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  579. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  581. package/dist/es5/webgl-utils/format-utils.js +0 -58
  582. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  583. package/dist/es5/webgl-utils/get-error.js +0 -49
  584. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  585. package/dist/es5/webgl-utils/index.js +0 -74
  586. package/dist/es5/webgl-utils/index.js.map +0 -1
  587. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  588. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  589. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  590. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  591. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  592. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  593. package/dist/esm/_deprecated/context-api.js +0 -70
  594. package/dist/esm/_deprecated/context-api.js.map +0 -1
  595. package/dist/esm/_deprecated/features.js +0 -111
  596. package/dist/esm/_deprecated/features.js.map +0 -1
  597. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  598. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  599. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  600. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  601. package/dist/esm/classes/accessor.d.ts +0 -28
  602. package/dist/esm/classes/accessor.js.map +0 -1
  603. package/dist/esm/classes/clear.js +0 -105
  604. package/dist/esm/classes/clear.js.map +0 -1
  605. package/dist/esm/classes/copy-and-blit.js +0 -338
  606. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  607. package/dist/esm/classes/framebuffer.js +0 -656
  608. package/dist/esm/classes/framebuffer.js.map +0 -1
  609. package/dist/esm/classes/program-configuration.js +0 -73
  610. package/dist/esm/classes/program-configuration.js.map +0 -1
  611. package/dist/esm/classes/program.js +0 -379
  612. package/dist/esm/classes/program.js.map +0 -1
  613. package/dist/esm/classes/query.js +0 -145
  614. package/dist/esm/classes/query.js.map +0 -1
  615. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  616. package/dist/esm/classes/renderbuffer.js.map +0 -1
  617. package/dist/esm/classes/shader.js +0 -118
  618. package/dist/esm/classes/shader.js.map +0 -1
  619. package/dist/esm/classes/texture-2d.js +0 -36
  620. package/dist/esm/classes/texture-2d.js.map +0 -1
  621. package/dist/esm/classes/texture-3d.js +0 -76
  622. package/dist/esm/classes/texture-3d.js.map +0 -1
  623. package/dist/esm/classes/texture-cube.js +0 -130
  624. package/dist/esm/classes/texture-cube.js.map +0 -1
  625. package/dist/esm/classes/texture-formats.js +0 -98
  626. package/dist/esm/classes/texture-formats.js.map +0 -1
  627. package/dist/esm/classes/texture.js.map +0 -1
  628. package/dist/esm/classes/transform-feedback.js +0 -198
  629. package/dist/esm/classes/transform-feedback.js.map +0 -1
  630. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  631. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  632. package/dist/esm/classes/uniforms.js +0 -250
  633. package/dist/esm/classes/uniforms.js.map +0 -1
  634. package/dist/esm/classes/vertex-array-object.js +0 -261
  635. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  636. package/dist/esm/classes/vertex-array.js +0 -408
  637. package/dist/esm/classes/vertex-array.js.map +0 -1
  638. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  639. package/dist/esm/classes/webgl-resource.js.map +0 -1
  640. package/dist/esm/context/context/get-canvas.js +0 -31
  641. package/dist/esm/context/context/get-canvas.js.map +0 -1
  642. package/dist/esm/context/context/resize-context.js +0 -15
  643. package/dist/esm/context/context/resize-context.js.map +0 -1
  644. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  645. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  646. package/dist/esm/debug/debug-program-configuration.js +0 -40
  647. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  648. package/dist/esm/debug/debug-uniforms.js +0 -108
  649. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  650. package/dist/esm/debug/debug-vertex-array.js +0 -118
  651. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  652. package/dist/esm/helpers/get-program-bindings.js +0 -228
  653. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  654. package/dist/esm/helpers/program-bindings.js +0 -2
  655. package/dist/esm/types/accessor.d.ts +0 -29
  656. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  657. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  658. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  659. package/dist/esm/webgl-utils/format-utils.js +0 -45
  660. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  661. package/dist/esm/webgl-utils/get-error.js +0 -41
  662. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  663. package/dist/esm/webgl-utils/index.js +0 -5
  664. package/dist/esm/webgl-utils/index.js.map +0 -1
  665. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  666. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  667. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  668. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  669. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  670. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  671. package/dist/helpers/get-program-bindings.d.ts +0 -8
  672. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  673. package/dist/helpers/get-program-bindings.js +0 -228
  674. package/dist/helpers/get-program-bindings.js.map +0 -1
  675. package/dist/helpers/program-bindings.d.ts +0 -41
  676. package/dist/helpers/program-bindings.d.ts.map +0 -1
  677. package/dist/helpers/program-bindings.js +0 -2
  678. package/dist/types/accessor.d.ts +0 -29
  679. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  680. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  681. package/dist/webgl-utils/attribute-utils.js +0 -182
  682. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  683. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  684. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  685. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  686. package/dist/webgl-utils/format-utils.d.ts +0 -3
  687. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  688. package/dist/webgl-utils/format-utils.js +0 -45
  689. package/dist/webgl-utils/format-utils.js.map +0 -1
  690. package/dist/webgl-utils/get-error.d.ts +0 -3
  691. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  692. package/dist/webgl-utils/get-error.js +0 -41
  693. package/dist/webgl-utils/get-error.js.map +0 -1
  694. package/dist/webgl-utils/index.d.ts +0 -5
  695. package/dist/webgl-utils/index.d.ts.map +0 -1
  696. package/dist/webgl-utils/index.js +0 -5
  697. package/dist/webgl-utils/index.js.map +0 -1
  698. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  699. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  701. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  702. package/dist/webgl-utils/request-animation-frame.js +0 -7
  703. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  704. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  705. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  706. package/dist/webgl-utils/texture-utils.js +0 -48
  707. package/dist/webgl-utils/texture-utils.js.map +0 -1
  708. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  709. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  710. package/src/.DS_Store +0 -0
  711. package/src/_deprecated/context-api.ts +0 -140
  712. package/src/_deprecated/features.ts +0 -159
  713. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  714. package/src/classes/accessor.d.ts +0 -28
  715. package/src/classes/accessor.js +0 -129
  716. package/src/classes/accessor.ts.disabled +0 -159
  717. package/src/classes/clear.ts +0 -108
  718. package/src/classes/copy-and-blit.ts +0 -460
  719. package/src/classes/framebuffer.ts +0 -763
  720. package/src/classes/program-configuration.ts +0 -77
  721. package/src/classes/program.ts +0 -431
  722. package/src/classes/query.ts +0 -171
  723. package/src/classes/renderbuffer.ts +0 -154
  724. package/src/classes/shader.ts +0 -129
  725. package/src/classes/texture-2d.ts +0 -35
  726. package/src/classes/texture-3d.ts +0 -123
  727. package/src/classes/texture-cube.ts +0 -162
  728. package/src/classes/texture-formats.ts +0 -171
  729. package/src/classes/texture.ts +0 -965
  730. package/src/classes/transform-feedback.ts +0 -191
  731. package/src/classes/uniform-buffer-layout.ts +0 -113
  732. package/src/classes/uniforms.ts +0 -394
  733. package/src/classes/vertex-array-object.ts +0 -339
  734. package/src/classes/vertex-array.ts +0 -484
  735. package/src/context/context/get-canvas.ts +0 -37
  736. package/src/context/context/resize-context.ts +0 -37
  737. package/src/context/parameters/webgl-parameters.ts +0 -197
  738. package/src/debug/debug-program-configuration.ts +0 -32
  739. package/src/debug/debug-uniforms.ts +0 -100
  740. package/src/debug/debug-vertex-array.ts +0 -123
  741. package/src/helpers/get-program-bindings.ts +0 -244
  742. package/src/helpers/program-bindings.ts +0 -46
  743. package/src/types/accessor.d.ts +0 -29
  744. package/src/webgl-utils/attribute-utils.ts +0 -171
  745. package/src/webgl-utils/format-utils.ts +0 -43
  746. package/src/webgl-utils/get-error.ts +0 -56
  747. package/src/webgl-utils/index.ts +0 -12
  748. package/src/webgl-utils/request-animation-frame.ts +0 -14
  749. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -1,122 +1,118 @@
1
1
  // luma.gl, MIT license
2
- import {Device, DeviceInfo, DeviceLimits, log} from '@luma.gl/api';
2
+ import type {
3
+ DeviceProps,
4
+ DeviceInfo,
5
+ DeviceLimits,
6
+ DeviceFeature,
7
+ CanvasContextProps,
8
+ TextureFormat
9
+ } from '@luma.gl/api';
10
+ import {Device, CanvasContext, log, assert} from '@luma.gl/api';
11
+ import {isBrowser} from '@probe.gl/env';
3
12
  import {polyfillContext} from '../context/polyfill/polyfill-context';
4
13
  import {trackContextState} from '../context/state-tracker/track-context-state';
5
- import { ContextState } from '../context/context/context-state';
6
- import {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
14
+ import {ContextState} from '../context/context/context-state';
7
15
  import {createBrowserContext} from '../context/context/create-context';
8
- import {getCanvas} from '../context/context/get-canvas';
9
- import {isWebGL, isWebGL2} from '../context/context/webgl-checks';
10
16
  import {getDeviceInfo} from './device-helpers/get-device-info';
11
- import {getDeviceFeatures, Feature} from './device-helpers/device-features';
17
+ import {getDeviceFeatures} from './device-helpers/device-features';
12
18
  import {getDeviceLimits, getWebGLLimits, WebGLLimits} from './device-helpers/device-limits';
19
+ import WebGLCanvasContext from './webgl-canvas-context';
20
+ import {loadSpectorJS, initializeSpectorJS} from '../context/debug/spector';
21
+ import {loadWebGLDeveloperTools, makeDebugContext} from '../context/debug/webgl-developer-tools';
22
+ import {
23
+ isTextureFormatSupported,
24
+ isTextureFormatRenderable,
25
+ isTextureFormatFilterable
26
+ } from './converters/texture-formats';
13
27
 
14
28
  // WebGL classes
15
- import type {BufferProps, ShaderProps} from '@luma.gl/api';
16
- import WEBGLBuffer from '../classes/webgl-buffer';
17
- import {WEBGLShader} from '../adapter/webgl-shader';
18
- import Texture2D, {Texture2DProps} from '../classes/texture-2d';
19
- import type {default as Framebuffer} from '../classes/framebuffer';
20
- import type {default as VertexArrayObject} from '../classes/vertex-array-object';
21
-
22
- /** WebGLDevice options */
23
- export type WebGLDeviceProps = {
24
- canvas?: HTMLCanvasElement | OffscreenCanvas | string; // A canvas element or a canvas string id
25
- width?: number /** width is only used when creating a new canvas */;
26
- height?: number /** height is only used when creating a new canvas */;
27
- // Attach to existing context
28
- gl?: WebGLRenderingContext | WebGL2RenderingContext;
29
- // COMMON CONTEXT PARAMETERS
30
- webgl2?: boolean; // Set to false to not create a WebGL2 context (force webgl1)
31
- webgl1?: boolean; // set to false to not create a WebGL1 context (fails if webgl2 not available)
32
- manageState?: boolean; // Set to false to disable WebGL state management instrumentation
33
- debug?: boolean; // Instrument context (at the expense of performance)
34
- break?: Array<any>; // TODO: types
35
- onContextLost?: (event: Event) => void;
36
- onContextRestored?: (event: Event) => void;
37
- // BROWSER CONTEXT PARAMETERS
38
- alpha?: boolean; // Default render target has an alpha buffer.
39
- depth?: boolean; // Default render target has a depth buffer of at least 16 bits.
40
- stencil?: boolean; // Default render target has a stencil buffer of at least 8 bits.
41
- antialias?: boolean; // Boolean that indicates whether or not to perform anti-aliasing.
42
- premultipliedAlpha?: boolean; // Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.
43
- preserveDrawingBuffer?: boolean; // Default render target buffers will not be automatically cleared and will preserve their values until cleared or overwritten
44
- failIfMajorPerformanceCaveat?: boolean; // Do not create if the system performance is low.
45
- };
46
-
47
- const DEFAULT_DEVICE_PROPS: Required<WebGLDeviceProps> = {
48
- canvas: undefined, // A canvas element or a canvas string id
49
- gl: undefined,
50
- webgl2: true, // Attempt to create a WebGL2 context
51
- webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)
52
- manageState: true,
53
- width: 800, // width are height are only used by headless gl
54
- height: 600,
55
- debug: false, // Instrument context (at the expense of performance)
56
- break: undefined,
57
- onContextLost: () => console.error('WebGL context lost'),
58
- onContextRestored: () => console.info('WebGL context restored'),
59
-
60
- alpha: undefined,
61
- depth: undefined,
62
- stencil: undefined,
63
- antialias: undefined,
64
- premultipliedAlpha: undefined,
65
- preserveDrawingBuffer: undefined,
66
- failIfMajorPerformanceCaveat: undefined
67
- };
68
-
69
- // TODO use weakmap instead of modifying context
70
- const glToContextMap = new WeakMap<WebGLRenderingContext | WebGL2RenderingContext, WebGLDevice>();
71
-
72
- export function getWebGLDevice(gl: WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice | undefined {
73
- return glToContextMap.get(gl);
74
- }
29
+ import type {
30
+ BufferProps,
31
+ ShaderProps,
32
+ Sampler,
33
+ SamplerProps,
34
+ TextureProps,
35
+ ExternalTexture,
36
+ ExternalTextureProps,
37
+ FramebufferProps,
38
+ RenderPipeline,
39
+ RenderPipelineProps,
40
+ ComputePipeline,
41
+ ComputePipelineProps,
42
+ RenderPass,
43
+ RenderPassProps,
44
+ ComputePass,
45
+ ComputePassProps
46
+ } from '@luma.gl/api';
47
+
48
+ import ClassicBuffer from '../classic/buffer';
49
+ import WEBGLBuffer from './resources/webgl-buffer';
50
+ import WEBGLShader from './resources/webgl-shader';
51
+ import WEBGLSampler from './resources/webgl-sampler';
52
+ import WEBGLTexture from './resources/webgl-texture';
53
+ import WEBGLFramebuffer from './resources/webgl-framebuffer';
54
+ import WEBGLRenderPass from './resources/webgl-render-pass';
55
+ import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
56
+
57
+ const LOG_LEVEL = 1;
75
58
 
76
59
  let counter = 0;
77
60
 
78
61
  /** WebGPU style Device API for a WebGL context */
79
62
  export default class WebGLDevice extends Device implements ContextState {
80
- // WebGPU style API
63
+ // Public API
64
+
65
+ static type: string = 'webgl';
66
+
67
+ static isSupported(): boolean {
68
+ return typeof WebGLRenderingContext !== 'undefined';
69
+ }
81
70
 
82
- /** A set like interface to test features */
83
- readonly features: Set<Feature>;
84
- readonly limits: DeviceLimits;
85
71
  readonly info: DeviceInfo;
72
+ readonly canvasContext: WebGLCanvasContext;
73
+ readonly lost: Promise<{reason: 'destroyed'; message: string}>;
74
+ readonly handle: WebGLRenderingContext;
86
75
 
87
- /** Promise that rejects when context is lost */
88
- readonly lost: Promise<string>;
76
+ get features(): Set<DeviceFeature> {
77
+ this._features = this._features || getDeviceFeatures(this.gl);
78
+ return this._features;
79
+ }
89
80
 
90
- // Common API
91
- props: Required<WebGLDeviceProps>;
92
- userData: {[key: string]: any};
81
+ get limits(): DeviceLimits {
82
+ this._limits = this._limits || getDeviceLimits(this.gl);
83
+ return this._limits;
84
+ }
93
85
 
94
86
  // WebGL specific API
95
- readonly isWebGL2: boolean;
87
+
88
+ /** WebGL1 typed context. Can always be used. */
96
89
  readonly gl: WebGLRenderingContext;
90
+ /** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
97
91
  readonly gl2: WebGL2RenderingContext;
98
- /** Is this device attached to an offscreen context */
99
- readonly offScreen: boolean = false;
92
+ readonly debug: boolean = false;
93
+
94
+ /** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
95
+ readonly isWebGL1: boolean;
96
+ /** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
97
+ readonly isWebGL2: boolean;
100
98
 
101
- readonly webglFeatures: Set<string>;
102
- readonly webglLimits: WebGLLimits;
99
+ get webglLimits(): WebGLLimits {
100
+ this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
101
+ return this._webglLimits;
102
+ }
103
103
 
104
- defaultFramebuffer?: Framebuffer;
105
- defaultVertexArray?: VertexArrayObject;
104
+ private _features: Set<DeviceFeature>;
105
+ private _limits: DeviceLimits;
106
+ private _webglLimits: WebGLLimits;
106
107
 
107
- // State used by luma.gl classes
108
- _state: 'uninitialized' | 'initializing' | 'initialized' = 'uninitialized';
108
+ /** State used by luma.gl classes: TODO - move to canvasContext*/
109
109
  readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
110
+ /** State used by luma.gl classes */
110
111
  readonly _extensions: Record<string, any> = {};
111
112
  _polyfilled: boolean = false;
112
113
 
113
- /**
114
- *
115
- */
116
- static fromContext(gl: WebGLRenderingContext): WebGLDevice {
117
- // @ts-expect-error
118
- return gl.device as WebGLDevice;
119
- }
114
+ /** Instance of Spector.js (if initialized) */
115
+ spector;
120
116
 
121
117
  /**
122
118
  * Get a device instance from a GL context
@@ -124,105 +120,98 @@ export default class WebGLDevice extends Device implements ContextState {
124
120
  * @param gl
125
121
  * @returns
126
122
  */
127
- static attach(
128
- gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
129
- props?: WebGLDeviceProps
130
- ): WebGLDevice {
123
+ static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
131
124
  if (gl instanceof WebGLDevice) {
132
125
  return gl;
133
126
  }
127
+ // @ts-expect-error
128
+ if (gl?.device instanceof Device) {
129
+ // @ts-expect-error
130
+ return gl.device as WebGLDevice;
131
+ }
134
132
  if (!isWebGL(gl)) {
135
133
  throw new Error('Invalid WebGLRenderingContext');
136
134
  }
137
- return new WebGLDevice({...props, gl: gl as WebGLRenderingContext});
135
+ return new WebGLDevice({gl: gl as WebGLRenderingContext});
138
136
  }
139
137
 
138
+ static async create(props?: DeviceProps): Promise<WebGLDevice> {
139
+ log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
140
140
 
141
- constructor(props: WebGLDeviceProps) {
142
- super();
141
+ // Wait for page to load. Only wait when props. canvas is string
142
+ // to avoid setting page onload callback unless necessary
143
+ if (typeof props.canvas === 'string') {
144
+ await CanvasContext.pageLoaded;
145
+ }
143
146
 
144
- this.props = {...DEFAULT_DEVICE_PROPS, ...props};
147
+ // Load webgl and spector debug scripts from CDN if requested
148
+ if (props.debug) {
149
+ await loadWebGLDeveloperTools();
150
+ }
151
+ // @ts-expect-error spector not on props
152
+ if (props.spector) {
153
+ await loadSpectorJS();
154
+ }
155
+
156
+ log.probe(LOG_LEVEL, 'DOM is loaded')();
157
+ return new WebGLDevice(props);
158
+ }
159
+
160
+ constructor(props: DeviceProps) {
161
+ super(props);
145
162
 
146
163
  // If attaching to an already attached context, return the attached device
147
164
  // @ts-expect-error device is attached to context
148
- const device: WebGLDevice | undefined = this.props.gl?.device;
165
+ const device: WebGLDevice | undefined = props.gl?.device;
149
166
  if (device) {
150
- if (device._state !== 'initialized') {
151
- log.error('recursive context');
152
- throw new Error('recursive context');
153
- }
167
+ log.warn(`WebGL context already attached to device ${device.id}`);
154
168
  return device;
155
169
  }
156
170
 
157
- this.offScreen =
158
- typeof OffscreenCanvas !== 'undefined' &&
159
- props.canvas instanceof OffscreenCanvas;
171
+ // Create and instrument context
172
+ this.canvasContext = new WebGLCanvasContext(this, props);
160
173
 
161
- // Create an instrument context
162
- this.gl = (this.props.gl || this._createContext(props)) as WebGLRenderingContext;
174
+ this.handle = props.gl || createBrowserContext(this.canvasContext.canvas, props);
175
+ this.gl = this.handle;
163
176
  this.gl2 = this.gl as WebGL2RenderingContext;
164
177
  this.isWebGL2 = isWebGL2(this.gl);
165
- this._state = 'initializing';
166
- // Avoid multiple instrumentations
167
- // @ts-expect-error
168
- if (this.gl.device) {
169
- log.error('device already created');
170
- throw new Error('device already created'); // ASSERT this device;
171
- }
172
- // @ts-expect-error
173
- this.gl.device = this;
174
- // @ts-ignore
175
- this.gl._version = typeof WebGL2RenderingContext !== 'undefined' && this.gl instanceof WebGL2RenderingContext ? 2 : 1;
176
- // TODO - move to weak map indexing
177
- glToContextMap.set(this.gl, this);
178
+ this.isWebGL1 = !this.isWebGL2;
178
179
 
179
- // Luma Device fields
180
+ // luma Device fields
180
181
  this.info = getDeviceInfo(this.gl);
181
- // Log some debug info about the newly created context
182
- // @ts-expect-error device is attached to context
183
- const debug = this.gl.debug ? ' debug' : '';
184
- const webGL = isWebGL2(this.gl) ? 'WebGL2' : 'WebGL1';
185
- log.group(0, `${webGL}${debug} context: ${this.info.vendor}, ${this.info.renderer}`)();
186
182
 
187
- polyfillContext(this.gl);
188
- log.probe(0, 'polyfilled context')();
183
+ // @ts-expect-error Link webgl context back to device
184
+ this.gl.device = this;
185
+ // @ts-expect-error Annotate webgl context to handle
186
+ this.gl._version = this.isWebGL2 ? 2 : 1;
189
187
 
188
+ // Add subset of WebGL2 methods to WebGL1 context
189
+ polyfillContext(this.gl);
190
190
  // Install context state tracking
191
- trackContextState(this.gl, {
192
- copyState: false,
193
- log: (...args) => log.log(1, ...args)()
194
- });
195
- log.probe(0, 'instrumented context')();
196
-
197
- // WebGPU Device fields
198
- this.features = getDeviceFeatures(this.gl);
199
- log.probe(0, `queried device features ${counter}`)();
200
- this.limits = getDeviceLimits(this.gl);
201
- log.probe(0, 'queried device limits')();
202
-
203
- // Add seer integration - TODO - currently removed
204
-
205
- // WEBGL specific fields
206
- this.webglLimits = getWebGLLimits(this.gl);
207
- log.probe(0, 'queried webgl limits')();
208
-
209
- // Add debug instrumentation to the context
210
- // if (isBrowser() && props.debug) {
211
- // // @ts-ignore
212
- // const {makeDebugContext} = global;
213
- // if (!makeDebugContext) {
214
- // log.warn('WebGL debug mode not activated. import "@luma.gl/debug" to enable.')();
215
- // } else {
216
- // // @ts-ignore
217
- // this.gl = global.makeDebugContext(this.gl, props);
218
- // this.gl2 = this.gl as WebGL2RenderingContext;
219
- // // Debug forces log level to at least 1
220
- // log.level = Math.max(log.level, 1);
221
- // }
222
- // }
191
+ trackContextState(this.gl, {copyState: false, log: (...args: any[]) => log.log(1, ...args)()});
192
+
193
+ // DEBUG contexts: Add debug instrumentation to the context, force log level to at least 1
194
+ if (isBrowser() && props.debug) {
195
+ this.gl = makeDebugContext(this.gl, {...props, webgl2: this.isWebGL2, throwOnError: true});
196
+ this.gl2 = this.gl as WebGL2RenderingContext;
197
+ this.debug = true;
198
+ log.level = Math.max(log.level, 1);
199
+ log.warn('WebGL debug mode activated. Performance reduced.')();
200
+ }
201
+
202
+ // @ts-expect-error spector not on props
203
+ if (isBrowser() && props.spector) {
204
+ const canvas = this.handle.canvas || (props.canvas as HTMLCanvasElement);
205
+ this.spector = initializeSpectorJS({...this.props, canvas});
206
+ }
223
207
 
224
- log.groupEnd(0)();
225
- this._state = 'initialized';
208
+ // Log some debug info about the newly created context
209
+ const message = `\
210
+ Created ${this.info.type}${this.debug ? ' debug' : ''} context: \
211
+ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`;
212
+ log.probe(LOG_LEVEL, message)();
213
+
214
+ log.groupEnd(LOG_LEVEL)();
226
215
  }
227
216
 
228
217
  /**
@@ -241,166 +230,121 @@ export default class WebGLDevice extends Device implements ContextState {
241
230
  // }
242
231
  }
243
232
 
244
- // WEBGL SPECIFIC METHODS
245
-
246
- /**
247
- * Resize the canvas' drawing buffer.
248
- *
249
- * Can match the canvas CSS size, and optionally also consider devicePixelRatio
250
- * Can be called every frame
251
- *
252
- * Regardless of size, the drawing buffer will always be scaled to the viewport, but
253
- * for best visual results, usually set to either:
254
- * canvas CSS width x canvas CSS height
255
- * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
256
- * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
257
- */
258
- resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
259
- // Resize browser context .
260
- if (this.gl.canvas) {
261
- const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
262
- setDevicePixelRatio(this.gl, devicePixelRatio, options);
263
- return;
264
- }
265
-
266
- // Resize headless gl context
267
- const ext = this.gl.getExtension('STACKGL_resize_drawingbuffer');
268
- if (ext && options && `width` in options && `height` in options) {
269
- ext.resize(options.width, options.height);
270
- }
233
+ get isLost(): boolean {
234
+ return this.gl.isContextLost();
271
235
  }
272
236
 
273
- _createBuffer(props: BufferProps): WEBGLBuffer {
274
- return new WEBGLBuffer(this.gl, props);
237
+ getSize(): [number, number] {
238
+ return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
275
239
  }
276
240
 
277
- createTexture(props: Texture2DProps): Texture2D {
278
- return new Texture2D(this, props);
241
+ isTextureFormatSupported(format: TextureFormat): boolean {
242
+ return isTextureFormatSupported(this.gl, format);
279
243
  }
280
244
 
281
- createShader(props: ShaderProps): WEBGLShader {
282
- return new WEBGLShader(this, props);
245
+ isTextureFormatFilterable(format: TextureFormat): boolean {
246
+ return isTextureFormatFilterable(this.gl, format);
283
247
  }
284
248
 
285
- /**
286
- * Offscreen Canvas Support: Commit the frame
287
- * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
288
- * Chrome's offscreen canvas does not require gl.commit
289
- */
290
- commit(): void {
291
- // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
292
- if (this.offScreen && this.gl.commit) {
293
- // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
294
- this.gl.commit();
295
- }
249
+ isTextureFormatRenderable(format: TextureFormat): boolean {
250
+ return isTextureFormatRenderable(this.gl, format);
296
251
  }
297
252
 
298
- // PRIVATE METHODS
253
+ // WEBGL SPECIFIC METHODS
299
254
 
300
- /**
301
- * Creates a context giving access to the WebGL API
302
- */
303
- _createContext(options?: WebGLDeviceProps): WebGLRenderingContext {
304
- const {width, height, canvas} = this.props;
305
- // Get or create a canvas
306
- const targetCanvas = getCanvas({canvas, width, height});
307
- // Create a WebGL context in the canvas
308
- return createBrowserContext(targetCanvas, options);
255
+ /** Returns a WebGL2RenderingContext or throws an error */
256
+ assertWebGL2(): WebGL2RenderingContext {
257
+ assert(this.isWebGL2, 'Requires WebGL2');
258
+ return this.gl2;
309
259
  }
310
- }
311
-
312
- /*
313
- import {
314
- isWebGL, isWebGL2,
315
- createGLContext,
316
- instrumentGLContext,
317
- getContextDebugInfo,
318
- resizeGLContext
319
- } from '@luma.gl/gltools';
320
-
321
- // prettier-ignore
322
- import {
323
- Device, DeviceInfo, DeviceLimits,
324
- Buffer, BufferProps
325
- } from '@luma.gl/api';
326
260
 
327
- import {getWebGLDeviceInfo} from '../converters/webgl-device-info';
328
- import {getWebGLLimits} from '../converters/webgl-limits';
329
- import {getWebGLFeatures} from '../converters/webgl-features';
261
+ // IMPLEMENTATION OF ABSTRACT DEVICE
330
262
 
331
- export default class WEBGLDevice implements Device {
332
- readonly handle: WebGLRenderingContext;
333
- readonly gl: WebGLRenderingContext;
334
- readonly gl2: WebGL2RenderingContext | null;
335
- readonly canvas: HTMLCanvasElement;
336
-
337
- static isSupported(options: {canvas?: HTMLCanvasElement}): boolean {
338
- const {canvas} = options;
339
- let gl;
340
- try {
341
- gl = canvas && canvas.getContext("webgl");
342
- gl = gl && canvas && canvas.getContext("experimental-webgl");
343
- } catch (x) {
344
- gl = null;
345
- }
346
- return Boolean(gl);
263
+ createCanvasContext(props?: CanvasContextProps): CanvasContext {
264
+ throw new Error('WebGL only supports a single canvas');
347
265
  }
348
266
 
349
- constructor(props = {}) {
350
- const {canvas, swapChainFormat = "bgra8unorm"} = props;
351
-
352
- const gl = createGLContext(props);
353
- this.handle =
354
- this.gl = gl;
355
- this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
356
- this.canvas = canvas;
267
+ _createBuffer(props: BufferProps): WEBGLBuffer {
268
+ return new ClassicBuffer(this, props);
357
269
  }
358
270
 
359
- resize(width, height) {
360
- resizeGLContext(this.gl);
271
+ _createTexture(props: TextureProps): WEBGLTexture {
272
+ return new WEBGLTexture(this, props);
361
273
  }
362
274
 
363
- getInfo(): DeviceInfo {
364
- return getWebGLDeviceInfo(this.gl);
275
+ createExternalTexture(props: ExternalTextureProps): ExternalTexture {
276
+ throw new Error('createExternalTexture() not implemented'); // return new Program(props);
365
277
  }
366
278
 
367
- getLimits(): DeviceLimits {
368
- return getWebGLLimits(this.gl, this.gl2);
279
+ createSampler(props: SamplerProps): WEBGLSampler {
280
+ return new WEBGLSampler(this, props);
369
281
  }
370
282
 
371
- getFeatures(): string[] {
372
- return getWebGLFeatures(this.gl);
283
+ createShader(props: ShaderProps): WEBGLShader {
284
+ return new WEBGLShader(this, props);
373
285
  }
374
286
 
375
- createBuffer(props: WebGPUBufferProps): WEBGLBuffer {
376
- return new WEBGLBuffer(this.gl2 || this.gl, props);
287
+ createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
288
+ return new WEBGLFramebuffer(this, props);
377
289
  }
378
290
 
379
- createTexture(props: WebGPUTextureProps): WEBGLTexture {
380
- return new WEBGLTexture(this, props);
291
+ createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
292
+ return new WEBGLRenderPipeline(this, props);
381
293
  }
382
294
 
383
- createSampler(props: WebGPUSamplerProps): WEBGLSampler {
384
- return new WEBGLSampler(this, props);
295
+ beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
296
+ return new WEBGLRenderPass(this, props);
385
297
  }
386
298
 
387
- createShader(props: WebGPUShaderProps): WEBGLShader {
388
- return new WEBGLShader(this, props);
299
+ createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
300
+ throw new Error('ComputePipeline not supported in WebGL');
389
301
  }
390
302
 
391
- createRenderPipeline(props: WebGPURenderPipelineProps): WEBGLPipeline {
392
- return new WEBGLRenderPipeline(this, props);
303
+ beginComputePass(props: ComputePassProps): ComputePass {
304
+ throw new Error('compute shaders not supported in WebGL');
393
305
  }
394
306
 
395
- createComputePipeline(props: WebGPUComputePipelineProps): WebGPUPipeline {
396
- return new WebGPUComputePipeline(this, props);
307
+ private renderPass: WEBGLRenderPass;
308
+
309
+ getDefaultRenderPass(): WEBGLRenderPass {
310
+ this.renderPass =
311
+ this.renderPass ||
312
+ this.beginRenderPass({
313
+ framebuffer: this.canvasContext.getCurrentFramebuffer()
314
+ });
315
+ return this.renderPass;
397
316
  }
398
317
 
318
+ /**
319
+ * Offscreen Canvas Support: Commit the frame
320
+ * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
321
+ * Chrome's offscreen canvas does not require gl.commit
322
+ */
323
+ submit(): void {
324
+ this.renderPass.endPass();
325
+ this.renderPass = null;
326
+ // this.canvasContext.commit();
327
+ }
328
+ }
399
329
 
400
- // PRIVATE
330
+ /** Check if supplied parameter is a WebGLRenderingContext */
331
+ function isWebGL(gl: any): boolean {
332
+ if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {
333
+ return true;
334
+ }
335
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
336
+ return true;
337
+ }
338
+ // Look for debug contexts, headless gl etc
339
+ return Boolean(gl && Number.isFinite(gl._version));
340
+ }
401
341
 
402
- _startFrame() {}
403
342
 
404
- _endFrame() {}
343
+ /** Check if supplied parameter is a WebGL2RenderingContext */
344
+ function isWebGL2(gl: any): boolean {
345
+ if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
346
+ return true;
347
+ }
348
+ // Look for debug contexts, headless gl etc
349
+ return Boolean(gl && gl._version === 2);
405
350
  }
406
- */