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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (783) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +27 -0
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -0
  4. package/dist/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
  5. package/dist/adapter/converters/device-parameters.js.map +1 -0
  6. package/dist/{classes → adapter/converters}/renderbuffer-formats.d.ts +0 -0
  7. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -0
  8. package/dist/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  9. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  10. package/dist/adapter/converters/sampler-parameters.d.ts +19 -0
  11. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/sampler-parameters.js +227 -0
  13. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +93 -0
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/texture-formats.js +954 -0
  17. package/dist/adapter/converters/texture-formats.js.map +1 -0
  18. package/dist/adapter/converters/vertex-formats.d.ts +4 -0
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -0
  20. package/dist/adapter/converters/vertex-formats.js +35 -0
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-features.d.ts +3 -6
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +39 -50
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +1 -0
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +1 -0
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.js +7 -7
  31. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +11 -0
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -0
  34. package/dist/adapter/helpers/attribute-utils.js +81 -0
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  36. package/dist/adapter/helpers/get-shader-layout.d.ts +55 -0
  37. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-layout.js +330 -0
  39. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  40. package/dist/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.d.ts +0 -0
  41. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -0
  42. package/dist/{esm/webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  43. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  44. package/dist/adapter/helpers/set-uniform.d.ts +4 -0
  45. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -0
  46. package/dist/adapter/helpers/set-uniform.js +115 -0
  47. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  48. package/dist/adapter/helpers/uniforms.d.ts +26 -0
  49. package/dist/adapter/helpers/uniforms.d.ts.map +1 -0
  50. package/dist/adapter/helpers/uniforms.js +99 -0
  51. package/dist/adapter/helpers/uniforms.js.map +1 -0
  52. package/dist/adapter/objects/constants-to-keys.d.ts +5 -0
  53. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -0
  54. package/dist/{esm/webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  55. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  56. package/dist/adapter/objects/webgl-renderbuffer.d.ts +40 -0
  57. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -0
  58. package/dist/{esm/classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +38 -72
  59. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  60. package/dist/{classes → adapter/objects}/webgl-resource.d.ts +15 -14
  61. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -0
  62. package/dist/{classes → adapter/objects}/webgl-resource.js +7 -3
  63. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  64. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +27 -0
  65. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -0
  66. package/dist/adapter/objects/webgl-vertex-array-object.js +84 -0
  67. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  68. package/dist/adapter/resources/webgl-buffer.d.ts +27 -0
  69. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -0
  70. package/dist/adapter/resources/webgl-buffer.js +164 -0
  71. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  72. package/dist/adapter/resources/webgl-command-buffer.d.ts +25 -0
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -0
  74. package/dist/adapter/resources/webgl-command-buffer.js +65 -0
  75. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  76. package/dist/adapter/resources/webgl-command-encoder.d.ts +18 -0
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -0
  78. package/dist/adapter/resources/webgl-command-encoder.js +53 -0
  79. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  80. package/dist/adapter/resources/webgl-external-texture.d.ts +1 -0
  81. package/dist/adapter/resources/webgl-external-texture.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-external-texture.js +2 -0
  83. package/dist/{es5/helpers/program-bindings.js.map → adapter/resources/webgl-external-texture.js.map} +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.d.ts +41 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +267 -0
  87. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  88. package/dist/adapter/resources/webgl-render-pass.d.ts +11 -0
  89. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -0
  90. package/dist/adapter/resources/webgl-render-pass.js +21 -0
  91. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  92. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -0
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -0
  94. package/dist/adapter/resources/webgl-render-pipeline.js +428 -0
  95. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  96. package/dist/adapter/resources/webgl-sampler.d.ts +20 -0
  97. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -0
  98. package/dist/adapter/resources/webgl-sampler.js +50 -0
  99. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  100. package/dist/adapter/{webgl-shader.d.ts → resources/webgl-shader.d.ts} +3 -6
  101. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -0
  102. package/dist/{esm/adapter → adapter/resources}/webgl-shader.js +17 -23
  103. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  104. package/dist/adapter/resources/webgl-texture.d.ts +193 -0
  105. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -0
  106. package/dist/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
  107. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  108. package/dist/adapter/webgl-canvas-context.d.ts +36 -0
  109. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
  110. package/dist/adapter/webgl-canvas-context.js +54 -0
  111. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  112. package/dist/adapter/webgl-device.d.ts +63 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +244 -115
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{esm/classes/webgl-buffer.js → classic/buffer.js} +67 -57
  123. package/dist/classic/buffer.js.map +1 -0
  124. package/dist/{webgl-utils → classic}/typed-array-utils.d.ts +3 -2
  125. package/dist/classic/typed-array-utils.d.ts.map +1 -0
  126. package/dist/{esm/webgl-utils → classic}/typed-array-utils.js +0 -0
  127. package/dist/classic/typed-array-utils.js.map +1 -0
  128. package/dist/context/context/context-state.d.ts.map +1 -1
  129. package/dist/context/context/context-state.js +1 -1
  130. package/dist/context/context/context-state.js.map +1 -1
  131. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  132. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  133. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +27 -3
  134. package/dist/context/context/create-browser-context.js.map +1 -0
  135. package/dist/context/context/create-headless-context.d.ts +9 -0
  136. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  137. package/dist/context/context/create-headless-context.js +43 -0
  138. package/dist/context/context/create-headless-context.js.map +1 -0
  139. package/dist/context/context/device-pixels.d.ts +1 -1
  140. package/dist/context/context/device-pixels.d.ts.map +1 -1
  141. package/dist/context/context/device-pixels.js +13 -8
  142. package/dist/context/context/device-pixels.js.map +1 -1
  143. package/dist/context/debug/spector.d.ts +18 -0
  144. package/dist/context/debug/spector.d.ts.map +1 -0
  145. package/dist/context/debug/spector.js +76 -0
  146. package/dist/context/debug/spector.js.map +1 -0
  147. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  148. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  149. package/dist/context/debug/webgl-developer-tools.js +121 -0
  150. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  151. package/dist/context/parameters/unified-parameter-api.d.ts +9 -7
  152. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  153. package/dist/context/parameters/unified-parameter-api.js +9 -8
  154. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  155. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  156. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  157. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  158. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  159. package/dist/context/polyfill/polyfill-context.js +3 -3
  160. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-table.d.ts +1 -1
  162. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  163. package/dist/context/polyfill/polyfill-table.js +1 -1
  164. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  165. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  166. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  168. package/dist/context/state-tracker/track-context-state.js +26 -12
  169. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  171. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  172. package/dist/context/state-tracker/with-parameters.js +6 -2
  173. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  174. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +53 -6
  175. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  176. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  177. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  178. package/dist/es5/adapter/converters/sampler-parameters.js +245 -0
  179. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  180. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  181. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  182. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  183. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  184. package/dist/es5/adapter/device-helpers/device-features.js +61 -58
  185. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  186. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  187. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  188. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  189. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  190. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  191. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  192. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +211 -94
  193. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  194. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  195. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  196. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  197. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  198. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  199. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  200. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  201. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  202. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  203. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  204. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  205. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  206. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  207. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  208. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  209. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  210. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  211. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  212. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  213. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  214. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  215. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  216. package/dist/es5/adapter/resources/webgl-framebuffer.js +346 -0
  217. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  218. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +26 -45
  219. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  220. package/dist/es5/adapter/resources/webgl-render-pipeline.js +530 -0
  221. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  222. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  223. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  224. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +16 -21
  225. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  226. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +374 -298
  227. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  228. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  229. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  230. package/dist/es5/adapter/webgl-device.js +316 -132
  231. package/dist/es5/adapter/webgl-device.js.map +1 -1
  232. package/dist/es5/{classes → classic}/accessor.js +25 -1
  233. package/dist/es5/classic/accessor.js.map +1 -0
  234. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +88 -72
  235. package/dist/es5/classic/buffer.js.map +1 -0
  236. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  237. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  238. package/dist/es5/context/context/context-state.js +1 -1
  239. package/dist/es5/context/context/context-state.js.map +1 -1
  240. package/dist/es5/context/context/{create-context.js → create-browser-context.js} +29 -3
  241. package/dist/es5/context/context/create-browser-context.js.map +1 -0
  242. package/dist/es5/context/context/create-headless-context.js +60 -0
  243. package/dist/es5/context/context/create-headless-context.js.map +1 -0
  244. package/dist/es5/context/context/device-pixels.js +14 -8
  245. package/dist/es5/context/context/device-pixels.js.map +1 -1
  246. package/dist/es5/context/debug/spector.js +133 -0
  247. package/dist/es5/context/debug/spector.js.map +1 -0
  248. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  249. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  250. package/dist/es5/context/parameters/unified-parameter-api.js +15 -9
  251. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  252. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  253. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  254. package/dist/es5/context/polyfill/polyfill-context.js +3 -3
  255. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  256. package/dist/es5/context/polyfill/polyfill-table.js +1 -1
  257. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  258. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  259. package/dist/es5/context/state-tracker/track-context-state.js +39 -24
  260. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  261. package/dist/es5/context/state-tracker/with-parameters.js +8 -2
  262. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  263. package/dist/es5/index.js +72 -300
  264. package/dist/es5/index.js.map +1 -1
  265. package/dist/es5/init.js +1 -41
  266. package/dist/es5/init.js.map +1 -1
  267. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  268. package/dist/es5/types/webgl.js.map +1 -0
  269. package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +50 -6
  270. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  271. package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  272. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  273. package/dist/esm/adapter/converters/sampler-parameters.js +227 -0
  274. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  275. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  276. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  277. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  278. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  279. package/dist/esm/adapter/device-helpers/device-features.js +39 -50
  280. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  281. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  282. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  283. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  284. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  285. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  286. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  287. package/dist/esm/adapter/helpers/get-shader-layout.js +330 -0
  288. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  289. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  290. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  291. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  292. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  293. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  294. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  295. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  296. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  297. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  298. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  299. package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
  300. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  301. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  302. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  303. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  304. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  305. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  306. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  307. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  308. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  309. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  310. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  311. package/dist/esm/adapter/resources/webgl-framebuffer.js +267 -0
  312. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  313. package/dist/esm/adapter/resources/webgl-render-pass.js +21 -0
  314. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  315. package/dist/esm/adapter/resources/webgl-render-pipeline.js +428 -0
  316. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  317. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  318. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  319. package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +17 -23
  320. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  321. package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +280 -232
  322. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  323. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  324. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  325. package/dist/esm/adapter/webgl-device.js +244 -115
  326. package/dist/esm/adapter/webgl-device.js.map +1 -1
  327. package/dist/esm/{classes → classic}/accessor.js +33 -1
  328. package/dist/esm/classic/accessor.js.map +1 -0
  329. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +67 -57
  330. package/dist/esm/classic/buffer.js.map +1 -0
  331. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  332. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  333. package/dist/esm/context/context/context-state.js +1 -1
  334. package/dist/esm/context/context/context-state.js.map +1 -1
  335. package/dist/{context/context/create-context.js → esm/context/context/create-browser-context.js} +27 -3
  336. package/dist/esm/context/context/create-browser-context.js.map +1 -0
  337. package/dist/esm/context/context/create-headless-context.js +43 -0
  338. package/dist/esm/context/context/create-headless-context.js.map +1 -0
  339. package/dist/esm/context/context/device-pixels.js +13 -8
  340. package/dist/esm/context/context/device-pixels.js.map +1 -1
  341. package/dist/esm/context/debug/spector.js +76 -0
  342. package/dist/esm/context/debug/spector.js.map +1 -0
  343. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  344. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  345. package/dist/esm/context/parameters/unified-parameter-api.js +9 -8
  346. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  347. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  348. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  349. package/dist/esm/context/polyfill/polyfill-context.js +3 -3
  350. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  351. package/dist/esm/context/polyfill/polyfill-table.js +1 -1
  352. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  353. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  354. package/dist/esm/context/state-tracker/track-context-state.js +26 -12
  355. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  356. package/dist/esm/context/state-tracker/with-parameters.js +6 -2
  357. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  358. package/dist/esm/index.js +20 -31
  359. package/dist/esm/index.js.map +1 -1
  360. package/dist/esm/init.js +2 -31
  361. package/dist/esm/init.js.map +1 -1
  362. package/dist/esm/types/webgl.js +2 -0
  363. package/dist/esm/types/webgl.js.map +1 -0
  364. package/dist/index.d.ts +25 -46
  365. package/dist/index.d.ts.map +1 -1
  366. package/dist/index.js +20 -31
  367. package/dist/index.js.map +1 -1
  368. package/dist/init.d.ts +1 -4
  369. package/dist/init.d.ts.map +1 -1
  370. package/dist/init.js +2 -31
  371. package/dist/init.js.map +1 -1
  372. package/dist/types/webgl.d.ts +145 -0
  373. package/dist/types/webgl.d.ts.map +1 -0
  374. package/dist/types/webgl.js +2 -0
  375. package/dist/types/webgl.js.map +1 -0
  376. package/package.json +5 -5
  377. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +81 -12
  378. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  379. package/src/adapter/converters/sampler-parameters.ts +184 -0
  380. package/src/adapter/converters/texture-formats.ts +633 -0
  381. package/src/adapter/converters/vertex-formats.ts +22 -0
  382. package/src/adapter/device-helpers/device-features.ts +55 -124
  383. package/src/adapter/device-helpers/device-limits.ts +6 -3
  384. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  385. package/src/adapter/helpers/attribute-utils.ts +61 -0
  386. package/src/adapter/helpers/get-shader-layout.ts +407 -0
  387. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  388. package/src/adapter/helpers/set-uniform.ts +87 -0
  389. package/src/adapter/helpers/uniforms.ts +121 -0
  390. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  391. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  392. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  393. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  394. package/src/adapter/resources/webgl-buffer.ts +219 -0
  395. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  396. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  397. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  398. package/src/adapter/resources/webgl-framebuffer.ts +282 -0
  399. package/src/adapter/resources/webgl-render-pass.ts +24 -0
  400. package/src/adapter/resources/webgl-render-pipeline.ts +425 -0
  401. package/src/adapter/resources/webgl-sampler.ts +56 -0
  402. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +19 -24
  403. package/src/adapter/resources/webgl-texture.ts +1036 -0
  404. package/src/adapter/webgl-canvas-context.ts +74 -0
  405. package/src/adapter/webgl-device.ts +297 -289
  406. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +38 -37
  407. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +76 -84
  408. package/src/{webgl-utils → classic}/typed-array-utils.ts +5 -1
  409. package/src/context/context/context-state.ts +4 -2
  410. package/src/context/context/{create-context.ts → create-browser-context.ts} +41 -6
  411. package/src/context/context/create-headless-context.ts +48 -0
  412. package/src/context/context/device-pixels.ts +24 -13
  413. package/src/context/debug/spector.ts +92 -0
  414. package/src/context/debug/webgl-developer-tools.ts +162 -0
  415. package/src/context/parameters/unified-parameter-api.ts +21 -13
  416. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  417. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  418. package/src/context/polyfill/polyfill-context.ts +4 -5
  419. package/src/context/polyfill/polyfill-table.ts +1 -1
  420. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  421. package/src/context/state-tracker/track-context-state.ts +34 -26
  422. package/src/context/state-tracker/with-parameters.ts +7 -2
  423. package/src/index.ts +42 -102
  424. package/src/init.ts +2 -46
  425. package/src/types/webgl.ts +284 -0
  426. package/dist/_deprecated/context-api.d.ts +0 -85
  427. package/dist/_deprecated/context-api.d.ts.map +0 -1
  428. package/dist/_deprecated/context-api.js +0 -70
  429. package/dist/_deprecated/context-api.js.map +0 -1
  430. package/dist/_deprecated/features.d.ts +0 -27
  431. package/dist/_deprecated/features.d.ts.map +0 -1
  432. package/dist/_deprecated/features.js +0 -111
  433. package/dist/_deprecated/features.js.map +0 -1
  434. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  435. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  436. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  437. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  438. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  439. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  440. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  441. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  442. package/dist/adapter/webgl-shader.js.map +0 -1
  443. package/dist/classes/accessor.d.ts +0 -28
  444. package/dist/classes/accessor.d.ts.map +0 -1
  445. package/dist/classes/accessor.js.map +0 -1
  446. package/dist/classes/accessor.ts.disabled +0 -159
  447. package/dist/classes/clear.d.ts +0 -17
  448. package/dist/classes/clear.d.ts.map +0 -1
  449. package/dist/classes/clear.js +0 -105
  450. package/dist/classes/clear.js.map +0 -1
  451. package/dist/classes/copy-and-blit.d.ts +0 -86
  452. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  453. package/dist/classes/copy-and-blit.js +0 -338
  454. package/dist/classes/copy-and-blit.js.map +0 -1
  455. package/dist/classes/framebuffer.d.ts +0 -139
  456. package/dist/classes/framebuffer.d.ts.map +0 -1
  457. package/dist/classes/framebuffer.js +0 -656
  458. package/dist/classes/framebuffer.js.map +0 -1
  459. package/dist/classes/program-configuration.d.ts +0 -24
  460. package/dist/classes/program-configuration.d.ts.map +0 -1
  461. package/dist/classes/program-configuration.js +0 -73
  462. package/dist/classes/program-configuration.js.map +0 -1
  463. package/dist/classes/program.d.ts +0 -66
  464. package/dist/classes/program.d.ts.map +0 -1
  465. package/dist/classes/program.js +0 -379
  466. package/dist/classes/program.js.map +0 -1
  467. package/dist/classes/query.d.ts +0 -27
  468. package/dist/classes/query.d.ts.map +0 -1
  469. package/dist/classes/query.js +0 -145
  470. package/dist/classes/query.js.map +0 -1
  471. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  472. package/dist/classes/renderbuffer-formats.js.map +0 -1
  473. package/dist/classes/renderbuffer.d.ts +0 -60
  474. package/dist/classes/renderbuffer.d.ts.map +0 -1
  475. package/dist/classes/renderbuffer.js.map +0 -1
  476. package/dist/classes/shader.d.ts +0 -42
  477. package/dist/classes/shader.d.ts.map +0 -1
  478. package/dist/classes/shader.js +0 -118
  479. package/dist/classes/shader.js.map +0 -1
  480. package/dist/classes/texture-2d.d.ts +0 -9
  481. package/dist/classes/texture-2d.d.ts.map +0 -1
  482. package/dist/classes/texture-2d.js +0 -36
  483. package/dist/classes/texture-2d.js.map +0 -1
  484. package/dist/classes/texture-3d.d.ts +0 -29
  485. package/dist/classes/texture-3d.d.ts.map +0 -1
  486. package/dist/classes/texture-3d.js +0 -76
  487. package/dist/classes/texture-3d.js.map +0 -1
  488. package/dist/classes/texture-cube.d.ts +0 -28
  489. package/dist/classes/texture-cube.d.ts.map +0 -1
  490. package/dist/classes/texture-cube.js +0 -130
  491. package/dist/classes/texture-cube.js.map +0 -1
  492. package/dist/classes/texture-formats.d.ts +0 -37
  493. package/dist/classes/texture-formats.d.ts.map +0 -1
  494. package/dist/classes/texture-formats.js +0 -98
  495. package/dist/classes/texture-formats.js.map +0 -1
  496. package/dist/classes/texture.d.ts +0 -123
  497. package/dist/classes/texture.d.ts.map +0 -1
  498. package/dist/classes/texture.js.map +0 -1
  499. package/dist/classes/transform-feedback.d.ts +0 -33
  500. package/dist/classes/transform-feedback.d.ts.map +0 -1
  501. package/dist/classes/transform-feedback.js +0 -198
  502. package/dist/classes/transform-feedback.js.map +0 -1
  503. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  504. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  505. package/dist/classes/uniform-buffer-layout.js +0 -104
  506. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  507. package/dist/classes/uniforms.d.ts +0 -37
  508. package/dist/classes/uniforms.d.ts.map +0 -1
  509. package/dist/classes/uniforms.js +0 -250
  510. package/dist/classes/uniforms.js.map +0 -1
  511. package/dist/classes/vertex-array-object.d.ts +0 -76
  512. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  513. package/dist/classes/vertex-array-object.js +0 -261
  514. package/dist/classes/vertex-array-object.js.map +0 -1
  515. package/dist/classes/vertex-array.d.ts +0 -75
  516. package/dist/classes/vertex-array.d.ts.map +0 -1
  517. package/dist/classes/vertex-array.js +0 -408
  518. package/dist/classes/vertex-array.js.map +0 -1
  519. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  520. package/dist/classes/webgl-buffer.js.map +0 -1
  521. package/dist/classes/webgl-resource.d.ts.map +0 -1
  522. package/dist/classes/webgl-resource.js.map +0 -1
  523. package/dist/context/context/create-context.d.ts.map +0 -1
  524. package/dist/context/context/create-context.js.map +0 -1
  525. package/dist/context/context/get-canvas.d.ts +0 -13
  526. package/dist/context/context/get-canvas.d.ts.map +0 -1
  527. package/dist/context/context/get-canvas.js +0 -31
  528. package/dist/context/context/get-canvas.js.map +0 -1
  529. package/dist/context/context/resize-context.d.ts +0 -20
  530. package/dist/context/context/resize-context.d.ts.map +0 -1
  531. package/dist/context/context/resize-context.js +0 -15
  532. package/dist/context/context/resize-context.js.map +0 -1
  533. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  534. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  535. package/dist/context/parameters/webgl-parameters.js +0 -2
  536. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  537. package/dist/debug/debug-program-configuration.d.ts +0 -2
  538. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  539. package/dist/debug/debug-program-configuration.js +0 -40
  540. package/dist/debug/debug-program-configuration.js.map +0 -1
  541. package/dist/debug/debug-uniforms.d.ts +0 -12
  542. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  543. package/dist/debug/debug-uniforms.js +0 -108
  544. package/dist/debug/debug-uniforms.js.map +0 -1
  545. package/dist/debug/debug-vertex-array.d.ts +0 -5
  546. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  547. package/dist/debug/debug-vertex-array.js +0 -118
  548. package/dist/debug/debug-vertex-array.js.map +0 -1
  549. package/dist/es5/_deprecated/context-api.js +0 -110
  550. package/dist/es5/_deprecated/context-api.js.map +0 -1
  551. package/dist/es5/_deprecated/features.js +0 -118
  552. package/dist/es5/_deprecated/features.js.map +0 -1
  553. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  554. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  555. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  556. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  557. package/dist/es5/classes/accessor.d.ts +0 -28
  558. package/dist/es5/classes/accessor.js.map +0 -1
  559. package/dist/es5/classes/accessor.ts.disabled +0 -159
  560. package/dist/es5/classes/clear.js +0 -135
  561. package/dist/es5/classes/clear.js.map +0 -1
  562. package/dist/es5/classes/copy-and-blit.js +0 -382
  563. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  564. package/dist/es5/classes/framebuffer.js +0 -807
  565. package/dist/es5/classes/framebuffer.js.map +0 -1
  566. package/dist/es5/classes/program-configuration.js +0 -119
  567. package/dist/es5/classes/program-configuration.js.map +0 -1
  568. package/dist/es5/classes/program.js +0 -471
  569. package/dist/es5/classes/program.js.map +0 -1
  570. package/dist/es5/classes/query.js +0 -222
  571. package/dist/es5/classes/query.js.map +0 -1
  572. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  573. package/dist/es5/classes/renderbuffer.js.map +0 -1
  574. package/dist/es5/classes/shader.js +0 -195
  575. package/dist/es5/classes/shader.js.map +0 -1
  576. package/dist/es5/classes/texture-2d.js.map +0 -1
  577. package/dist/es5/classes/texture-3d.js +0 -142
  578. package/dist/es5/classes/texture-3d.js.map +0 -1
  579. package/dist/es5/classes/texture-cube.js +0 -202
  580. package/dist/es5/classes/texture-cube.js.map +0 -1
  581. package/dist/es5/classes/texture-formats.js +0 -87
  582. package/dist/es5/classes/texture-formats.js.map +0 -1
  583. package/dist/es5/classes/texture.js.map +0 -1
  584. package/dist/es5/classes/transform-feedback.js +0 -267
  585. package/dist/es5/classes/transform-feedback.js.map +0 -1
  586. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  587. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  588. package/dist/es5/classes/uniforms.js +0 -232
  589. package/dist/es5/classes/uniforms.js.map +0 -1
  590. package/dist/es5/classes/vertex-array-object.js +0 -337
  591. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  592. package/dist/es5/classes/vertex-array.js +0 -465
  593. package/dist/es5/classes/vertex-array.js.map +0 -1
  594. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  595. package/dist/es5/classes/webgl-resource.js.map +0 -1
  596. package/dist/es5/context/context/create-context.js.map +0 -1
  597. package/dist/es5/context/context/get-canvas.js +0 -40
  598. package/dist/es5/context/context/get-canvas.js.map +0 -1
  599. package/dist/es5/context/context/resize-context.js +0 -23
  600. package/dist/es5/context/context/resize-context.js.map +0 -1
  601. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  602. package/dist/es5/debug/debug-program-configuration.js +0 -76
  603. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  604. package/dist/es5/debug/debug-uniforms.js +0 -156
  605. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  606. package/dist/es5/debug/debug-vertex-array.js +0 -126
  607. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  608. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  609. package/dist/es5/helpers/program-bindings.js +0 -2
  610. package/dist/es5/types/accessor.d.ts +0 -29
  611. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  612. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  613. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  614. package/dist/es5/webgl-utils/format-utils.js +0 -58
  615. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  616. package/dist/es5/webgl-utils/get-error.js +0 -49
  617. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  618. package/dist/es5/webgl-utils/index.js +0 -74
  619. package/dist/es5/webgl-utils/index.js.map +0 -1
  620. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  621. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  622. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  623. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  624. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  625. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  626. package/dist/esm/_deprecated/context-api.js +0 -70
  627. package/dist/esm/_deprecated/context-api.js.map +0 -1
  628. package/dist/esm/_deprecated/features.js +0 -111
  629. package/dist/esm/_deprecated/features.js.map +0 -1
  630. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  631. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  632. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  633. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  634. package/dist/esm/classes/accessor.d.ts +0 -28
  635. package/dist/esm/classes/accessor.js.map +0 -1
  636. package/dist/esm/classes/clear.js +0 -105
  637. package/dist/esm/classes/clear.js.map +0 -1
  638. package/dist/esm/classes/copy-and-blit.js +0 -338
  639. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  640. package/dist/esm/classes/framebuffer.js +0 -656
  641. package/dist/esm/classes/framebuffer.js.map +0 -1
  642. package/dist/esm/classes/program-configuration.js +0 -73
  643. package/dist/esm/classes/program-configuration.js.map +0 -1
  644. package/dist/esm/classes/program.js +0 -379
  645. package/dist/esm/classes/program.js.map +0 -1
  646. package/dist/esm/classes/query.js +0 -145
  647. package/dist/esm/classes/query.js.map +0 -1
  648. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  649. package/dist/esm/classes/renderbuffer.js.map +0 -1
  650. package/dist/esm/classes/shader.js +0 -118
  651. package/dist/esm/classes/shader.js.map +0 -1
  652. package/dist/esm/classes/texture-2d.js +0 -36
  653. package/dist/esm/classes/texture-2d.js.map +0 -1
  654. package/dist/esm/classes/texture-3d.js +0 -76
  655. package/dist/esm/classes/texture-3d.js.map +0 -1
  656. package/dist/esm/classes/texture-cube.js +0 -130
  657. package/dist/esm/classes/texture-cube.js.map +0 -1
  658. package/dist/esm/classes/texture-formats.js +0 -98
  659. package/dist/esm/classes/texture-formats.js.map +0 -1
  660. package/dist/esm/classes/texture.js.map +0 -1
  661. package/dist/esm/classes/transform-feedback.js +0 -198
  662. package/dist/esm/classes/transform-feedback.js.map +0 -1
  663. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  664. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  665. package/dist/esm/classes/uniforms.js +0 -250
  666. package/dist/esm/classes/uniforms.js.map +0 -1
  667. package/dist/esm/classes/vertex-array-object.js +0 -261
  668. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  669. package/dist/esm/classes/vertex-array.js +0 -408
  670. package/dist/esm/classes/vertex-array.js.map +0 -1
  671. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  672. package/dist/esm/classes/webgl-resource.js.map +0 -1
  673. package/dist/esm/context/context/create-context.js.map +0 -1
  674. package/dist/esm/context/context/get-canvas.js +0 -31
  675. package/dist/esm/context/context/get-canvas.js.map +0 -1
  676. package/dist/esm/context/context/resize-context.js +0 -15
  677. package/dist/esm/context/context/resize-context.js.map +0 -1
  678. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  679. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  680. package/dist/esm/debug/debug-program-configuration.js +0 -40
  681. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  682. package/dist/esm/debug/debug-uniforms.js +0 -108
  683. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  684. package/dist/esm/debug/debug-vertex-array.js +0 -118
  685. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  686. package/dist/esm/helpers/get-program-bindings.js +0 -228
  687. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  688. package/dist/esm/helpers/program-bindings.js +0 -2
  689. package/dist/esm/types/accessor.d.ts +0 -29
  690. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  691. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  692. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  693. package/dist/esm/webgl-utils/format-utils.js +0 -45
  694. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  695. package/dist/esm/webgl-utils/get-error.js +0 -41
  696. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  697. package/dist/esm/webgl-utils/index.js +0 -5
  698. package/dist/esm/webgl-utils/index.js.map +0 -1
  699. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  701. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  702. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  703. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  704. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  705. package/dist/helpers/get-program-bindings.d.ts +0 -8
  706. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  707. package/dist/helpers/get-program-bindings.js +0 -228
  708. package/dist/helpers/get-program-bindings.js.map +0 -1
  709. package/dist/helpers/program-bindings.d.ts +0 -41
  710. package/dist/helpers/program-bindings.d.ts.map +0 -1
  711. package/dist/helpers/program-bindings.js +0 -2
  712. package/dist/types/accessor.d.ts +0 -29
  713. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  714. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  715. package/dist/webgl-utils/attribute-utils.js +0 -182
  716. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  717. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  718. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  719. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  720. package/dist/webgl-utils/format-utils.d.ts +0 -3
  721. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  722. package/dist/webgl-utils/format-utils.js +0 -45
  723. package/dist/webgl-utils/format-utils.js.map +0 -1
  724. package/dist/webgl-utils/get-error.d.ts +0 -3
  725. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  726. package/dist/webgl-utils/get-error.js +0 -41
  727. package/dist/webgl-utils/get-error.js.map +0 -1
  728. package/dist/webgl-utils/index.d.ts +0 -5
  729. package/dist/webgl-utils/index.d.ts.map +0 -1
  730. package/dist/webgl-utils/index.js +0 -5
  731. package/dist/webgl-utils/index.js.map +0 -1
  732. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  733. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  734. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  735. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  736. package/dist/webgl-utils/request-animation-frame.js +0 -7
  737. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  738. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  739. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  740. package/dist/webgl-utils/texture-utils.js +0 -48
  741. package/dist/webgl-utils/texture-utils.js.map +0 -1
  742. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  743. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  744. package/src/.DS_Store +0 -0
  745. package/src/_deprecated/context-api.ts +0 -140
  746. package/src/_deprecated/features.ts +0 -159
  747. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  748. package/src/classes/accessor.d.ts +0 -28
  749. package/src/classes/accessor.js +0 -129
  750. package/src/classes/accessor.ts.disabled +0 -159
  751. package/src/classes/clear.ts +0 -108
  752. package/src/classes/copy-and-blit.ts +0 -460
  753. package/src/classes/framebuffer.ts +0 -763
  754. package/src/classes/program-configuration.ts +0 -77
  755. package/src/classes/program.ts +0 -431
  756. package/src/classes/query.ts +0 -171
  757. package/src/classes/renderbuffer.ts +0 -154
  758. package/src/classes/shader.ts +0 -129
  759. package/src/classes/texture-2d.ts +0 -35
  760. package/src/classes/texture-3d.ts +0 -123
  761. package/src/classes/texture-cube.ts +0 -162
  762. package/src/classes/texture-formats.ts +0 -171
  763. package/src/classes/texture.ts +0 -965
  764. package/src/classes/transform-feedback.ts +0 -191
  765. package/src/classes/uniform-buffer-layout.ts +0 -113
  766. package/src/classes/uniforms.ts +0 -394
  767. package/src/classes/vertex-array-object.ts +0 -339
  768. package/src/classes/vertex-array.ts +0 -484
  769. package/src/context/context/get-canvas.ts +0 -37
  770. package/src/context/context/resize-context.ts +0 -37
  771. package/src/context/parameters/webgl-parameters.ts +0 -197
  772. package/src/debug/debug-program-configuration.ts +0 -32
  773. package/src/debug/debug-uniforms.ts +0 -100
  774. package/src/debug/debug-vertex-array.ts +0 -123
  775. package/src/helpers/get-program-bindings.ts +0 -244
  776. package/src/helpers/program-bindings.ts +0 -46
  777. package/src/types/accessor.d.ts +0 -29
  778. package/src/webgl-utils/attribute-utils.ts +0 -171
  779. package/src/webgl-utils/format-utils.ts +0 -43
  780. package/src/webgl-utils/get-error.ts +0 -56
  781. package/src/webgl-utils/index.ts +0 -12
  782. package/src/webgl-utils/request-animation-frame.ts +0 -14
  783. package/src/webgl-utils/texture-utils.ts +0 -60
@@ -0,0 +1,104 @@
1
+ /* eslint-disable no-inline-comments */
2
+ import {assert, ResourceProps} from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import WebGLDevice from '../webgl-device';
5
+ import WebGLResource from './webgl-resource';
6
+ import {
7
+ isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel
8
+ } from '../converters/renderbuffer-formats';
9
+
10
+ export type RenderbufferProps = ResourceProps & {
11
+ format: number;
12
+ width?: number;
13
+ height?: number;
14
+ samples?: number;
15
+ };
16
+
17
+ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
18
+ id: undefined,
19
+ handle: undefined,
20
+ userData: undefined,
21
+ format: 0,
22
+ width: 1,
23
+ height: 1,
24
+ samples: 0
25
+ };
26
+
27
+ /**
28
+ * Renderbuffers are GPU objects that contain images.
29
+ * In contrast to Textures they are optimized for use as render targets, with Framebuffers.
30
+ * while Textures may not be, and are the logical choice when
31
+ * you do not need to sample (i.e. in a post-pass shader)
32
+ * from the produced image. If you need to resample
33
+ * (such as when reading depth back in a second shader pass),
34
+ * use Textures instead.
35
+ * Renderbuffer objects also natively accommodate Multisampling (MSAA).
36
+ */
37
+ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
38
+ get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
39
+
40
+ get width(): number { return this.props.width; }
41
+ get height(): number { return this.props.height; }
42
+ get format(): number { return this.props.format; }
43
+ get samples(): number { return this.props.samples; }
44
+
45
+ static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
46
+ return !options.format || isRenderbufferFormatSupported(gl, options.format);
47
+ }
48
+
49
+ constructor(device: WebGLDevice, props: RenderbufferProps) {
50
+ super(device, props, DEFAULT_RENDERBUFFER_PROPS);
51
+ this._initialize(this.props);
52
+ }
53
+
54
+ resize(size: {width: number, height: number}): this {
55
+ // Don't resize if width/height haven't changed
56
+ if (size.width !== this.width || size.height !== this.height) {
57
+ Object.assign(this.props, {...size, format: this.format, samples: this.samples});
58
+ this._initialize(this.props);
59
+ }
60
+ return this;
61
+ }
62
+
63
+ // PRIVATE METHODS
64
+
65
+ /** Creates and initializes a renderbuffer object's data store */
66
+ protected _initialize(props: Required<RenderbufferProps>) {
67
+ const {format, width, height, samples} = props;
68
+ assert(format, 'Needs format');
69
+
70
+ this.trackDeallocatedMemory();
71
+
72
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
73
+
74
+ if (samples !== 0 && this.device.isWebGL2) {
75
+ // @ts-expect-error
76
+ this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
77
+ } else {
78
+ this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
79
+ }
80
+
81
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
82
+
83
+ this.trackAllocatedMemory(
84
+ width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
85
+ );
86
+
87
+ return this;
88
+ }
89
+
90
+ // RESOURCE IMPLEMENTATION
91
+
92
+ _createHandle() {
93
+ return this.gl.createRenderbuffer();
94
+ }
95
+
96
+ _deleteHandle(): void {
97
+ this.gl.deleteRenderbuffer(this.handle);
98
+ this.trackDeallocatedMemory();
99
+ }
100
+
101
+ _bindHandle(handle: WEBGLRenderbuffer): void {
102
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
103
+ }
104
+ }
@@ -1,17 +1,19 @@
1
1
  // luma.gl, MIT license
