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

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 (731) 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/{esm/adapter/converters/set-device-parameters.js → adapter/converters/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/{esm/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/{esm/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/adapter/{webgl-shader.js → 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/{esm/classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  107. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  108. package/dist/adapter/webgl-canvas-context.d.ts +36 -0
  109. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -0
  110. package/dist/adapter/webgl-canvas-context.js +54 -0
  111. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  112. package/dist/adapter/webgl-device.d.ts +58 -77
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +185 -113
  115. package/dist/adapter/webgl-device.js.map +1 -1
  116. package/dist/classic/accessor.d.ts +32 -0
  117. package/dist/classic/accessor.d.ts.map +1 -0
  118. package/dist/{classes → classic}/accessor.js +33 -1
  119. package/dist/classic/accessor.js.map +1 -0
  120. package/dist/{classes/webgl-buffer.d.ts → classic/buffer.d.ts} +28 -33
  121. package/dist/classic/buffer.d.ts.map +1 -0
  122. package/dist/{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 +255 -135
  218. package/dist/es5/adapter/webgl-device.js.map +1 -1
  219. package/dist/es5/{classes → classic}/accessor.js +25 -1
  220. package/dist/es5/classic/accessor.js.map +1 -0
  221. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
  222. package/dist/es5/classic/buffer.js.map +1 -0
  223. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  224. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  225. package/dist/es5/context/context/context-state.js +1 -1
  226. package/dist/es5/context/context/context-state.js.map +1 -1
  227. package/dist/es5/context/context/create-context.js +12 -0
  228. package/dist/es5/context/context/create-context.js.map +1 -1
  229. package/dist/es5/context/context/device-pixels.js.map +1 -1
  230. package/dist/es5/context/debug/spector.js +133 -0
  231. package/dist/es5/context/debug/spector.js.map +1 -0
  232. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  233. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  234. package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
  235. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  236. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  237. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  238. package/dist/es5/context/polyfill/polyfill-context.js +4 -3
  239. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  240. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  241. package/dist/es5/context/state-tracker/track-context-state.js +26 -11
  242. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  243. package/dist/es5/index.js +66 -238
  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/{adapter/converters/set-device-parameters.js → esm/adapter/converters/device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/{classes → esm/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/{classes → esm/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/esm/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/{classes/texture.js → esm/adapter/resources/webgl-texture.js} +274 -229
  302. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  303. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  304. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  305. package/dist/esm/adapter/webgl-device.js +185 -113
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{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 -29
  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 -43
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -29
  340. package/dist/index.js.map +1 -1
  341. package/dist/init.d.ts +1 -4
  342. package/dist/init.d.ts.map +1 -1
  343. package/dist/init.js +2 -31
  344. package/dist/init.js.map +1 -1
  345. package/dist/types/webgl.d.ts +144 -0
  346. package/dist/types/webgl.d.ts.map +1 -0
  347. package/dist/types/webgl.js +2 -0
  348. package/dist/types/webgl.js.map +1 -0
  349. package/package.json +5 -5
  350. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
  351. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  352. package/src/adapter/converters/sampler-parameters.ts +175 -0
  353. package/src/adapter/converters/texture-formats.ts +633 -0
  354. package/src/adapter/converters/vertex-formats.ts +22 -0
  355. package/src/adapter/device-helpers/device-features.ts +46 -123
  356. package/src/adapter/device-helpers/device-limits.ts +5 -2
  357. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  358. package/src/adapter/helpers/attribute-utils.ts +61 -0
  359. package/src/adapter/helpers/get-shader-layout.ts +388 -0
  360. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  361. package/src/adapter/helpers/set-uniform.ts +87 -0
  362. package/src/adapter/helpers/uniforms.ts +110 -0
  363. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  364. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  365. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  366. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  367. package/src/adapter/resources/webgl-buffer.ts +219 -0
  368. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  369. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  370. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  371. package/src/adapter/resources/webgl-framebuffer.ts +279 -0
  372. package/src/adapter/resources/webgl-render-pass.ts +23 -0
  373. package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
  374. package/src/adapter/resources/webgl-sampler.ts +54 -0
  375. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
  376. package/src/adapter/resources/webgl-texture.ts +1023 -0
  377. package/src/adapter/webgl-canvas-context.ts +74 -0
  378. package/src/adapter/webgl-device.ts +229 -285
  379. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
  380. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
  381. package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
  382. package/src/context/context/context-state.ts +4 -2
  383. package/src/context/context/create-context.ts +28 -1
  384. package/src/context/context/device-pixels.ts +9 -4
  385. package/src/context/debug/spector.ts +92 -0
  386. package/src/context/debug/webgl-developer-tools.ts +162 -0
  387. package/src/context/parameters/unified-parameter-api.ts +6 -4
  388. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  389. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  390. package/src/context/polyfill/polyfill-context.ts +4 -3
  391. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  392. package/src/context/state-tracker/track-context-state.ts +27 -20
  393. package/src/index.ts +33 -91
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  397. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  398. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  399. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  400. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  401. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  402. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  403. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  404. package/dist/adapter/webgl-shader.js.map +0 -1
  405. package/dist/classes/accessor.d.ts +0 -28
  406. package/dist/classes/accessor.d.ts.map +0 -1
  407. package/dist/classes/accessor.js.map +0 -1
  408. package/dist/classes/accessor.ts.disabled +0 -159
  409. package/dist/classes/clear.d.ts +0 -17
  410. package/dist/classes/clear.d.ts.map +0 -1
  411. package/dist/classes/clear.js +0 -105
  412. package/dist/classes/clear.js.map +0 -1
  413. package/dist/classes/copy-and-blit.d.ts +0 -86
  414. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  415. package/dist/classes/copy-and-blit.js +0 -338
  416. package/dist/classes/copy-and-blit.js.map +0 -1
  417. package/dist/classes/framebuffer.d.ts +0 -139
  418. package/dist/classes/framebuffer.d.ts.map +0 -1
  419. package/dist/classes/framebuffer.js +0 -656
  420. package/dist/classes/framebuffer.js.map +0 -1
  421. package/dist/classes/program-configuration.d.ts +0 -24
  422. package/dist/classes/program-configuration.d.ts.map +0 -1
  423. package/dist/classes/program-configuration.js +0 -73
  424. package/dist/classes/program-configuration.js.map +0 -1
  425. package/dist/classes/program.d.ts +0 -66
  426. package/dist/classes/program.d.ts.map +0 -1
  427. package/dist/classes/program.js +0 -379
  428. package/dist/classes/program.js.map +0 -1
  429. package/dist/classes/query.d.ts +0 -27
  430. package/dist/classes/query.d.ts.map +0 -1
  431. package/dist/classes/query.js +0 -145
  432. package/dist/classes/query.js.map +0 -1
  433. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  434. package/dist/classes/renderbuffer-formats.js.map +0 -1
  435. package/dist/classes/renderbuffer.d.ts +0 -60
  436. package/dist/classes/renderbuffer.d.ts.map +0 -1
  437. package/dist/classes/renderbuffer.js.map +0 -1
  438. package/dist/classes/shader.d.ts +0 -42
  439. package/dist/classes/shader.d.ts.map +0 -1
  440. package/dist/classes/shader.js +0 -118
  441. package/dist/classes/shader.js.map +0 -1
  442. package/dist/classes/texture-2d.d.ts +0 -9
  443. package/dist/classes/texture-2d.d.ts.map +0 -1
  444. package/dist/classes/texture-2d.js +0 -36
  445. package/dist/classes/texture-2d.js.map +0 -1
  446. package/dist/classes/texture-3d.d.ts +0 -29
  447. package/dist/classes/texture-3d.d.ts.map +0 -1
  448. package/dist/classes/texture-3d.js +0 -76
  449. package/dist/classes/texture-3d.js.map +0 -1
  450. package/dist/classes/texture-cube.d.ts +0 -28
  451. package/dist/classes/texture-cube.d.ts.map +0 -1
  452. package/dist/classes/texture-cube.js +0 -130
  453. package/dist/classes/texture-cube.js.map +0 -1
  454. package/dist/classes/texture-formats.d.ts +0 -37
  455. package/dist/classes/texture-formats.d.ts.map +0 -1
  456. package/dist/classes/texture-formats.js +0 -98
  457. package/dist/classes/texture-formats.js.map +0 -1
  458. package/dist/classes/texture.d.ts +0 -123
  459. package/dist/classes/texture.d.ts.map +0 -1
  460. package/dist/classes/texture.js.map +0 -1
  461. package/dist/classes/transform-feedback.d.ts +0 -33
  462. package/dist/classes/transform-feedback.d.ts.map +0 -1
  463. package/dist/classes/transform-feedback.js +0 -198
  464. package/dist/classes/transform-feedback.js.map +0 -1
  465. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  466. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  467. package/dist/classes/uniform-buffer-layout.js +0 -104
  468. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  469. package/dist/classes/uniforms.d.ts +0 -37
  470. package/dist/classes/uniforms.d.ts.map +0 -1
  471. package/dist/classes/uniforms.js +0 -250
  472. package/dist/classes/uniforms.js.map +0 -1
  473. package/dist/classes/vertex-array-object.d.ts +0 -76
  474. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  475. package/dist/classes/vertex-array-object.js +0 -261
  476. package/dist/classes/vertex-array-object.js.map +0 -1
  477. package/dist/classes/vertex-array.d.ts +0 -75
  478. package/dist/classes/vertex-array.d.ts.map +0 -1
  479. package/dist/classes/vertex-array.js +0 -408
  480. package/dist/classes/vertex-array.js.map +0 -1
  481. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  482. package/dist/classes/webgl-buffer.js.map +0 -1
  483. package/dist/classes/webgl-resource.d.ts.map +0 -1
  484. package/dist/classes/webgl-resource.js.map +0 -1
  485. package/dist/context/context/get-canvas.d.ts +0 -13
  486. package/dist/context/context/get-canvas.d.ts.map +0 -1
  487. package/dist/context/context/get-canvas.js +0 -31
  488. package/dist/context/context/get-canvas.js.map +0 -1
  489. package/dist/context/context/resize-context.d.ts +0 -20
  490. package/dist/context/context/resize-context.d.ts.map +0 -1
  491. package/dist/context/context/resize-context.js +0 -15
  492. package/dist/context/context/resize-context.js.map +0 -1
  493. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  494. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  495. package/dist/context/parameters/webgl-parameters.js +0 -2
  496. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  497. package/dist/debug/debug-program-configuration.d.ts +0 -2
  498. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  499. package/dist/debug/debug-program-configuration.js +0 -40
  500. package/dist/debug/debug-program-configuration.js.map +0 -1
  501. package/dist/debug/debug-uniforms.d.ts +0 -12
  502. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  503. package/dist/debug/debug-uniforms.js +0 -108
  504. package/dist/debug/debug-uniforms.js.map +0 -1
  505. package/dist/debug/debug-vertex-array.d.ts +0 -5
  506. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  507. package/dist/debug/debug-vertex-array.js +0 -118
  508. package/dist/debug/debug-vertex-array.js.map +0 -1
  509. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  510. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  511. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  512. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  513. package/dist/es5/classes/accessor.d.ts +0 -28
  514. package/dist/es5/classes/accessor.js.map +0 -1
  515. package/dist/es5/classes/accessor.ts.disabled +0 -159
  516. package/dist/es5/classes/clear.js +0 -135
  517. package/dist/es5/classes/clear.js.map +0 -1
  518. package/dist/es5/classes/copy-and-blit.js +0 -382
  519. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  520. package/dist/es5/classes/framebuffer.js +0 -807
  521. package/dist/es5/classes/framebuffer.js.map +0 -1
  522. package/dist/es5/classes/program-configuration.js +0 -119
  523. package/dist/es5/classes/program-configuration.js.map +0 -1
  524. package/dist/es5/classes/program.js +0 -471
  525. package/dist/es5/classes/program.js.map +0 -1
  526. package/dist/es5/classes/query.js +0 -222
  527. package/dist/es5/classes/query.js.map +0 -1
  528. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  529. package/dist/es5/classes/renderbuffer.js.map +0 -1
  530. package/dist/es5/classes/shader.js +0 -195
  531. package/dist/es5/classes/shader.js.map +0 -1
  532. package/dist/es5/classes/texture-2d.js.map +0 -1
  533. package/dist/es5/classes/texture-3d.js +0 -142
  534. package/dist/es5/classes/texture-3d.js.map +0 -1
  535. package/dist/es5/classes/texture-cube.js +0 -202
  536. package/dist/es5/classes/texture-cube.js.map +0 -1
  537. package/dist/es5/classes/texture-formats.js +0 -87
  538. package/dist/es5/classes/texture-formats.js.map +0 -1
  539. package/dist/es5/classes/texture.js.map +0 -1
  540. package/dist/es5/classes/transform-feedback.js +0 -267
  541. package/dist/es5/classes/transform-feedback.js.map +0 -1
  542. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  543. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  544. package/dist/es5/classes/uniforms.js +0 -232
  545. package/dist/es5/classes/uniforms.js.map +0 -1
  546. package/dist/es5/classes/vertex-array-object.js +0 -337
  547. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  548. package/dist/es5/classes/vertex-array.js +0 -465
  549. package/dist/es5/classes/vertex-array.js.map +0 -1
  550. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  551. package/dist/es5/classes/webgl-resource.js.map +0 -1
  552. package/dist/es5/context/context/get-canvas.js +0 -40
  553. package/dist/es5/context/context/get-canvas.js.map +0 -1
  554. package/dist/es5/context/context/resize-context.js +0 -23
  555. package/dist/es5/context/context/resize-context.js.map +0 -1
  556. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  557. package/dist/es5/debug/debug-program-configuration.js +0 -76
  558. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  559. package/dist/es5/debug/debug-uniforms.js +0 -156
  560. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  561. package/dist/es5/debug/debug-vertex-array.js +0 -126
  562. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  563. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  564. package/dist/es5/helpers/program-bindings.js +0 -2
  565. package/dist/es5/types/accessor.d.ts +0 -29
  566. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  567. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  568. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  569. package/dist/es5/webgl-utils/format-utils.js +0 -58
  570. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  571. package/dist/es5/webgl-utils/get-error.js +0 -49
  572. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  573. package/dist/es5/webgl-utils/index.js +0 -74
  574. package/dist/es5/webgl-utils/index.js.map +0 -1
  575. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  576. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  577. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  578. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  579. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  581. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  582. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  583. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  584. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  585. package/dist/esm/classes/accessor.d.ts +0 -28
  586. package/dist/esm/classes/accessor.js.map +0 -1
  587. package/dist/esm/classes/clear.js +0 -105
  588. package/dist/esm/classes/clear.js.map +0 -1
  589. package/dist/esm/classes/copy-and-blit.js +0 -338
  590. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  591. package/dist/esm/classes/framebuffer.js +0 -656
  592. package/dist/esm/classes/framebuffer.js.map +0 -1
  593. package/dist/esm/classes/program-configuration.js +0 -73
  594. package/dist/esm/classes/program-configuration.js.map +0 -1
  595. package/dist/esm/classes/program.js +0 -379
  596. package/dist/esm/classes/program.js.map +0 -1
  597. package/dist/esm/classes/query.js +0 -145
  598. package/dist/esm/classes/query.js.map +0 -1
  599. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  600. package/dist/esm/classes/renderbuffer.js.map +0 -1
  601. package/dist/esm/classes/shader.js +0 -118
  602. package/dist/esm/classes/shader.js.map +0 -1
  603. package/dist/esm/classes/texture-2d.js +0 -36
  604. package/dist/esm/classes/texture-2d.js.map +0 -1
  605. package/dist/esm/classes/texture-3d.js +0 -76
  606. package/dist/esm/classes/texture-3d.js.map +0 -1
  607. package/dist/esm/classes/texture-cube.js +0 -130
  608. package/dist/esm/classes/texture-cube.js.map +0 -1
  609. package/dist/esm/classes/texture-formats.js +0 -98
  610. package/dist/esm/classes/texture-formats.js.map +0 -1
  611. package/dist/esm/classes/texture.js.map +0 -1
  612. package/dist/esm/classes/transform-feedback.js +0 -198
  613. package/dist/esm/classes/transform-feedback.js.map +0 -1
  614. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  615. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  616. package/dist/esm/classes/uniforms.js +0 -250
  617. package/dist/esm/classes/uniforms.js.map +0 -1
  618. package/dist/esm/classes/vertex-array-object.js +0 -261
  619. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  620. package/dist/esm/classes/vertex-array.js +0 -408
  621. package/dist/esm/classes/vertex-array.js.map +0 -1
  622. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  623. package/dist/esm/classes/webgl-resource.js.map +0 -1
  624. package/dist/esm/context/context/get-canvas.js +0 -31
  625. package/dist/esm/context/context/get-canvas.js.map +0 -1
  626. package/dist/esm/context/context/resize-context.js +0 -15
  627. package/dist/esm/context/context/resize-context.js.map +0 -1
  628. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  629. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  630. package/dist/esm/debug/debug-program-configuration.js +0 -40
  631. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  632. package/dist/esm/debug/debug-uniforms.js +0 -108
  633. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  634. package/dist/esm/debug/debug-vertex-array.js +0 -118
  635. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  636. package/dist/esm/helpers/get-program-bindings.js +0 -228
  637. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  638. package/dist/esm/helpers/program-bindings.js +0 -2
  639. package/dist/esm/types/accessor.d.ts +0 -29
  640. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  641. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  642. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  643. package/dist/esm/webgl-utils/format-utils.js +0 -45
  644. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  645. package/dist/esm/webgl-utils/get-error.js +0 -41
  646. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  647. package/dist/esm/webgl-utils/index.js +0 -5
  648. package/dist/esm/webgl-utils/index.js.map +0 -1
  649. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  650. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  651. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  652. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  653. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  654. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  655. package/dist/helpers/get-program-bindings.d.ts +0 -8
  656. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  657. package/dist/helpers/get-program-bindings.js +0 -228
  658. package/dist/helpers/get-program-bindings.js.map +0 -1
  659. package/dist/helpers/program-bindings.d.ts +0 -41
  660. package/dist/helpers/program-bindings.d.ts.map +0 -1
  661. package/dist/helpers/program-bindings.js +0 -2
  662. package/dist/types/accessor.d.ts +0 -29
  663. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  664. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  665. package/dist/webgl-utils/attribute-utils.js +0 -182
  666. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  667. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  668. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  669. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  670. package/dist/webgl-utils/format-utils.d.ts +0 -3
  671. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  672. package/dist/webgl-utils/format-utils.js +0 -45
  673. package/dist/webgl-utils/format-utils.js.map +0 -1
  674. package/dist/webgl-utils/get-error.d.ts +0 -3
  675. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  676. package/dist/webgl-utils/get-error.js +0 -41
  677. package/dist/webgl-utils/get-error.js.map +0 -1
  678. package/dist/webgl-utils/index.d.ts +0 -5
  679. package/dist/webgl-utils/index.d.ts.map +0 -1
  680. package/dist/webgl-utils/index.js +0 -5
  681. package/dist/webgl-utils/index.js.map +0 -1
  682. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  683. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  684. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  685. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  686. package/dist/webgl-utils/request-animation-frame.js +0 -7
  687. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  688. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  689. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  690. package/dist/webgl-utils/texture-utils.js +0 -48
  691. package/dist/webgl-utils/texture-utils.js.map +0 -1
  692. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  693. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  694. package/src/.DS_Store +0 -0
  695. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  696. package/src/classes/accessor.d.ts +0 -28
  697. package/src/classes/accessor.js +0 -129
  698. package/src/classes/accessor.ts.disabled +0 -159
  699. package/src/classes/clear.ts +0 -108
  700. package/src/classes/copy-and-blit.ts +0 -460
  701. package/src/classes/framebuffer.ts +0 -763
  702. package/src/classes/program-configuration.ts +0 -77
  703. package/src/classes/program.ts +0 -431
  704. package/src/classes/query.ts +0 -171
  705. package/src/classes/renderbuffer.ts +0 -154
  706. package/src/classes/shader.ts +0 -129
  707. package/src/classes/texture-2d.ts +0 -35
  708. package/src/classes/texture-3d.ts +0 -123
  709. package/src/classes/texture-cube.ts +0 -162
  710. package/src/classes/texture-formats.ts +0 -171
  711. package/src/classes/texture.ts +0 -965
  712. package/src/classes/transform-feedback.ts +0 -191
  713. package/src/classes/uniform-buffer-layout.ts +0 -113
  714. package/src/classes/uniforms.ts +0 -394
  715. package/src/classes/vertex-array-object.ts +0 -339
  716. package/src/classes/vertex-array.ts +0 -484
  717. package/src/context/context/get-canvas.ts +0 -37
  718. package/src/context/context/resize-context.ts +0 -37
  719. package/src/context/parameters/webgl-parameters.ts +0 -197
  720. package/src/debug/debug-program-configuration.ts +0 -32
  721. package/src/debug/debug-uniforms.ts +0 -100
  722. package/src/debug/debug-vertex-array.ts +0 -123
  723. package/src/helpers/get-program-bindings.ts +0 -244
  724. package/src/helpers/program-bindings.ts +0 -46
  725. package/src/types/accessor.d.ts +0 -29
  726. package/src/webgl-utils/attribute-utils.ts +0 -171
  727. package/src/webgl-utils/format-utils.ts +0 -43
  728. package/src/webgl-utils/get-error.ts +0 -56
  729. package/src/webgl-utils/index.ts +0 -12
  730. package/src/webgl-utils/request-animation-frame.ts +0 -14
  731. 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
+ };