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

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 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +184 -111
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +53 -51
  123. package/dist/classic/buffer.js.map +1 -0
  124. package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
  125. package/dist/classic/typed-array-utils.d.ts.map +1 -0
  126. package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
  127. package/dist/classic/typed-array-utils.js.map +1 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -1
  129. package/dist/context/context/context-state.js +1 -1
  130. package/dist/context/context/context-state.js.map +1 -1
  131. package/dist/context/context/create-context.d.ts +1 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -1
  133. package/dist/context/context/create-context.js +12 -0
  134. package/dist/context/context/create-context.js.map +1 -1
  135. package/dist/context/context/device-pixels.d.ts +1 -1
  136. package/dist/context/context/device-pixels.d.ts.map +1 -1
  137. package/dist/context/context/device-pixels.js.map +1 -1
  138. package/dist/context/debug/spector.d.ts +18 -0
  139. package/dist/context/debug/spector.d.ts.map +1 -0
  140. package/dist/context/debug/spector.js +76 -0
  141. package/dist/context/debug/spector.js.map +1 -0
  142. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  143. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  144. package/dist/context/debug/webgl-developer-tools.js +121 -0
  145. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
  147. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  148. package/dist/context/parameters/unified-parameter-api.js +4 -4
  149. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  150. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  151. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  152. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  154. package/dist/context/polyfill/polyfill-context.js +4 -3
  155. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +25 -11
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
  162. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  163. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  164. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  165. package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
  166. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  167. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  168. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  169. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  170. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  171. package/dist/es5/adapter/device-helpers/device-features.js +46 -54
  172. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  173. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  174. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  175. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  176. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  177. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  178. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  179. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
  180. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  181. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  182. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  183. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  184. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  185. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  186. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  187. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  188. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  189. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  190. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  191. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  192. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  193. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  194. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  195. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  196. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  197. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  198. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  199. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  200. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  201. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  202. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  203. package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
  204. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  205. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
  206. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  207. package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
  208. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  209. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  210. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  211. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
  212. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  213. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
  214. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  215. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  216. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  217. package/dist/es5/adapter/webgl-device.js +253 -133
  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 +184 -111
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
  310. package/dist/esm/classic/buffer.js.map +1 -0
  311. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  312. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  313. package/dist/esm/context/context/context-state.js +1 -1
  314. package/dist/esm/context/context/context-state.js.map +1 -1
  315. package/dist/esm/context/context/create-context.js +12 -0
  316. package/dist/esm/context/context/create-context.js.map +1 -1
  317. package/dist/esm/context/context/device-pixels.js.map +1 -1
  318. package/dist/esm/context/debug/spector.js +76 -0
  319. package/dist/esm/context/debug/spector.js.map +1 -0
  320. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  321. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  322. package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
  323. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  324. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  325. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  326. package/dist/esm/context/polyfill/polyfill-context.js +4 -3
  327. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  328. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  329. package/dist/esm/context/state-tracker/track-context-state.js +25 -11
  330. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  331. package/dist/esm/index.js +19 -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 +226 -275
  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 -76
  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 -116
  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 -76
  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 -146
  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,123 +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
- const LOG_LEVEL = 1;
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';
70
47
 
71
- // TODO use weakmap instead of modifying context
72
- const glToContextMap = new WeakMap<WebGLRenderingContext | WebGL2RenderingContext, WebGLDevice>();
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';
73
56
 