2
2
  import {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/api';
3
- import type {Device} from '@luma.gl/api';
4
- export type {ResourceProps} from '@luma.gl/api';
5
- import {isWebGL2, assertWebGLContext} from '../context/context/webgl-checks';
6
- import {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';
7
- import WebGLDevice from '../adapter/webgl-device';
3
+ import type {Device, ResourceProps} from '@luma.gl/api';
4
+ import GL from '@luma.gl/constants';
5
+ import {isWebGL2, assertWebGLContext} from '../../context/context/webgl-checks';
6
+ import WebGLDevice from '../webgl-device';
7
+
8
+ // Requires full GL enum to be bundled... Make these bindings dependent on dynamic import (debug)?
9
+ import {getKey, getKeyValue} from './constants-to-keys';
8
10
 
9
11
  const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
10
12
 
11
13
  /**
12
14
  * Base class for WebGL object wrappers
13
15
  */
14
- export default class WebGLResource<Props> extends Resource<Props> {
16
+ export default abstract class WebGLResource<Props> extends Resource<Props> {
15
17
  id: string;
16
18
  userData: any;
17
19
  readonly device: WebGLDevice;
@@ -72,6 +74,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
72
74
  return this._handle;
73
75
  }
74
76
 
77
+ destroy(): void {
78
+ this.delete();
79
+ }
80
+
75
81
  delete({deleteChildren = false} = {}) {
76
82
  // Delete this object, and get refs to any children
77
83
  // @ts-expect-error
@@ -166,7 +172,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
166
172
 
167
173
  const isWebgl2 = isWebGL2(this.gl);
168
174
 
169
- const values = {};
175
+ const values: Record<string, any> = {};
170
176
 
171
177
  // Query all parameters if no list provided
172
178
  const parameterKeys = parameters || Object.keys(PARAMETERS);
@@ -198,11 +204,11 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
198
204
  *
199
205
  * @todo - cache parameter to avoid issuing WebGL calls?
200
206
  *
201
- * @param {string} pname - parameter (GL constant, value or key)
202
- * @param {GLint|GLfloat|GLenum} value
203
- * @return {Resource} returns self to enable chaining
207
+ * @param pname - parameter (GL constant, value or key)
208
+ * @param value {GLint|GLfloat|GLenum}
209
+ * @return returns self to enable chaining
204
210
  */
205
- setParameter(pname, value) {
211
+ setParameter(pname: GL | string, value: any): this {
206
212
  pname = getKeyValue(this.gl, pname);
207
213
  assert(pname);
208
214
 
@@ -239,7 +245,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
239
245
  * Batch update resource parameters
240
246
  * Assumes the subclass supports a setParameter call
241
247
  */
242
- setParameters(parameters) {
248
+ setParameters(parameters: Record<GL, any>) {
243
249
  for (const pname in parameters) {
244
250
  this.setParameter(pname, parameters[pname]);
245
251
  }
@@ -247,12 +253,12 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
247
253
  }
248
254
 
249
255
  // Install stubs for removed methods
250
- stubRemovedMethods(className, version, methodNames) {
256
+ stubRemovedMethods(className: string, version: string, methodNames: string[]) {
251
257
  return stubRemovedMethods(this, className, version, methodNames);
252
258
  }
253
259
 
254
260
  // PUBLIC VIRTUAL METHODS
255
- initialize(props) {}
261
+ initialize(props: ResourceProps) {}
256
262
 
257
263
  // PROTECTED METHODS - These must be overridden by subclass
258
264
  _createHandle() {
@@ -263,7 +269,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
263
269
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
264
270
  }
265
271
 
266
- _bindHandle(handle) {
272
+ _bindHandle(handle: any) {
267
273
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
268
274
  }
269
275
 
@@ -271,11 +277,11 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
271
277
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
272
278
  }
273
279
 
274
- _getParameter(pname, props): number {
280
+ _getParameter(pname: GL, props: Record<string, any>): number {
275
281
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
276
282
  }
277
283
 
278
- _setParameter(pname, value) {
284
+ _setParameter(pname: GL | string, value: any) {
279
285
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
280
286
  }
281
287
 
@@ -0,0 +1,111 @@
1
+ import {assert, ResourceProps} from '@luma.gl/api';
2
+ import GL from '@luma.gl/constants';
3
+ import {getBrowser} from '@probe.gl/env';
4
+
5
+ import WebGLDevice from '../webgl-device';
6
+ import WebGLResource from './webgl-resource';
7
+
8
+ import Buffer from '../resources/webgl-buffer';
9
+
10
+ const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
11
+
12
+ /**
13
+ * VertexArrayObject properties
14
+ */
15
+ export type VertexArrayObjectProps = ResourceProps & {
16
+ };
17
+
18
+ /** VertexArrayObject wrapper */
19
+ export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
20
+ get [Symbol.toStringTag](): string {
21
+ return 'BaseVertexArrayObject';
22
+ }
23
+
24
+ constructor(device: WebGLDevice, props?: VertexArrayObjectProps) {
25
+ // @ts-expect-error
26
+ super(device, props, {});
27
+ }
28
+
29
+ _createHandle() {
30
+ return this.gl2.createVertexArray();
31
+ }
32
+
33
+ _deleteHandle(): void {
34
+ this.gl2.deleteVertexArray(this.handle);
35
+ // @ts-expect-error
36
+ return [this.elements];
37
+ // return [this.elements, ...this.buffers];
38
+ }
39
+
40
+ _bindHandle(handle: WEBGLVertexArrayObject): void {
41
+ this.gl2.bindVertexArray(handle);
42
+ }
43
+
44
+ // Set (bind) an elements buffer, for indexed rendering.
45
+ // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported
46
+ setElementBuffer(elementBuffer: Buffer | null = null, opts = {}) {
47
+ assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
48
+
49
+ // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...
50
+ this.bind(() => {
51
+ this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
52
+ });
53
+
54
+ return this;
55
+ }
56
+
57
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
58
+ setBuffer(location: number, buffer: Buffer, accessor: any): this {
59
+ // Check target
60
+ if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
61
+ return this.setElementBuffer(buffer, accessor);
62
+ }
63
+
64
+ const {size, type, stride, offset, normalized, integer, divisor} = accessor;
65
+
66
+ const {gl, gl2} = this;
67
+ location = Number(location);
68
+
69
+ this.bind(() => {
70
+ // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
71
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
72
+
73
+ // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
74
+ if (integer) {
75
+ this.device.assertWebGL2();
76
+ gl2.vertexAttribIPointer(location, size, type, stride, offset);
77
+ } else {
78
+ // Attaches ARRAY_BUFFER with specified buffer format to location
79
+ gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
80
+ }
81
+ gl.enableVertexAttribArray(location);
82
+ gl2.vertexAttribDivisor(location, divisor || 0);
83
+
84
+ // NOTE We don't unbind buffer here, typically another buffer will be bound just after
85
+ });
86
+
87
+ return this;
88
+ }
89
+
90
+ /**
91
+ * Enabling an attribute location makes it reference the currently bound buffer
92
+ * Disabling an attribute location makes it reference the global constant value
93
+ * TODO - handle single values for size 1 attributes?
94
+ * TODO - convert classic arrays based on known type?
95
+ */
96
+ enable(location: number, enable = true): this {
97
+ // Attribute 0 cannot be disabled in most desktop OpenGL based browsers...
98
+ const canDisableAttributeZero = this.device.isWebGL2 || getBrowser() === 'Chrome';
99
+ const canDisableAttribute = canDisableAttributeZero || location !== 0;
100
+
101
+ if (enable || canDisableAttribute) {
102
+ location = Number(location);
103
+ this.bind(() =>
104
+ enable
105
+ ? this.gl.enableVertexAttribArray(location)
106
+ : this.gl.disableVertexAttribArray(location)
107
+ );
108
+ }
109
+ return this;
110
+ }
111
+ }
@@ -0,0 +1,219 @@
1
+ import type {BufferProps} from '@luma.gl/api';
2
+ import {Buffer, assert} from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import WebGLDevice from '../webgl-device';
5
+
6
+ const DEBUG_DATA_LENGTH = 10;
7
+
8
+ /** WebGL Buffer interface */
9
+ export default class WEBGLBuffer extends Buffer {
10
+ readonly device: WebGLDevice;
11
+ readonly gl: WebGLRenderingContext;
12
+ readonly gl2: WebGL2RenderingContext | null;
13
+ readonly handle: WebGLBuffer;
14
+ readonly target: number;
15
+
16
+ byteLength: number;
17
+ bytesUsed: number;
18
+ debugData: ArrayBuffer | null = null;
19
+
20
+ webglUsage: number;
21
+
22
+ accessor: {};
23
+
24
+ constructor(device: WebGLDevice, props: BufferProps = {}) {
25
+ super(device, props);
26
+
27
+ this.device = device;
28
+ this.gl = this.device.gl;
29
+ this.gl2 = this.device.gl2;
30
+
31
+ const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;
32
+ this.handle = handle || this.gl.createBuffer();
33
+ // @ts-expect-error Add metadata for spector
34
+ this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
35
+
36
+ // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers
37
+ // otherwise buffer type will lock to generic (non-element) buffer
38
+ // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here
39
+ // @ts-expect-error Hack - Checking for subclass prop
40
+ this.target = this.props.target || getWebGLTarget(this.props.usage);
41
+ // @ts-expect-error Hack - Checking for subclass prop
42
+ this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
43
+ this.debugData = null;
44
+
45
+ // Set data: (re)initializes the buffer
46
+ if (props.data) {
47
+ this._initWithData(props.data, props.byteOffset, props.byteLength);
48
+ } else {
49
+ this._initWithByteLength(props.byteLength || 0);
50
+ }
51
+
52
+ // Deprecated: Merge main props and accessor
53
+ // this.accessor = {...props.accessor};
54
+
55
+ // Object.seal(this);
56
+ }
57
+
58
+ // PRIVATE METHODS
59
+
60
+ // Allocate a new buffer and initialize to contents of typed array
61
+ _initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {
62
+ assert(ArrayBuffer.isView(data));
63
+
64
+ const target = this._getWriteTarget();
65
+
66
+ this.gl.bindBuffer(target, this.handle);
67
+ this.gl.bufferData(target, byteLength, this.webglUsage);
68
+ this.gl.bufferSubData(target, byteOffset, data);
69
+ this.gl.bindBuffer(target, null);
70
+
71
+ this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
72
+ this.bytesUsed = byteLength;
73
+ this.byteLength = byteLength;
74
+ this.trackAllocatedMemory(byteLength);
75
+
76
+ return this;
77
+ }
78
+
79
+ // Allocate a GPU buffer of specified size.
80
+ _initWithByteLength(byteLength: number): this {
81
+ assert(byteLength >= 0);
82
+
83
+ // Workaround needed for Safari (#291):
84
+ // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
85
+ let data = byteLength;
86
+ if (byteLength === 0) {
87
+ // @ts-expect-error
88
+ data = new Float32Array(0);
89
+ }
90
+
91
+ const target = this._getWriteTarget();
92
+
93
+ this.gl.bindBuffer(target, this.handle);
94
+ this.gl.bufferData(target, data, this.webglUsage);
95
+ this.gl.bindBuffer(target, null);
96
+
97
+ this.debugData = null;
98
+ this.bytesUsed = byteLength;
99
+ this.byteLength = byteLength;
100
+
101
+ return this;
102
+ }
103
+
104
+ destroy(): void {
105
+ if (this.handle) {
106
+ this.removeStats();
107
+ this.trackDeallocatedMemory();
108
+ this.gl.deleteBuffer(this.handle);
109
+ // this.handle = null;
110
+ this.destroyed = true;
111
+ }
112
+ }
113
+
114
+ write(data: ArrayBufferView, byteOffset: number = 0): void {
115
+ const srcOffset = 0;
116
+ const byteLength = data.byteLength;
117
+
118
+ // Create the buffer - binding it here for the first time locks the type
119
+ // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
120
+ const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
121
+ this.gl.bindBuffer(target, this.handle);
122
+ // WebGL2: subData supports additional srcOffset and length parameters
123
+ if (srcOffset !== 0 || byteLength !== undefined) {
124
+ this.device.assertWebGL2();
125
+
126
+ // @ts-expect-error
127
+ this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
128
+ } else {
129
+ this.gl.bufferSubData(target, byteOffset, data);
130
+ }
131
+ this.gl.bindBuffer(target, null);
132
+
133
+ // TODO - update local `data` if offsets are right
134
+ // this.debugData = data.slice(byteOffset, 40);
135
+ }
136
+
137
+ /** Read data from the buffer */
138
+ async readAsync(
139
+ byteOffset: number = 0,
140
+ byteLength?: number
141
+ ): Promise<ArrayBuffer> {
142
+ this.device.assertWebGL2();
143
+
144
+ const data = new Uint8Array(byteLength);
145
+ const dstOffset = 0;
146
+
147
+ // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type
148
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
149
+ this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
150
+ this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
151
+
152
+ // TODO - update local `data` if offsets are 0
153
+ // this.debugData = null;
154
+
155
+ return data;
156
+ }
157
+
158
+ // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)
159
+
160
+ _invalidateDebugData() {
161
+ this.debugData = null;
162
+ }
163
+
164
+ _getWriteTarget() {
165
+ return this.target;
166
+ // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
167
+ }
168
+
169
+ _getReadTarget() {
170
+ return this.target;
171
+ return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
172
+ }
173
+ }
174
+
175
+ // static MAP_READ = 0x01;
176
+ // static MAP_WRITE = 0x02;
177
+ // static COPY_SRC = 0x0004;
178
+ // static COPY_DST = 0x0008;
179
+ // static INDEX = 0x0010;
180
+ // static VERTEX = 0x0020;
181
+ // static UNIFORM = 0x0040;
182
+ // static STORAGE = 0x0080;
183
+ // static INDIRECT = 0x0100;
184
+ // static QUERY_RESOLVE = 0x0200;
185
+
186
+ function getWebGLTarget(usage: number): GL {
187
+ if (usage & Buffer.INDEX) {
188
+ return GL.ELEMENT_ARRAY_BUFFER;
189
+ }
190
+ if (usage & Buffer.VERTEX) {
191
+ return GL.ARRAY_BUFFER;
192
+ }
193
+ if (usage & Buffer.UNIFORM) {
194
+ return GL.UNIFORM_BUFFER;
195
+ }
196
+
197
+ // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.
198
+ // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.
199
+ // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.
200
+ // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.
201
+ // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.
202
+
203
+ // Binding a buffer for the first time locks the type
204
+ // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type
205
+ return GL.ARRAY_BUFFER;
206
+ }
207
+
208
+ function getWebGLUsage(usage: number): GL {
209
+ if (usage & Buffer.INDEX) {
210
+ return GL.STATIC_DRAW;
211
+ }
212
+ if (usage & Buffer.VERTEX) {
213
+ return GL.STATIC_DRAW;
214
+ }
215
+ if (usage & Buffer.UNIFORM) {
216
+ return GL.DYNAMIC_DRAW;
217
+ }
218
+ return GL.DYNAMIC_DRAW;
219
+ }
@@ -0,0 +1,94 @@
1
+ import type {
2
+ CopyBufferToBufferOptions,
3
+ CopyBufferToTextureOptions,
4
+ CopyTextureToBufferOptions,
5
+ CopyTextureToTextureOptions
6
+ } from '@luma.gl/api';
7
+ import GL from '@luma.gl/constants';
8
+ import WebGLDevice from '../webgl-device';
9
+ import WEBGLBuffer from './webgl-buffer';
10
+
11
+ function cast<T>(value: unknown): T {
12
+ return value as T;
13
+ }
14
+
15
+ type CopyBufferToBufferCommand = {
16
+ name: 'copy-buffer-to-buffer';
17
+ options: CopyBufferToBufferOptions;
18
+ };
19
+
20
+ type CopyBufferToTextureCommand = {
21
+ name: 'copy-buffer-to-texture';
22
+ options: CopyBufferToTextureOptions;
23
+ };
24
+
25
+ type CopyTextureToBufferCommand = {
26
+ name: 'copy-texture-to-buffer';
27
+ options: CopyTextureToBufferOptions;
28
+ };
29
+
30
+ type CopyTextureToTextureCommand = {
31
+ name: 'copy-texture-to-texture';
32
+ options: CopyTextureToTextureOptions;
33
+ };
34
+
35
+ type Command =
36
+ | CopyBufferToBufferCommand
37
+ | CopyBufferToTextureCommand
38
+ | CopyTextureToBufferCommand
39
+ | CopyTextureToTextureCommand;
40
+
41
+ export default class CommandBuffer {
42
+ commands: Command[] = [];
43
+ }
44
+
45
+ export function submitCommands(device: WebGLDevice, commands: Command[] = []) {
46
+ for (const command of commands) {
47
+ switch (command.name) {
48
+ case 'copy-buffer-to-buffer':
49
+ _copyBufferToBuffer(device, command.options);
50
+ break;
51
+ case 'copy-buffer-to-texture':
52
+ _copyBufferToTexture(device, command.options);
53
+ break;
54
+ case 'copy-texture-to-buffer':
55
+ _copyTextureToBuffer(device, command.options);
56
+ break;
57
+ case 'copy-texture-to-texture':
58
+ _copyTextureToTexture(device, command.options);
59
+ break;
60
+ }
61
+ }
62
+ }
63
+
64
+ function _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOptions): void {
65
+ const source = cast<WEBGLBuffer>(options.source);
66
+ const destination = cast<WEBGLBuffer>(options.destination);
67
+
68
+ const {gl2} = device;
69
+ if (gl2) {
70
+ // In WebGL2 we can perform the copy on the GPU
71
+ // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
72
+ gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
73
+ gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
74
+ gl2.copyBufferSubData(
75
+ GL.COPY_READ_BUFFER,
76
+ GL.COPY_WRITE_BUFFER,
77
+ options.sourceOffset ?? 0,
78
+ options.destinationOffset ?? 0,
79
+ options.size
80
+ );
81
+ gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
82
+ gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
83
+ } else {
84
+ // TODO - in WebGL1 we would have to read back to CPU
85
+ // read / write buffer from / to CPU
86
+ throw new Error('copyBufferToBuffer not implemented in WebGL1');
87
+ }
88
+ }
89
+
90
+ function _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {}
91
+
92
+ function _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {}
93
+
94
+ function _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {}
@@ -0,0 +1,58 @@
1
+ import {CommandEncoder, CommandEncoderProps} from '@luma.gl/api';
2
+ import type {
3
+ CopyBufferToBufferOptions,
4
+ CopyBufferToTextureOptions,
5
+ CopyTextureToBufferOptions,
6
+ CopyTextureToTextureOptions
7
+ } from '@luma.gl/api';
8
+
9
+ import CommandBuffer from './webgl-command-buffer';
10
+ import WebGLDevice from '../webgl-device';
11
+
12
+ export default class WEBGLCommandEncoder extends CommandEncoder {
13
+ readonly device: WebGLDevice;
14
+
15
+ readonly commandBuffer = new CommandBuffer();
16
+
17
+ constructor(device: WebGLDevice, props: CommandEncoderProps) {
18
+ super(props);
19
+ this.device = device;
20
+ }
21
+
22
+ destroy() {}
23
+
24
+ // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
25
+ // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
26
+ // finish(options?: {id?: string}): GPUCommandBuffer;
27
+
28
+ copyBufferToBuffer(options: CopyBufferToBufferOptions): void {
29
+ this.commandBuffer.commands.push({name: 'copy-buffer-to-buffer', options});
30
+ }
31
+
32
+ copyBufferToTexture(options: CopyBufferToTextureOptions) {
33
+ this.commandBuffer.commands.push({name: 'copy-buffer-to-texture', options});
34
+ }
35
+
36
+ copyTextureToBuffer(options: CopyTextureToBufferOptions): void {
37
+ this.commandBuffer.commands.push({name: 'copy-texture-to-buffer', options});
38
+ }
39
+
40
+ copyTextureToTexture(options: CopyTextureToTextureOptions): void {
41
+ this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
42
+ }
43
+
44
+ pushDebugGroup(groupLabel: string): void {}
45
+ popDebugGroup() {}
46
+
47
+ insertDebugMarker(markerLabel: string): void {}
48
+
49
+ // writeTimestamp(querySet: Query, queryIndex: number): void {}
50
+
51
+ // resolveQuerySet(options: {
52
+ // querySet: GPUQuerySet,
53
+ // firstQuery: number,
54
+ // queryCount: number,
55
+ // destination: Buffer,
56
+ // destinationOffset?: number;
57
+ // }): void;
58
+ };