@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
@@ -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, 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;
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
+ // @ts-expect-error
110
+ this.handle = null;
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
+ };