74
- export function getWebGLDevice(gl: WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice | undefined {
75
- return glToContextMap.get(gl);
76
- }
57
+ const LOG_LEVEL = 1;
77
58
 
78
59
  let counter = 0;
79
60
 
80
61
  /** WebGPU style Device API for a WebGL context */
81
62
  export default class WebGLDevice extends Device implements ContextState {
82
- // WebGPU style API
63
+ // Public API
64
+
65
+ static type: string = 'webgl';
66
+
67
+ static isSupported(): boolean {
68
+ return typeof WebGLRenderingContext !== 'undefined';
69
+ }
83
70
 
84
- /** A set like interface to test features */
85
- readonly features: Set<Feature>;
86
- readonly limits: DeviceLimits;
87
71
  readonly info: DeviceInfo;
72
+ readonly canvasContext: WebGLCanvasContext;
73
+ readonly lost: Promise<{reason: 'destroyed'; message: string}>;
74
+ readonly handle: WebGLRenderingContext;
88
75
 
89
- /** Promise that rejects when context is lost */
90
- readonly lost: Promise<string>;
76
+ get features(): Set<DeviceFeature> {
77
+ this._features = this._features || getDeviceFeatures(this.gl);
78
+ return this._features;
79
+ }
91
80
 
92
- // Common API
93
- props: Required<WebGLDeviceProps>;
94
- userData: {[key: string]: any};
81
+ get limits(): DeviceLimits {
82
+ this._limits = this._limits || getDeviceLimits(this.gl);
83
+ return this._limits;
84
+ }
95
85
 
96
86
  // WebGL specific API
97
- readonly isWebGL2: boolean;
87
+
88
+ /** WebGL1 typed context. Can always be used. */
98
89
  readonly gl: WebGLRenderingContext;
90
+ /** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
99
91
  readonly gl2: WebGL2RenderingContext;
100
- /** Is this device attached to an offscreen context */
101
- readonly offScreen: boolean = false;
92
+ readonly debug: boolean = false;
102
93
 
103
- readonly webglLimits: WebGLLimits;
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;
98
+
99
+ get webglLimits(): WebGLLimits {
100
+ this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
101
+ return this._webglLimits;
102
+ }
104
103
 
105
- defaultFramebuffer?: Framebuffer;
106
- defaultVertexArray?: VertexArrayObject;
104
+ private _features: Set<DeviceFeature>;
105
+ private _limits: DeviceLimits;
106
+ private _webglLimits: WebGLLimits;
107
107
 
108
- // State used by luma.gl classes
109
- _state: 'uninitialized' | 'initializing' | 'initialized' = 'uninitialized';
108
+ /** State used by luma.gl classes: TODO - move to canvasContext*/
110
109
  readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
110
+ /** State used by luma.gl classes */
111
111
  readonly _extensions: Record<string, any> = {};
112
112
  _polyfilled: boolean = false;
113
113
 
114
- /**
115
- *
116
- */
117
- static fromContext(gl: WebGLRenderingContext): WebGLDevice {
118
- // @ts-expect-error
119
- return gl.device as WebGLDevice;
120
- }
114
+ /** Instance of Spector.js (if initialized) */
115
+ spector;
121
116
 
122
117
  /**
123
118
  * Get a device instance from a GL context
@@ -125,105 +120,98 @@ export default class WebGLDevice extends Device implements ContextState {
125
120
  * @param gl
126
121
  * @returns
127
122
  */
128
- static attach(
129
- gl: Device | WebGLRenderingContext | WebGL2RenderingContext,
130
- props?: WebGLDeviceProps
131
- ): WebGLDevice {
123
+ static attach(gl: Device | WebGLRenderingContext | WebGL2RenderingContext): WebGLDevice {
132
124
  if (gl instanceof WebGLDevice) {
133
125
  return gl;
134
126
  }
127
+ // @ts-expect-error
128
+ if (gl?.device instanceof Device) {
129
+ // @ts-expect-error
130
+ return gl.device as WebGLDevice;
131
+ }
135
132
  if (!isWebGL(gl)) {
136
133
  throw new Error('Invalid WebGLRenderingContext');
137
134
  }
138
- return new WebGLDevice({...props, gl: gl as WebGLRenderingContext});
135
+ return new WebGLDevice({gl: gl as WebGLRenderingContext});
139
136
  }
140
137
 
138
+ static async create(props?: DeviceProps): Promise<WebGLDevice> {
139
+ log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created');
141
140
 
142
- constructor(props: WebGLDeviceProps) {
143
- 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
+ }
146
+
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
+ }
144
159
 
145
- this.props = {...DEFAULT_DEVICE_PROPS, ...props};
160
+ constructor(props: DeviceProps) {
161
+ super(props);
146
162
 
147
163
  // If attaching to an already attached context, return the attached device
148
164
  // @ts-expect-error device is attached to context
149
- const device: WebGLDevice | undefined = this.props.gl?.device;
165
+ const device: WebGLDevice | undefined = props.gl?.device;
150
166
  if (device) {
151
- if (device._state !== 'initialized') {
152
- log.error('recursive context');
153
- throw new Error('recursive context');
154
- }
167
+ log.warn(`WebGL context already attached to device ${device.id}`);
155
168
  return device;
156
169
  }
157
170
 
158
- this.offScreen =
159
- typeof OffscreenCanvas !== 'undefined' &&
160
- props.canvas instanceof OffscreenCanvas;
171
+ // Create and instrument context
172
+ this.canvasContext = new WebGLCanvasContext(this, props);
161
173
 
162
- // Create an instrument context
163
- 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;
164
176
  this.gl2 = this.gl as WebGL2RenderingContext;
165
177
  this.isWebGL2 = isWebGL2(this.gl);
166
- this._state = 'initializing';
167
- // Avoid multiple instrumentations
168
- // @ts-expect-error
169
- if (this.gl.device) {
170
- log.error('device already created');
171
- throw new Error('device already created'); // ASSERT this device;
172
- }
173
- // @ts-expect-error
174
- this.gl.device = this;
175
- // @ts-ignore
176
- this.gl._version = typeof WebGL2RenderingContext !== 'undefined' && this.gl instanceof WebGL2RenderingContext ? 2 : 1;
177
- // TODO - move to weak map indexing
178
- glToContextMap.set(this.gl, this);
178
+ this.isWebGL1 = !this.isWebGL2;
179
179
 
180
- // Luma Device fields
180
+ // luma Device fields
181
181
  this.info = getDeviceInfo(this.gl);
182
- // Log some debug info about the newly created context
183
- // @ts-expect-error device is attached to context
184
- const debug = this.gl.debug ? ' debug' : '';
185
- const webGL = isWebGL2(this.gl) ? 'WebGL2' : 'WebGL1';
186
- log.groupCollapsed(LOG_LEVEL, `${webGL}${debug} context: ${this.info.vendor}, ${this.info.renderer}`)();
187
182
 
188
- polyfillContext(this.gl);
189
- log.probe(LOG_LEVEL, '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;
190
187
 
188
+ // Add subset of WebGL2 methods to WebGL1 context
189
+ polyfillContext(this.gl);
191
190
  // Install context state tracking
192
- trackContextState(this.gl, {
193
- copyState: false,
194
- log: (...args) => log.log(1, ...args)()
195
- });
196
- log.probe(LOG_LEVEL, 'instrumented context')();
197
-
198
- // WebGPU Device fields
199
- this.features = getDeviceFeatures(this.gl);
200
- log.probe(LOG_LEVEL, `queried device features ${counter}`)();
201
- this.limits = getDeviceLimits(this.gl);
202
- log.probe(LOG_LEVEL, 'queried device limits')();
203
-
204
- // Add seer integration - TODO - currently removed
205
-
206
- // WEBGL specific fields
207
- this.webglLimits = getWebGLLimits(this.gl);
208
- log.probe(LOG_LEVEL, 'queried webgl limits')();
209
-
210
- // Add debug instrumentation to the context
211
- // if (isBrowser() && props.debug) {
212
- // // @ts-ignore
213
- // const {makeDebugContext} = global;
214
- // if (!makeDebugContext) {
215
- // log.warn('WebGL debug mode not activated. import "@luma.gl/debug" to enable.')();
216
- // } else {
217
- // // @ts-ignore
218
- // this.gl = global.makeDebugContext(this.gl, props);
219
- // this.gl2 = this.gl as WebGL2RenderingContext;
220
- // // Debug forces log level to at least 1
221
- // log.level = Math.max(log.level, 1);
222
- // }
223
- // }
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
+ }
207
+
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)();
224
213
 
225
214
  log.groupEnd(LOG_LEVEL)();
226
- this._state = 'initialized';
227
215
  }
228
216
 
229
217
  /**
@@ -242,158 +230,121 @@ export default class WebGLDevice extends Device implements ContextState {
242
230
  // }
243
231
  }
244
232
 
245
- // WEBGL SPECIFIC METHODS
246
-
247
- /**
248
- * Resize the canvas' drawing buffer.
249
- *
250
- * Can match the canvas CSS size, and optionally also consider devicePixelRatio
251
- * Can be called every frame
252
- *
253
- * Regardless of size, the drawing buffer will always be scaled to the viewport, but
254
- * for best visual results, usually set to either:
255
- * canvas CSS width x canvas CSS height
256
- * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
257
- * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
258
- */
259
- resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
260
- // Resize browser context .
261
- if (this.gl.canvas) {
262
- const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
263
- setDevicePixelRatio(this.gl, devicePixelRatio, options);
264
- return;
265
- }
266
-
267
- // Resize headless gl context
268
- const ext = this.gl.getExtension('STACKGL_resize_drawingbuffer');
269
- if (ext && options && `width` in options && `height` in options) {
270
- ext.resize(options.width, options.height);
271
- }
233
+ get isLost(): boolean {
234
+ return this.gl.isContextLost();
272
235
  }
273
236
 
274
- _createBuffer(props: BufferProps): WEBGLBuffer {
275
- return new WEBGLBuffer(this.gl, props);
237
+ getSize(): [number, number] {
238
+ return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
276
239
  }
277
240
 
278
- createTexture(props: Texture2DProps): Texture2D {
279
- return new Texture2D(this, props);
241
+ isTextureFormatSupported(format: TextureFormat): boolean {
242
+ return isTextureFormatSupported(this.gl, format);
280
243
  }
281
244
 
282
- createShader(props: ShaderProps): WEBGLShader {
283
- return new WEBGLShader(this, props);
245
+ isTextureFormatFilterable(format: TextureFormat): boolean {
246
+ return isTextureFormatFilterable(this.gl, format);
284
247
  }
285
248
 
286
- /**
287
- * Offscreen Canvas Support: Commit the frame
288
- * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit
289
- * Chrome's offscreen canvas does not require gl.commit
290
- */
291
- commit(): void {
292
- // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
293
- if (this.offScreen && this.gl.commit) {
294
- // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
295
- this.gl.commit();
296
- }
249
+ isTextureFormatRenderable(format: TextureFormat): boolean {
250
+ return isTextureFormatRenderable(this.gl, format);
297
251
  }
298
252
 
299
- // PRIVATE METHODS
253
+ // WEBGL SPECIFIC METHODS
300
254
 
301
- /**
302
- * Creates a context giving access to the WebGL API
303
- */
304
- _createContext(options?: WebGLDeviceProps): WebGLRenderingContext {
305
- const {width, height, canvas} = this.props;
306
- // Get or create a canvas
307
- const targetCanvas = getCanvas({canvas, width, height});
308
- // Create a WebGL context in the canvas
309
- 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;
310
259
  }
311
- }
312
260
 
313
- /*
314
- // prettier-ignore
315
- import {
316
- Device, DeviceInfo, DeviceLimits,
317
- Buffer, BufferProps
318
- } from '@luma.gl/api';
319
-
320
- import {getWebGLDeviceInfo} from '../converters/webgl-device-info';
321
- import {getWebGLLimits} from '../converters/webgl-limits';
322
- import {getWebGLFeatures} from '../converters/webgl-features';
261
+ // IMPLEMENTATION OF ABSTRACT DEVICE
323
262
 
324
- export default class WEBGLDevice implements Device {
325
- readonly handle: WebGLRenderingContext;
326
- readonly gl: WebGLRenderingContext;
327
- readonly gl2: WebGL2RenderingContext | null;
328
- readonly canvas: HTMLCanvasElement;
329
-
330
- static isSupported(options: {canvas?: HTMLCanvasElement}): boolean {
331
- const {canvas} = options;
332
- let gl;
333
- try {
334
- gl = canvas && canvas.getContext("webgl");
335
- gl = gl && canvas && canvas.getContext("experimental-webgl");
336
- } catch (x) {
337
- gl = null;
338
- }
339
- return Boolean(gl);
263
+ createCanvasContext(props?: CanvasContextProps): CanvasContext {
264
+ throw new Error('WebGL only supports a single canvas');
340
265
  }
341
266
 
342
- constructor(props = {}) {
343
- const {canvas, swapChainFormat = "bgra8unorm"} = props;
344
-
345
- const gl = createGLContext(props);
346
- this.handle =
347
- this.gl = gl;
348
- this.gl2 = gl instanceof WebGL2RenderingContext ? gl : null;
349
- this.canvas = canvas;
267
+ _createBuffer(props: BufferProps): WEBGLBuffer {
268
+ return new ClassicBuffer(this, props);
350
269
  }
351
270
 
352
- resize(width, height) {
353
- resizeGLContext(this.gl);
271
+ _createTexture(props: TextureProps): WEBGLTexture {
272
+ return new WEBGLTexture(this, props);
354
273
  }
355
274
 
356
- getInfo(): DeviceInfo {
357
- return getWebGLDeviceInfo(this.gl);
275
+ createExternalTexture(props: ExternalTextureProps): ExternalTexture {
276
+ throw new Error('createExternalTexture() not implemented'); // return new Program(props);
358
277
  }
359
278
 
360
- getLimits(): DeviceLimits {
361
- return getWebGLLimits(this.gl, this.gl2);
279
+ createSampler(props: SamplerProps): WEBGLSampler {
280
+ return new WEBGLSampler(this, props);
362
281
  }
363
282
 
364
- getFeatures(): string[] {
365
- return getWebGLFeatures(this.gl);
283
+ createShader(props: ShaderProps): WEBGLShader {
284
+ return new WEBGLShader(this, props);
366
285
  }
367
286
 
368
- createBuffer(props: WebGPUBufferProps): WEBGLBuffer {
369
- return new WEBGLBuffer(this.gl2 || this.gl, props);
287
+ createFramebuffer(props: FramebufferProps): WEBGLFramebuffer {
288
+ return new WEBGLFramebuffer(this, props);
370
289
  }
371
290
 
372
- createTexture(props: WebGPUTextureProps): WEBGLTexture {
373
- return new WEBGLTexture(this, props);
291
+ createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
292
+ return new WEBGLRenderPipeline(this, props);
374
293
  }
375
294
 
376
- createSampler(props: WebGPUSamplerProps): WEBGLSampler {
377
- return new WEBGLSampler(this, props);
295
+ beginRenderPass(props: RenderPassProps): WEBGLRenderPass {
296
+ return new WEBGLRenderPass(this, props);
378
297
  }
379
298
 
380
- createShader(props: WebGPUShaderProps): WEBGLShader {
381
- return new WEBGLShader(this, props);
299
+ createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
300
+ throw new Error('ComputePipeline not supported in WebGL');
382
301
  }
383
302
 
384
- createRenderPipeline(props: WebGPURenderPipelineProps): WEBGLPipeline {
385
- return new WEBGLRenderPipeline(this, props);
303
+ beginComputePass(props: ComputePassProps): ComputePass {
304
+ throw new Error('compute shaders not supported in WebGL');
386
305
  }
387
306
 
388
- createComputePipeline(props: WebGPUComputePipelineProps): WebGPUPipeline {
389
- 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;
390
316
  }
391
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
+ }
392
329
 
393
- // 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
+ }
394
341
 
395
- _startFrame() {}
396
342
 
397
- _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);
398
350
  }
399
- */