@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.5

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 (701) hide show
  1. package/LICENSE +8 -1
  2. package/dist/_deprecated/context-api.d.ts +85 -0
  3. package/dist/_deprecated/context-api.d.ts.map +1 -0
  4. package/dist/_deprecated/context-api.js +76 -0
  5. package/dist/_deprecated/context-api.js.map +1 -0
  6. package/dist/{features/webgl-features-table.d.ts → _deprecated/features.d.ts} +4 -7
  7. package/dist/_deprecated/features.d.ts.map +1 -0
  8. package/dist/_deprecated/features.js +111 -0
  9. package/dist/_deprecated/features.js.map +1 -0
  10. package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
  11. package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/set-device-parameters.js +124 -0
  13. package/dist/adapter/converters/set-device-parameters.js.map +1 -0
  14. package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
  15. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
  17. package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
  18. package/dist/adapter/device-helpers/device-features.d.ts +12 -0
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
  20. package/dist/adapter/device-helpers/device-features.js +123 -0
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/device-limits.js +90 -0
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
  28. package/dist/adapter/device-helpers/get-device-info.js +44 -0
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  30. package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
  31. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
  32. package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  33. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  34. package/dist/adapter/webgl-device.d.ts +110 -0
  35. package/dist/adapter/webgl-device.d.ts.map +1 -0
  36. package/dist/adapter/webgl-device.js +207 -0
  37. package/dist/adapter/webgl-device.js.map +1 -0
  38. package/dist/adapter/webgl-shader.d.ts +18 -0
  39. package/dist/adapter/webgl-shader.d.ts.map +1 -0
  40. package/dist/adapter/webgl-shader.js +82 -0
  41. package/dist/adapter/webgl-shader.js.map +1 -0
  42. package/dist/classes/accessor.js +2 -2
  43. package/dist/classes/accessor.js.map +1 -1
  44. package/dist/classes/accessor.ts.disabled +1 -1
  45. package/dist/classes/clear.d.ts +3 -2
  46. package/dist/classes/clear.d.ts.map +1 -1
  47. package/dist/classes/clear.js +7 -4
  48. package/dist/classes/clear.js.map +1 -1
  49. package/dist/classes/copy-and-blit.d.ts +18 -1
  50. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  51. package/dist/classes/copy-and-blit.js +30 -25
  52. package/dist/classes/copy-and-blit.js.map +1 -1
  53. package/dist/classes/framebuffer.d.ts +10 -1
  54. package/dist/classes/framebuffer.d.ts.map +1 -1
  55. package/dist/classes/framebuffer.js +15 -15
  56. package/dist/classes/framebuffer.js.map +1 -1
  57. package/dist/classes/program-configuration.d.ts +14 -17
  58. package/dist/classes/program-configuration.d.ts.map +1 -1
  59. package/dist/classes/program-configuration.js +10 -97
  60. package/dist/classes/program-configuration.js.map +1 -1
  61. package/dist/classes/program.d.ts +25 -20
  62. package/dist/classes/program.d.ts.map +1 -1
  63. package/dist/classes/program.js +39 -28
  64. package/dist/classes/program.js.map +1 -1
  65. package/dist/classes/query.d.ts.map +1 -1
  66. package/dist/classes/query.js +6 -5
  67. package/dist/classes/query.js.map +1 -1
  68. package/dist/classes/renderbuffer-formats.js +1 -1
  69. package/dist/classes/renderbuffer-formats.js.map +1 -1
  70. package/dist/classes/renderbuffer.d.ts.map +1 -1
  71. package/dist/classes/renderbuffer.js +4 -3
  72. package/dist/classes/renderbuffer.js.map +1 -1
  73. package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -13
  74. package/dist/classes/shader.d.ts.map +1 -0
  75. package/dist/classes/{webgl-shader.js → shader.js} +7 -79
  76. package/dist/classes/shader.js.map +1 -0
  77. package/dist/classes/texture-2d.d.ts +4 -3
  78. package/dist/classes/texture-2d.d.ts.map +1 -1
  79. package/dist/classes/texture-2d.js +5 -8
  80. package/dist/classes/texture-2d.js.map +1 -1
  81. package/dist/classes/texture-3d.d.ts +3 -2
  82. package/dist/classes/texture-3d.d.ts.map +1 -1
  83. package/dist/classes/texture-3d.js +15 -6
  84. package/dist/classes/texture-3d.js.map +1 -1
  85. package/dist/classes/texture-cube.d.ts +2 -1
  86. package/dist/classes/texture-cube.d.ts.map +1 -1
  87. package/dist/classes/texture-cube.js +3 -4
  88. package/dist/classes/texture-cube.js.map +1 -1
  89. package/dist/classes/texture-formats.js +1 -1
  90. package/dist/classes/texture-formats.js.map +1 -1
  91. package/dist/classes/texture.d.ts +14 -9
  92. package/dist/classes/texture.d.ts.map +1 -1
  93. package/dist/classes/texture.js +19 -18
  94. package/dist/classes/texture.js.map +1 -1
  95. package/dist/classes/transform-feedback.d.ts.map +1 -1
  96. package/dist/classes/transform-feedback.js +5 -4
  97. package/dist/classes/transform-feedback.js.map +1 -1
  98. package/dist/classes/uniform-buffer-layout.js +1 -1
  99. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  100. package/dist/classes/uniforms.d.ts +0 -1
  101. package/dist/classes/uniforms.d.ts.map +1 -1
  102. package/dist/classes/uniforms.js +1 -2
  103. package/dist/classes/uniforms.js.map +1 -1
  104. package/dist/classes/vertex-array-object.d.ts +7 -6
  105. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  106. package/dist/classes/vertex-array-object.js +11 -12
  107. package/dist/classes/vertex-array-object.js.map +1 -1
  108. package/dist/classes/vertex-array.d.ts +14 -14
  109. package/dist/classes/vertex-array.d.ts.map +1 -1
  110. package/dist/classes/vertex-array.js +3 -4
  111. package/dist/classes/vertex-array.js.map +1 -1
  112. package/dist/classes/webgl-buffer.d.ts +2 -0
  113. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  114. package/dist/classes/webgl-buffer.js +8 -5
  115. package/dist/classes/webgl-buffer.js.map +1 -1
  116. package/dist/classes/webgl-resource.d.ts +6 -4
  117. package/dist/classes/webgl-resource.d.ts.map +1 -1
  118. package/dist/classes/webgl-resource.js +12 -8
  119. package/dist/classes/webgl-resource.js.map +1 -1
  120. package/dist/context/context/context-state.d.ts +18 -0
  121. package/dist/context/context/context-state.d.ts.map +1 -0
  122. package/dist/context/context/context-state.js +26 -0
  123. package/dist/context/context/context-state.js.map +1 -0
  124. package/dist/context/context/create-context.d.ts +40 -0
  125. package/dist/context/context/create-context.d.ts.map +1 -0
  126. package/dist/context/context/create-context.js +37 -0
  127. package/dist/context/context/create-context.js.map +1 -0
  128. package/dist/context/context/device-pixels.d.ts +25 -0
  129. package/dist/context/context/device-pixels.d.ts.map +1 -0
  130. package/dist/context/context/device-pixels.js +98 -0
  131. package/dist/context/context/device-pixels.js.map +1 -0
  132. package/dist/context/context/get-canvas.d.ts +13 -0
  133. package/dist/context/context/get-canvas.d.ts.map +1 -0
  134. package/dist/context/context/get-canvas.js +31 -0
  135. package/dist/context/context/get-canvas.js.map +1 -0
  136. package/dist/context/context/resize-context.d.ts +20 -0
  137. package/dist/context/context/resize-context.d.ts.map +1 -0
  138. package/dist/context/context/resize-context.js +15 -0
  139. package/dist/context/context/resize-context.js.map +1 -0
  140. package/dist/context/context/webgl-checks.d.ts +13 -0
  141. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  142. package/dist/context/context/webgl-checks.js +34 -0
  143. package/dist/context/context/webgl-checks.js.map +1 -0
  144. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  145. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.js +65 -0
  147. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  148. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  149. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  150. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  151. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  152. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  153. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  154. package/dist/context/parameters/webgl-parameters.js +2 -0
  155. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  156. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  157. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  158. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  159. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  160. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  161. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  162. package/dist/context/polyfill/polyfill-context.js +91 -0
  163. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  164. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  165. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  166. package/dist/context/polyfill/polyfill-table.js +160 -0
  167. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  168. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  169. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  170. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  171. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  172. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  173. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  174. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  175. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  176. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  177. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  178. package/dist/context/state-tracker/track-context-state.js +169 -0
  179. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  180. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  181. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  182. package/dist/context/state-tracker/with-parameters.js +36 -0
  183. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  184. package/dist/debug/debug-uniforms.js +1 -1
  185. package/dist/debug/debug-uniforms.js.map +1 -1
  186. package/dist/debug/debug-vertex-array.js +2 -2
  187. package/dist/debug/debug-vertex-array.js.map +1 -1
  188. package/dist/es5/_deprecated/context-api.js +116 -0
  189. package/dist/es5/_deprecated/context-api.js.map +1 -0
  190. package/dist/es5/_deprecated/features.js +118 -0
  191. package/dist/es5/_deprecated/features.js.map +1 -0
  192. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  193. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  194. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  195. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  196. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  197. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  198. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  199. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  200. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  201. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  202. package/dist/es5/adapter/device-helpers/is-old-ie.js +16 -0
  203. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  204. package/dist/es5/adapter/webgl-device.js +279 -0
  205. package/dist/es5/adapter/webgl-device.js.map +1 -0
  206. package/dist/es5/adapter/webgl-shader.js +155 -0
  207. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  208. package/dist/es5/bundle.js +1 -1
  209. package/dist/es5/bundle.js.map +1 -1
  210. package/dist/es5/classes/accessor.js +104 -74
  211. package/dist/es5/classes/accessor.js.map +1 -1
  212. package/dist/es5/classes/accessor.ts.disabled +1 -1
  213. package/dist/es5/classes/clear.js +55 -34
  214. package/dist/es5/classes/clear.js.map +1 -1
  215. package/dist/es5/classes/copy-and-blit.js +175 -156
  216. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  217. package/dist/es5/classes/framebuffer.js +647 -518
  218. package/dist/es5/classes/framebuffer.js.map +1 -1
  219. package/dist/es5/classes/program-configuration.js +78 -128
  220. package/dist/es5/classes/program-configuration.js.map +1 -1
  221. package/dist/es5/classes/program.js +379 -292
  222. package/dist/es5/classes/program.js.map +1 -1
  223. package/dist/es5/classes/query.js +172 -107
  224. package/dist/es5/classes/query.js.map +1 -1
  225. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  226. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  227. package/dist/es5/classes/renderbuffer.js +151 -98
  228. package/dist/es5/classes/renderbuffer.js.map +1 -1
  229. package/dist/es5/classes/shader.js +195 -0
  230. package/dist/es5/classes/shader.js.map +1 -0
  231. package/dist/es5/classes/texture-2d.js +44 -17
  232. package/dist/es5/classes/texture-2d.js.map +1 -1
  233. package/dist/es5/classes/texture-3d.js +107 -48
  234. package/dist/es5/classes/texture-3d.js.map +1 -1
  235. package/dist/es5/classes/texture-cube.js +169 -110
  236. package/dist/es5/classes/texture-cube.js.map +1 -1
  237. package/dist/es5/classes/texture-formats.js +42 -71
  238. package/dist/es5/classes/texture-formats.js.map +1 -1
  239. package/dist/es5/classes/texture.js +780 -665
  240. package/dist/es5/classes/texture.js.map +1 -1
  241. package/dist/es5/classes/transform-feedback.js +206 -150
  242. package/dist/es5/classes/transform-feedback.js.map +1 -1
  243. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  244. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  245. package/dist/es5/classes/uniforms.js +39 -80
  246. package/dist/es5/classes/uniforms.js.map +1 -1
  247. package/dist/es5/classes/vertex-array-object.js +268 -209
  248. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  249. package/dist/es5/classes/vertex-array.js +348 -303
  250. package/dist/es5/classes/vertex-array.js.map +1 -1
  251. package/dist/es5/classes/webgl-buffer.js +374 -303
  252. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  253. package/dist/es5/classes/webgl-resource.js +231 -161
  254. package/dist/es5/classes/webgl-resource.js.map +1 -1
  255. package/dist/es5/context/context/context-state.js +31 -0
  256. package/dist/es5/context/context/context-state.js.map +1 -0
  257. package/dist/es5/context/context/create-context.js +57 -0
  258. package/dist/es5/context/context/create-context.js.map +1 -0
  259. package/dist/es5/context/context/device-pixels.js +115 -0
  260. package/dist/es5/context/context/device-pixels.js.map +1 -0
  261. package/dist/es5/context/context/get-canvas.js +40 -0
  262. package/dist/es5/context/context/get-canvas.js.map +1 -0
  263. package/dist/es5/context/context/resize-context.js +23 -0
  264. package/dist/es5/context/context/resize-context.js.map +1 -0
  265. package/dist/es5/context/context/webgl-checks.js +54 -0
  266. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  267. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  268. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  269. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  270. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  271. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  272. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  273. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  274. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  275. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  276. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  277. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  278. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  279. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  280. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  281. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  282. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  283. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  284. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  285. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  286. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  287. package/dist/es5/debug/debug-program-configuration.js +48 -20
  288. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  289. package/dist/es5/debug/debug-uniforms.js +110 -70
  290. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  291. package/dist/es5/debug/debug-vertex-array.js +49 -54
  292. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  293. package/dist/es5/helpers/get-program-bindings.js +274 -0
  294. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  295. package/dist/es5/helpers/program-bindings.js +2 -0
  296. package/dist/es5/helpers/program-bindings.js.map +1 -0
  297. package/dist/es5/index.js +268 -192
  298. package/dist/es5/index.js.map +1 -1
  299. package/dist/es5/init.js +18 -14
  300. package/dist/es5/init.js.map +1 -1
  301. package/dist/es5/types/accessor.d.ts +29 -0
  302. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  303. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  304. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  305. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  306. package/dist/es5/webgl-utils/format-utils.js +4 -4
  307. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  308. package/dist/es5/webgl-utils/get-error.js +18 -18
  309. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  310. package/dist/es5/webgl-utils/index.js +10 -10
  311. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  312. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  313. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  314. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  316. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  317. package/dist/esm/_deprecated/context-api.js +76 -0
  318. package/dist/esm/_deprecated/context-api.js.map +1 -0
  319. package/dist/esm/_deprecated/features.js +111 -0
  320. package/dist/esm/_deprecated/features.js.map +1 -0
  321. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  322. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  323. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  324. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  325. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  326. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  327. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  328. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  329. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  330. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  331. package/dist/{features/check-old-ie.js → esm/adapter/device-helpers/is-old-ie.js} +3 -3
  332. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  333. package/dist/esm/adapter/webgl-device.js +207 -0
  334. package/dist/esm/adapter/webgl-device.js.map +1 -0
  335. package/dist/esm/adapter/webgl-shader.js +82 -0
  336. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  337. package/dist/esm/classes/accessor.js +2 -2
  338. package/dist/esm/classes/accessor.js.map +1 -1
  339. package/dist/esm/classes/accessor.ts.disabled +1 -1
  340. package/dist/esm/classes/clear.js +7 -4
  341. package/dist/esm/classes/clear.js.map +1 -1
  342. package/dist/esm/classes/copy-and-blit.js +30 -25
  343. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  344. package/dist/esm/classes/framebuffer.js +15 -15
  345. package/dist/esm/classes/framebuffer.js.map +1 -1
  346. package/dist/esm/classes/program-configuration.js +10 -97
  347. package/dist/esm/classes/program-configuration.js.map +1 -1
  348. package/dist/esm/classes/program.js +39 -28
  349. package/dist/esm/classes/program.js.map +1 -1
  350. package/dist/esm/classes/query.js +6 -5
  351. package/dist/esm/classes/query.js.map +1 -1
  352. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  353. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  354. package/dist/esm/classes/renderbuffer.js +4 -3
  355. package/dist/esm/classes/renderbuffer.js.map +1 -1
  356. package/dist/esm/classes/{webgl-shader.js → shader.js} +7 -79
  357. package/dist/esm/classes/shader.js.map +1 -0
  358. package/dist/esm/classes/texture-2d.js +5 -8
  359. package/dist/esm/classes/texture-2d.js.map +1 -1
  360. package/dist/esm/classes/texture-3d.js +15 -6
  361. package/dist/esm/classes/texture-3d.js.map +1 -1
  362. package/dist/esm/classes/texture-cube.js +3 -4
  363. package/dist/esm/classes/texture-cube.js.map +1 -1
  364. package/dist/esm/classes/texture-formats.js +1 -1
  365. package/dist/esm/classes/texture-formats.js.map +1 -1
  366. package/dist/esm/classes/texture.js +19 -18
  367. package/dist/esm/classes/texture.js.map +1 -1
  368. package/dist/esm/classes/transform-feedback.js +5 -4
  369. package/dist/esm/classes/transform-feedback.js.map +1 -1
  370. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  371. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  372. package/dist/esm/classes/uniforms.js +1 -2
  373. package/dist/esm/classes/uniforms.js.map +1 -1
  374. package/dist/esm/classes/vertex-array-object.js +11 -12
  375. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  376. package/dist/esm/classes/vertex-array.js +3 -4
  377. package/dist/esm/classes/vertex-array.js.map +1 -1
  378. package/dist/esm/classes/webgl-buffer.js +8 -5
  379. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  380. package/dist/esm/classes/webgl-resource.js +12 -8
  381. package/dist/esm/classes/webgl-resource.js.map +1 -1
  382. package/dist/esm/context/context/context-state.js +26 -0
  383. package/dist/esm/context/context/context-state.js.map +1 -0
  384. package/dist/esm/context/context/create-context.js +37 -0
  385. package/dist/esm/context/context/create-context.js.map +1 -0
  386. package/dist/esm/context/context/device-pixels.js +98 -0
  387. package/dist/esm/context/context/device-pixels.js.map +1 -0
  388. package/dist/esm/context/context/get-canvas.js +31 -0
  389. package/dist/esm/context/context/get-canvas.js.map +1 -0
  390. package/dist/esm/context/context/resize-context.js +15 -0
  391. package/dist/esm/context/context/resize-context.js.map +1 -0
  392. package/dist/esm/context/context/webgl-checks.js +34 -0
  393. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  394. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  395. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  396. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  397. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  398. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  399. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  400. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  401. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  402. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  403. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  404. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  405. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  406. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  407. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  408. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  409. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  410. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  411. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  412. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  413. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  414. package/dist/esm/debug/debug-uniforms.js +1 -1
  415. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  416. package/dist/esm/debug/debug-vertex-array.js +2 -2
  417. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  418. package/dist/esm/helpers/get-program-bindings.js +228 -0
  419. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  420. package/dist/esm/helpers/program-bindings.js +2 -0
  421. package/dist/esm/helpers/program-bindings.js.map +1 -0
  422. package/dist/esm/index.js +26 -20
  423. package/dist/esm/index.js.map +1 -1
  424. package/dist/esm/init.js +11 -8
  425. package/dist/esm/init.js.map +1 -1
  426. package/dist/esm/types/accessor.d.ts +29 -0
  427. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  428. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  429. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  430. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  431. package/dist/esm/webgl-utils/format-utils.js +1 -1
  432. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  433. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  434. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  435. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  436. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  437. package/dist/helpers/get-program-bindings.d.ts +8 -0
  438. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  439. package/dist/helpers/get-program-bindings.js +228 -0
  440. package/dist/helpers/get-program-bindings.js.map +1 -0
  441. package/dist/helpers/program-bindings.d.ts +41 -0
  442. package/dist/helpers/program-bindings.d.ts.map +1 -0
  443. package/dist/helpers/program-bindings.js +2 -0
  444. package/dist/helpers/program-bindings.js.map +1 -0
  445. package/dist/index.d.ts +41 -20
  446. package/dist/index.d.ts.map +1 -1
  447. package/dist/index.js +26 -20
  448. package/dist/index.js.map +1 -1
  449. package/dist/init.d.ts.map +1 -1
  450. package/dist/init.js +11 -8
  451. package/dist/init.js.map +1 -1
  452. package/dist/types/accessor.d.ts +29 -0
  453. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  454. package/dist/webgl-utils/attribute-utils.js +1 -1
  455. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  456. package/dist/webgl-utils/constants-to-keys.js +1 -1
  457. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  458. package/dist/webgl-utils/format-utils.d.ts +2 -2
  459. package/dist/webgl-utils/format-utils.js +1 -1
  460. package/dist/webgl-utils/format-utils.js.map +1 -1
  461. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  462. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  463. package/dist/webgl-utils/texture-utils.js +2 -2
  464. package/dist/webgl-utils/texture-utils.js.map +1 -1
  465. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  466. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  467. package/dist/webgl-utils/typed-array-utils.js +22 -18
  468. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  469. package/package.json +5 -6
  470. package/src/.DS_Store +0 -0
  471. package/src/_deprecated/context-api.ts +146 -0
  472. package/src/_deprecated/features.ts +159 -0
  473. package/src/adapter/converters/set-device-parameters.ts +182 -0
  474. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  475. package/src/adapter/device-helpers/device-features.ts +227 -0
  476. package/src/adapter/device-helpers/device-limits.ts +150 -0
  477. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  478. package/src/{features/check-old-ie.ts → adapter/device-helpers/is-old-ie.ts} +3 -3
  479. package/src/adapter/webgl-device.ts +399 -0
  480. package/src/adapter/webgl-shader.ts +84 -0
  481. package/src/classes/accessor.js +2 -2
  482. package/src/classes/accessor.ts.disabled +1 -1
  483. package/src/classes/clear.ts +9 -4
  484. package/src/classes/copy-and-blit.ts +49 -52
  485. package/src/classes/framebuffer.ts +38 -35
  486. package/src/classes/program-configuration.ts +28 -81
  487. package/src/classes/program.ts +89 -75
  488. package/src/classes/query.ts +6 -6
  489. package/src/classes/renderbuffer-formats.ts +1 -1
  490. package/src/classes/renderbuffer.ts +5 -4
  491. package/src/classes/{webgl-shader.ts → shader.ts} +7 -78
  492. package/src/classes/texture-2d.ts +6 -11
  493. package/src/classes/texture-3d.ts +16 -11
  494. package/src/classes/texture-cube.ts +7 -7
  495. package/src/classes/texture-formats.ts +1 -1
  496. package/src/classes/texture.ts +39 -40
  497. package/src/classes/transform-feedback.ts +14 -13
  498. package/src/classes/uniform-buffer-layout.ts +1 -1
  499. package/src/classes/uniforms.ts +4 -10
  500. package/src/classes/vertex-array-object.ts +17 -20
  501. package/src/classes/vertex-array.ts +16 -11
  502. package/src/classes/webgl-buffer.ts +7 -5
  503. package/src/classes/webgl-resource.ts +20 -18
  504. package/src/context/context/context-state.ts +39 -0
  505. package/src/context/context/create-context.ts +83 -0
  506. package/src/context/context/device-pixels.ts +147 -0
  507. package/src/context/context/get-canvas.ts +37 -0
  508. package/src/context/context/resize-context.ts +37 -0
  509. package/src/context/context/webgl-checks.ts +49 -0
  510. package/src/context/parameters/unified-parameter-api.ts +128 -0
  511. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  512. package/src/context/parameters/webgl-parameters.ts +197 -0
  513. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  514. package/src/context/polyfill/polyfill-context.ts +98 -0
  515. package/src/context/polyfill/polyfill-table.ts +162 -0
  516. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  517. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  518. package/src/context/state-tracker/track-context-state.ts +250 -0
  519. package/src/context/state-tracker/with-parameters.ts +50 -0
  520. package/src/debug/debug-uniforms.ts +1 -1
  521. package/src/debug/debug-vertex-array.ts +2 -4
  522. package/src/helpers/get-program-bindings.ts +244 -0
  523. package/src/helpers/program-bindings.ts +46 -0
  524. package/src/index.ts +94 -23
  525. package/src/init.ts +12 -9
  526. package/src/types/accessor.d.ts +29 -0
  527. package/src/types.ts +1 -1
  528. package/src/webgl-utils/attribute-utils.ts +1 -1
  529. package/src/webgl-utils/constants-to-keys.ts +1 -1
  530. package/src/webgl-utils/format-utils.ts +1 -1
  531. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  532. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  533. package/dist/classes/webgl-shader.d.ts.map +0 -1
  534. package/dist/classes/webgl-shader.js.map +0 -1
  535. package/dist/context/gl-context.d.ts +0 -15
  536. package/dist/context/gl-context.d.ts.map +0 -1
  537. package/dist/context/gl-context.js +0 -32
  538. package/dist/context/gl-context.js.map +0 -1
  539. package/dist/context/luma-context-data.d.ts +0 -31
  540. package/dist/context/luma-context-data.d.ts.map +0 -1
  541. package/dist/context/luma-context-data.js +0 -5
  542. package/dist/context/luma-context-data.js.map +0 -1
  543. package/dist/es5/classes/webgl-shader.js +0 -213
  544. package/dist/es5/classes/webgl-shader.js.map +0 -1
  545. package/dist/es5/context/gl-context.js +0 -46
  546. package/dist/es5/context/gl-context.js.map +0 -1
  547. package/dist/es5/context/luma-context-data.js +0 -12
  548. package/dist/es5/context/luma-context-data.js.map +0 -1
  549. package/dist/es5/features/check-glsl-extension.js +0 -40
  550. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  551. package/dist/es5/features/check-old-ie.js +0 -15
  552. package/dist/es5/features/check-old-ie.js.map +0 -1
  553. package/dist/es5/features/features.js +0 -85
  554. package/dist/es5/features/features.js.map +0 -1
  555. package/dist/es5/features/index.js +0 -64
  556. package/dist/es5/features/index.js.map +0 -1
  557. package/dist/es5/features/limits.js +0 -72
  558. package/dist/es5/features/limits.js.map +0 -1
  559. package/dist/es5/features/webgl-features-table.js +0 -84
  560. package/dist/es5/features/webgl-features-table.js.map +0 -1
  561. package/dist/es5/features/webgl-limits-table.js +0 -172
  562. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  563. package/dist/es5/utils/array-utils-flat.js +0 -50
  564. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  565. package/dist/es5/utils/assert.js +0 -13
  566. package/dist/es5/utils/assert.js.map +0 -1
  567. package/dist/es5/utils/check-props.js +0 -50
  568. package/dist/es5/utils/check-props.js.map +0 -1
  569. package/dist/es5/utils/format-value.js +0 -57
  570. package/dist/es5/utils/format-value.js.map +0 -1
  571. package/dist/es5/utils/index.js +0 -68
  572. package/dist/es5/utils/index.js.map +0 -1
  573. package/dist/es5/utils/is-old-ie.js +0 -13
  574. package/dist/es5/utils/is-old-ie.js.map +0 -1
  575. package/dist/es5/utils/load-file.js +0 -43
  576. package/dist/es5/utils/load-file.js.map +0 -1
  577. package/dist/es5/utils/stub-methods.js +0 -25
  578. package/dist/es5/utils/stub-methods.js.map +0 -1
  579. package/dist/es5/utils/utils.js +0 -31
  580. package/dist/es5/utils/utils.js.map +0 -1
  581. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  582. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  583. package/dist/esm/classes/webgl-shader.js.map +0 -1
  584. package/dist/esm/context/gl-context.js +0 -32
  585. package/dist/esm/context/gl-context.js.map +0 -1
  586. package/dist/esm/context/luma-context-data.js +0 -5
  587. package/dist/esm/context/luma-context-data.js.map +0 -1
  588. package/dist/esm/features/check-glsl-extension.js +0 -27
  589. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  590. package/dist/esm/features/check-old-ie.js.map +0 -1
  591. package/dist/esm/features/features.js +0 -67
  592. package/dist/esm/features/features.js.map +0 -1
  593. package/dist/esm/features/index.js +0 -5
  594. package/dist/esm/features/index.js.map +0 -1
  595. package/dist/esm/features/limits.js +0 -55
  596. package/dist/esm/features/limits.js.map +0 -1
  597. package/dist/esm/features/webgl-features-table.js +0 -71
  598. package/dist/esm/features/webgl-features-table.js.map +0 -1
  599. package/dist/esm/features/webgl-limits-table.js +0 -161
  600. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  601. package/dist/esm/utils/array-utils-flat.js +0 -39
  602. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  603. package/dist/esm/utils/assert.js +0 -6
  604. package/dist/esm/utils/assert.js.map +0 -1
  605. package/dist/esm/utils/check-props.js +0 -38
  606. package/dist/esm/utils/check-props.js.map +0 -1
  607. package/dist/esm/utils/format-value.js +0 -50
  608. package/dist/esm/utils/format-value.js.map +0 -1
  609. package/dist/esm/utils/index.js +0 -7
  610. package/dist/esm/utils/index.js.map +0 -1
  611. package/dist/esm/utils/is-old-ie.js +0 -5
  612. package/dist/esm/utils/is-old-ie.js.map +0 -1
  613. package/dist/esm/utils/load-file.js +0 -30
  614. package/dist/esm/utils/load-file.js.map +0 -1
  615. package/dist/esm/utils/stub-methods.js +0 -16
  616. package/dist/esm/utils/stub-methods.js.map +0 -1
  617. package/dist/esm/utils/utils.js +0 -20
  618. package/dist/esm/utils/utils.js.map +0 -1
  619. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  620. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  621. package/dist/features/check-glsl-extension.d.ts +0 -2
  622. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  623. package/dist/features/check-glsl-extension.js +0 -27
  624. package/dist/features/check-glsl-extension.js.map +0 -1
  625. package/dist/features/check-old-ie.d.ts +0 -2
  626. package/dist/features/check-old-ie.d.ts.map +0 -1
  627. package/dist/features/check-old-ie.js.map +0 -1
  628. package/dist/features/features.d.ts +0 -6
  629. package/dist/features/features.d.ts.map +0 -1
  630. package/dist/features/features.js +0 -67
  631. package/dist/features/features.js.map +0 -1
  632. package/dist/features/index.d.ts +0 -5
  633. package/dist/features/index.d.ts.map +0 -1
  634. package/dist/features/index.js +0 -5
  635. package/dist/features/index.js.map +0 -1
  636. package/dist/features/limits.d.ts +0 -28
  637. package/dist/features/limits.d.ts.map +0 -1
  638. package/dist/features/limits.js +0 -55
  639. package/dist/features/limits.js.map +0 -1
  640. package/dist/features/webgl-features-table.d.ts.map +0 -1
  641. package/dist/features/webgl-features-table.js +0 -71
  642. package/dist/features/webgl-features-table.js.map +0 -1
  643. package/dist/features/webgl-limits-table.d.ts +0 -161
  644. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  645. package/dist/features/webgl-limits-table.js +0 -161
  646. package/dist/features/webgl-limits-table.js.map +0 -1
  647. package/dist/utils/array-utils-flat.d.ts +0 -9
  648. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  649. package/dist/utils/array-utils-flat.js +0 -39
  650. package/dist/utils/array-utils-flat.js.map +0 -1
  651. package/dist/utils/assert.d.ts +0 -2
  652. package/dist/utils/assert.d.ts.map +0 -1
  653. package/dist/utils/assert.js +0 -6
  654. package/dist/utils/assert.js.map +0 -1
  655. package/dist/utils/check-props.d.ts +0 -2
  656. package/dist/utils/check-props.d.ts.map +0 -1
  657. package/dist/utils/check-props.js +0 -38
  658. package/dist/utils/check-props.js.map +0 -1
  659. package/dist/utils/format-value.d.ts +0 -5
  660. package/dist/utils/format-value.d.ts.map +0 -1
  661. package/dist/utils/format-value.js +0 -50
  662. package/dist/utils/format-value.js.map +0 -1
  663. package/dist/utils/index.d.ts +0 -7
  664. package/dist/utils/index.d.ts.map +0 -1
  665. package/dist/utils/index.js +0 -7
  666. package/dist/utils/index.js.map +0 -1
  667. package/dist/utils/is-old-ie.d.ts +0 -4
  668. package/dist/utils/is-old-ie.d.ts.map +0 -1
  669. package/dist/utils/is-old-ie.js +0 -5
  670. package/dist/utils/is-old-ie.js.map +0 -1
  671. package/dist/utils/load-file.d.ts +0 -4
  672. package/dist/utils/load-file.d.ts.map +0 -1
  673. package/dist/utils/load-file.js +0 -30
  674. package/dist/utils/load-file.js.map +0 -1
  675. package/dist/utils/stub-methods.d.ts +0 -2
  676. package/dist/utils/stub-methods.d.ts.map +0 -1
  677. package/dist/utils/stub-methods.js +0 -16
  678. package/dist/utils/stub-methods.js.map +0 -1
  679. package/dist/utils/utils.d.ts +0 -15
  680. package/dist/utils/utils.d.ts.map +0 -1
  681. package/dist/utils/utils.js +0 -20
  682. package/dist/utils/utils.js.map +0 -1
  683. package/src/context/gl-context.ts +0 -31
  684. package/src/context/luma-context-data.ts +0 -27
  685. package/src/features/check-glsl-extension.ts +0 -34
  686. package/src/features/features.ts +0 -80
  687. package/src/features/index.ts +0 -5
  688. package/src/features/limits.ts +0 -66
  689. package/src/features/webgl-features-table.ts +0 -104
  690. package/src/features/webgl-limits-table.ts +0 -51
  691. package/src/utils/array-utils-flat.ts +0 -56
  692. package/src/utils/assert.ts +0 -7
  693. package/src/utils/check-props.ts +0 -68
  694. package/src/utils/format-value.ts +0 -37
  695. package/src/utils/index.ts +0 -6
  696. package/src/utils/is-old-ie.ts +0 -6
  697. package/src/utils/load-file.ts +0 -40
  698. package/src/utils/stub-methods.ts +0 -20
  699. package/src/utils/utils.ts +0 -35
  700. package/src/webgl-utils/texture-utils.d.ts +0 -11
  701. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -0,0 +1,244 @@
1
+ import GL from '@luma.gl/constants';
2
+ import {isWebGL2} from '../context/context/webgl-checks';
3
+ import {ProgramBindings, AttributeBinding, UniformBinding, UniformBlockBinding, VaryingBinding} from './program-bindings'
4
+ import Accessor from '../classes/accessor';
5
+ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
6
+
7
+ /**
8
+ * Extract metadata describing binding information for a program's shaders
9
+ * Note: `linkProgram()` needs to have been called
10
+ * (although linking does not need to have been successful).
11
+ */
12
+ export function getProgramBindings(gl: WebGL2RenderingContext, program: WebGLProgram): ProgramBindings {
13
+ const config: ProgramBindings = {
14
+ attributes: readAttributeBindings(gl, program),
15
+ uniforms: readUniformBindings(gl, program),
16
+ uniformBlocks: readUniformBlocks(gl, program),
17
+ varyings: readVaryings(gl, program)
18
+ };
19
+
20
+ Object.seal(config);
21
+ return config;
22
+ // generateWebGPUStyleBindings(bindings);
23
+ }
24
+
25
+
26
+ /**
27
+ * Extract info about all transform feedback varyings
28
+ *
29
+ * linkProgram needs to have been called, although linking does not need to have been successful
30
+ */
31
+ function readAttributeBindings(gl: WebGL2RenderingContext, program: WebGLProgram): AttributeBinding[] {
32
+ const attributes: AttributeBinding[] = [];
33
+
34
+ const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
35
+
36
+ for (let index = 0; index < count; index++) {
37
+ const {name, type: compositeType, size} = gl.getActiveAttrib(program, index);
38
+ const location = gl.getAttribLocation(program, name);
39
+ // Add only user provided attributes, for built-in attributes like
40
+ // `gl_InstanceID` locaiton will be < 0
41
+ if (location >= 0) {
42
+ const {type, components} = decomposeCompositeGLType(compositeType);
43
+ const accessor = {type, size: size * components};
44
+ inferProperties(location, name, accessor);
45
+
46
+ const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values
47
+ attributes.push(attributeInfo);
48
+ }
49
+ }
50
+
51
+ attributes.sort((a, b) => a.location - b.location);
52
+ return attributes;
53
+ }
54
+
55
+ /**
56
+ * Extract info about all transform feedback varyings
57
+ *
58
+ * linkProgram needs to have been called, although linking does not need to have been successful
59
+ */
60
+ function readVaryings(gl: WebGL2RenderingContext, program: WebGLProgram): VaryingBinding[] {
61
+ if (!isWebGL2(gl)) {
62
+ return [];
63
+ }
64
+
65
+ const varyings = [];
66
+
67
+ const count = gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS);
68
+ for (let location = 0; location < count; location++) {
69
+ const {name, type: compositeType, size} = gl.getTransformFeedbackVarying(program, location);
70
+ const {type, components} = decomposeCompositeGLType(compositeType);
71
+ const accessor = new Accessor({type, size: size * components});
72
+ const varying = {location, name, accessor}; // Base values
73
+ varyings.push(varying);
74
+ }
75
+
76
+ varyings.sort((a, b) => a.location - b.location);
77
+ return varyings;
78
+ }
79
+
80
+ /**
81
+ * Extract info about all uniforms
82
+ *
83
+ * Query uniform locations and build name to setter map.
84
+ */
85
+ function readUniformBindings(gl: WebGL2RenderingContext, program: WebGLProgram): UniformBinding[] {
86
+ const uniforms: UniformBinding[] = [];
87
+
88
+ const uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
89
+ for (let i = 0; i < uniformCount; i++) {
90
+ const {name: rawName, size, type} = gl.getActiveUniform(program, i);
91
+ const {name, isArray} = parseUniformName(rawName);
92
+ let webglLocation = gl.getUniformLocation(program, name);
93
+ const uniformInfo = {
94
+ // WebGL locations are uniquely typed but just numbers
95
+ location: webglLocation as number,
96
+ name,
97
+ size,
98
+ type,
99
+ isArray
100
+ };
101
+ uniforms.push(uniformInfo);
102
+
103
+ // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks
104
+ if (uniformInfo.size > 1) {
105
+ for (let j = 0; j < uniformInfo.size; j++) {
106
+ const elementName = `${name}[${j}]`;
107
+
108
+ webglLocation = gl.getUniformLocation(program, elementName);
109
+
110
+ const arrayElementUniformInfo = {
111
+ ...uniformInfo,
112
+ name: elementName,
113
+ location: webglLocation as number
114
+ };
115
+
116
+ uniforms.push(arrayElementUniformInfo);
117
+ }
118
+ }
119
+ }
120
+ return uniforms;
121
+ }
122
+
123
+ /**
124
+ * Extract info about all "active" uniform blocks
125
+ *
126
+ * ("Active" just means that unused (aka inactive) blocks may have been
127
+ * optimized away during linking)
128
+ */
129
+ function readUniformBlocks(gl: WebGL2RenderingContext, program: WebGLProgram): UniformBlockBinding[] {
130
+ const getBlockParameter = (blockIndex, pname) => gl.getActiveUniformBlockParameter(program, blockIndex, pname);
131
+
132
+ const uniformBlocks: UniformBlockBinding[] = [];
133
+
134
+ const blockCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
135
+ for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
136
+
137
+ const blockInfo = {
138
+ name: gl.getActiveUniformBlockName(program, blockIndex),
139
+ location: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_BINDING),
140
+ byteLength: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
141
+ vertex: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
142
+ fragment: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
143
+ uniformCount: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
144
+ uniformIndices: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
145
+ uniforms: []
146
+ }
147
+
148
+ for (let uniformIndex = 0; uniformIndex < blockInfo.uniformCount; ++uniformIndex) {
149
+ // TODO - Can we extract more?
150
+ }
151
+
152
+ uniformBlocks.push(blockInfo);
153
+ }
154
+
155
+ uniformBlocks.sort((a, b) => a.location - b.location);
156
+ return uniformBlocks;
157
+ }
158
+
159
+ const SAMPLER_UNIFORMS_GL_TO_GPU = {
160
+ [GL.SAMPLER_2D]: ['2d', 'float'],
161
+ [GL.SAMPLER_CUBE]: ['cube', 'float'],
162
+ [GL.SAMPLER_3D]: ['3d', 'float'],
163
+ [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],
164
+ [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],
165
+ [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],
166
+ [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],
167
+ [GL.INT_SAMPLER_2D]: ['2d', 'sint'],
168
+ [GL.INT_SAMPLER_3D]: ['3d', 'sint'],
169
+ [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],
170
+ [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'sint'],
171
+ [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'sint'],
172
+ [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'sint'],
173
+ [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'sint'],
174
+ [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'sint']
175
+ };
176
+
177
+ /**
178
+ * Generate a list of "WebGPU-style" bindings for this program
179
+ */
180
+ function generateWebGPUStyleBindings(config: ProgramBindings) {
181
+ const bindings: any = [];
182
+
183
+ // Uniform blocks
184
+ for (const blockInfo of config.uniformBlocks) {
185
+ bindings.push({
186
+ binding: blockInfo.location,
187
+ visibility: (blockInfo.vertex ? 0x1 : 0) & (blockInfo.fragment ? 0x2 : 0),
188
+ buffer: {
189
+ type: 'uniform',
190
+ // minBindingSize: blockInfo.size
191
+ }
192
+ })
193
+ }
194
+
195
+ // Sampler uniforms
196
+ for (const uniformInfo of config.uniforms) {
197
+ let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[uniformInfo.type];
198
+ if (sampler) {
199
+ const [viewDimension, sampleType] = sampler;
200
+ bindings.push({
201
+ binding: uniformInfo.location,
202
+ visibility: 0, // Not available in WebGL on individual uniforms?
203
+ texture: {
204
+ viewDimension,
205
+ sampleType
206
+ }
207
+ });
208
+ }
209
+ }
210
+ }
211
+
212
+ // HELPERS
213
+
214
+ function parseUniformName(name) {
215
+ // Shortcut to avoid redundant or bad matches
216
+ if (name[name.length - 1] !== ']'){
217
+ return {
218
+ name,
219
+ length: 1,
220
+ isArray: false
221
+ };
222
+ }
223
+
224
+ // if array name then clean the array brackets
225
+ const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
226
+ const matches = name.match(UNIFORM_NAME_REGEXP);
227
+ if (!matches || matches.length < 2) {
228
+ throw new Error(`Failed to parse GLSL uniform name ${name}`);
229
+ }
230
+
231
+ return {
232
+ name: matches[1],
233
+ length: matches[2] || 1,
234
+ isArray: Boolean(matches[2])
235
+ };
236
+ }
237
+
238
+ // Extract additional attribute metadata from shader names (based on attribute naming conventions)
239
+ function inferProperties(accessor, location, name) {
240
+ if (/instance/i.test(name)) {
241
+ // Any attribute containing the word "instance" will be assumed to be instanced
242
+ accessor.divisor = 1;
243
+ }
244
+ }
@@ -0,0 +1,46 @@
1
+ import {Accessor} from '../types/accessor';
2
+
3
+ /** Describes an attribute binding for a program */
4
+ export type AttributeBinding = {
5
+ location: number;
6
+ name: string;
7
+ accessor: Accessor;
8
+ }
9
+
10
+ /** Describes a varying binding for a program */
11
+ export type VaryingBinding = {
12
+ location: number;
13
+ name: string;
14
+ accessor: Accessor;
15
+ }
16
+
17
+ /** Describes a uniform block binding for a program */
18
+ export type UniformBlockBinding = {
19
+ location: number;
20
+ name: string;
21
+ byteLength: number;
22
+ vertex: boolean;
23
+ fragment: boolean;
24
+ uniformCount: number;
25
+ uniformIndices: number[];
26
+ }
27
+
28
+ /** Describes a uniform (sampler etc) binding for a program */
29
+ export type UniformBinding = {
30
+ location: number;
31
+ name: string;
32
+ size: number;
33
+ type: number;
34
+ isArray: boolean;
35
+ }
36
+
37
+ /**
38
+ * Holds metadata describing attribute configurations for a program's shaders
39
+ */
40
+ export type ProgramBindings = {
41
+ readonly attributes: AttributeBinding[];
42
+ readonly varyings: VaryingBinding[];
43
+ readonly uniformBlocks: UniformBlockBinding[];
44
+ // Note - samplers are always in unform bindings, even if uniform blocks are used
45
+ readonly uniforms: UniformBinding[];
46
+ }
package/src/index.ts CHANGED
@@ -5,7 +5,11 @@
5
5
  // Higher level abstractions can be built on these classes
6
6
 
7
7
  // Initialize any global state
8
- export {lumaStats} from './init';
8
+ import './init';
9
+
10
+ // export type {WebGLDeviceProps, WebGLDeviceInfo, WebGPUDeviceLimits} from './lib/webgl-device';
11
+ export type {WebGLDeviceProps} from './adapter/webgl-device';
12
+ export {default as WebGLDevice, getWebGLDevice} from './adapter/webgl-device';
9
13
 
10
14
  // UTILS
11
15
  export {requestAnimationFrame, cancelAnimationFrame} from './webgl-utils/request-animation-frame';
@@ -13,24 +17,28 @@ export {requestAnimationFrame, cancelAnimationFrame} from './webgl-utils/request
13
17
  // WebGL Functions
14
18
  export {cloneTextureFrom} from './webgl-utils/texture-utils';
15
19
  export {getKeyValue, getKey} from './webgl-utils/constants-to-keys';
16
- export {getContextInfo, getGLContextInfo, getContextLimits} from './features/limits';
17
- export {FEATURES} from './features/webgl-features-table';
18
- export {hasFeature, hasFeatures, getFeatures} from './features/features';
19
- export {default as canCompileGLGSExtension} from './features/check-glsl-extension';
20
20
 
21
21
  // WebGL Helper Classes
22
22
  export {default as Accessor} from './classes/accessor';
23
23
 
24
24
  // WebGL1 classes
25
- // export type {BufferProps} from './api/buffer';
25
+ export type {BufferProps} from '@luma.gl/api';
26
26
  export {default as Buffer} from './classes/webgl-buffer';
27
- export {default as Texture2D, Texture2DProps} from './classes/texture-2d';
28
- export {default as TextureCube, TextureCubeProps} from './classes/texture-cube';
27
+ export type {Texture2DProps} from './classes/texture-2d';
28
+ export {default as Texture2D} from './classes/texture-2d';
29
+ export type {TextureCubeProps} from './classes/texture-cube';
30
+ export {default as TextureCube} from './classes/texture-cube';
31
+
32
+ export type {ProgramProps} from './classes/program';
33
+ export {default as Program} from './classes/program';
34
+ export type {FramebufferProps} from './classes/framebuffer';
35
+ export {default as Framebuffer} from './classes/framebuffer';
36
+ export type {RenderbufferProps} from './classes/renderbuffer';
37
+ export {default as Renderbuffer} from './classes/renderbuffer';
29
38
 
30
- export {Shader, VertexShader, FragmentShader, ShaderProps} from './classes/webgl-shader';
31
- export {default as Program, ProgramProps} from './classes/program';
32
- export {default as Framebuffer, FramebufferProps} from './classes/framebuffer';
33
- export {default as Renderbuffer, RenderbufferProps} from './classes/renderbuffer';
39
+ // Classic luma.gl classes (For backwards compatibility)
40
+ export type {ShaderProps} from './classes/shader';
41
+ export {Shader, VertexShader, FragmentShader} from './classes/shader';
34
42
 
35
43
  export {clear, clearBuffer} from './classes/clear';
36
44
 
@@ -45,21 +53,56 @@ export {
45
53
  } from './classes/copy-and-blit';
46
54
 
47
55
  // WebGL2 classes & Extensions
48
- export {default as Query, QueryProps} from './classes/query';
49
- export {default as Texture3D, Texture3DProps} from './classes/texture-3d';
50
- export {default as TransformFeedback, TransformFeedbackProps} from './classes/transform-feedback';
51
- export {default as VertexArrayObject, VertexArrayObjectProps} from './classes/vertex-array-object';
52
- export {default as VertexArray, VertexArrayProps} from './classes/vertex-array';
56
+ export type {QueryProps} from './classes/query';
57
+ export {default as Query} from './classes/query';
58
+ export type {Texture3DProps} from './classes/texture-3d';
59
+ export {default as Texture3D} from './classes/texture-3d';
60
+ export type {TransformFeedbackProps} from './classes/transform-feedback';
61
+ export {default as TransformFeedback} from './classes/transform-feedback';
62
+ export type {VertexArrayObjectProps} from './classes/vertex-array-object';
63
+ export {default as VertexArrayObject} from './classes/vertex-array-object';
64
+ export type {VertexArrayProps} from './classes/vertex-array';
65
+ export {default as VertexArray} from './classes/vertex-array';
53
66
  export {default as UniformBufferLayout} from './classes/uniform-buffer-layout';
54
67
 
55
- // experimental WebGL exports
68
+ export {setDeviceParameters} from './adapter/converters/set-device-parameters';
56
69
 
57
- export {setPathPrefix, loadFile, loadImage} from './utils/load-file';
70
+ // experimental WebGL exports
58
71
 
59
72
  // UTILS
60
- export {log} from '@luma.gl/gltools';
61
- export {default as assert} from './utils/assert';
62
- export {uid, isObjectEmpty} from './utils/utils';
73
+ export {
74
+ isWebGL,
75
+ isWebGL2,
76
+ getWebGL2Context,
77
+ assertWebGLContext,
78
+ assertWebGL2Context
79
+ } from './context/context/webgl-checks';
80
+
81
+ // Device ratio
82
+ export {cssToDeviceRatio, cssToDevicePixels} from './context/context/device-pixels';
83
+
84
+ // Unified parameter API
85
+
86
+ export type {GLParameters} from './context/parameters/webgl-parameters';
87
+ export {
88
+ getParameters,
89
+ setParameters,
90
+ resetParameters
91
+ } from './context/parameters/unified-parameter-api';
92
+
93
+ export {
94
+ withParameters
95
+ } from './context/state-tracker/with-parameters';
96
+
97
+ // State tracking
98
+ export {
99
+ trackContextState,
100
+ pushContextState,
101
+ popContextState
102
+ } from './context/state-tracker/track-context-state';
103
+
104
+ // Polyfills (supports a subset of WebGL2 APIs on WebGL1 contexts)
105
+ export {polyfillContext} from './context/polyfill/polyfill-context';
63
106
 
64
107
  // INTERNAL
65
108
  export {parseUniformName, getUniformSetter} from './classes/uniforms';
@@ -67,7 +110,35 @@ export {getDebugTableForUniforms} from './debug/debug-uniforms';
67
110
  export {getDebugTableForVertexArray} from './debug/debug-vertex-array';
68
111
  export {getDebugTableForProgramConfiguration} from './debug/debug-program-configuration';
69
112
 
70
- // REMOVED in v8.6
113
+ // HELPERS - EXPERIMENTAL
114
+ export {getProgramBindings} from './helpers/get-program-bindings';
115
+
116
+ // DEPRECATED
117
+
118
+ // Deprecated re-exports
119
+ export {lumaStats} from './init';
120
+ export {log, assert, uid, isObjectEmpty} from '@luma.gl/api';
121
+ export {setPathPrefix, loadFile, loadImage} from '@luma.gl/api';
122
+
123
+ // GLTOOLS
124
+ export type {GLContextOptions} from './_deprecated/context-api';
125
+ export {
126
+ createGLContext,
127
+ instrumentGLContext,
128
+ resizeGLContext,
129
+ hasFeature,
130
+ hasFeatures,
131
+ getFeatures,
132
+ getContextInfo,
133
+ getGLContextInfo,
134
+ getContextLimits,
135
+ getContextDebugInfo
136
+ } from './_deprecated/context-api';
137
+
138
+ // Features
139
+ export {DEPRECATED_FEATURES as FEATURES} from './_deprecated/features';
140
+
141
+ // REMOVED in v8.7
71
142
  // getShaderInfo,
72
143
  // getShaderName
73
144
  // getShaderVersion
package/src/init.ts CHANGED
@@ -1,9 +1,10 @@
1
- import {log} from '@luma.gl/gltools';
2
- import {isBrowser, global} from 'probe.gl/env';
3
- import {lumaStats} from '@luma.gl/api';
1
+ import {log} from '@luma.gl/api';
2
+ import {isBrowser} from '@probe.gl/env';
3
+ import {luma, lumaStats} from '@luma.gl/api';
4
+ import WebGLDevice from './adapter/webgl-device';
4
5
 
5
6
  // Version detection using babel plugin
6
- // @ts-ignore
7
+ // @ts-expect-error
7
8
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';
8
9
 
9
10
  const STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
@@ -11,16 +12,18 @@ const STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
11
12
  // 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs
12
13
  // luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;
13
14
 
14
- if (global.luma && global.luma.VERSION !== VERSION) {
15
- throw new Error(`luma.gl - multiple VERSIONs detected: ${global.luma.VERSION} vs ${VERSION}`);
15
+ if (globalThis.luma && globalThis.luma.VERSION !== VERSION) {
16
+ throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);
16
17
  }
17
18
 
18
- if (!global.luma) {
19
+ if (!globalThis.luma) {
20
+ luma.registerDevices([WebGLDevice]);
21
+
19
22
  if (isBrowser()) {
20
23
  log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();
21
24
  }
22
25
 
23
- global.luma = global.luma || {
26
+ globalThis.luma = globalThis.luma || {
24
27
  VERSION,
25
28
  version: VERSION,
26
29
  log,
@@ -42,4 +45,4 @@ if (!global.luma) {
42
45
  }
43
46
 
44
47
  export {lumaStats};
45
- export default global.luma;
48
+ export default globalThis.luma;
@@ -0,0 +1,29 @@
1
+ // ACCESSORS
2
+
3
+ /**
4
+ * Attribute descriptor object
5
+ */
6
+ export type Accessor = {
7
+ format?: string;
8
+ offset?: number;
9
+ location?: number;
10
+
11
+ // can now be described with single WebGPU-style `format` string
12
+ type?: number;
13
+ size?: number;
14
+ normalized?: boolean;
15
+ integer?: boolean;
16
+
17
+ // deprecated - now shared between accessors in the surrounding BufferAccessor object
18
+ stride?: number;
19
+ divisor?: number;
20
+ };
21
+
22
+ /**
23
+ * List of attribute descriptors for one interleaved buffer
24
+ */
25
+ export type BufferAccessors = {
26
+ stride?: number;
27
+ stepMode?: 'vertex' | 'instance';
28
+ attributes: Accessor[];
29
+ }
package/src/types.ts CHANGED
@@ -5,4 +5,4 @@ export type AccessorObject = {
5
5
  divisor?: number;
6
6
  offset?: number;
7
7
  stride?: number;
8
- };
8
+ };
@@ -1,4 +1,4 @@
1
- import {assert} from '../utils';
1
+ import {assert} from '@luma.gl/api';
2
2
 
3
3
  const GL_BYTE = 0x1400;
4
4
  const GL_UNSIGNED_BYTE = 0x1401;
@@ -1,4 +1,4 @@
1
- import {assert} from '../utils';
1
+ import {assert} from '@luma.gl/api';
2
2
 
3
3
  // Resolve a WebGL enumeration name (returns itself if already a number)
4
4
  export function getKeyValue(gl, name) {
@@ -1,5 +1,5 @@
1
+ import {assert} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {assert} from '../utils';
3
3
 
4
4
  // Returns number of components in a specific readPixels WebGL format
5
5
  export function glFormatToComponents(format) {
@@ -1,14 +1,16 @@
1
1
  // TODO: Two subdirectories must not depend on each other (classes vs utils)!
2
+ import {assert} from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import Texture from '../classes/texture';
2
5
  import Texture2D from '../classes/texture-2d';
3
6
  import TextureCube from '../classes/texture-cube';
4
7
  import Texture3D from '../classes/texture-3d';
5
- import Framebuffer from '../classes/framebuffer';
6
- import GL from '@luma.gl/constants';
7
- import {assert} from '../utils';
8
+ import Framebuffer, {FramebufferProps} from '../classes/framebuffer';
9
+
10
+ type TextureType = Texture2D | TextureCube | Texture3D;
8
11
 
9
- // Clone a new texture object from a reference texture object.
10
- /** @type {import('./texture-utils').cloneTextureFrom} */
11
- export function cloneTextureFrom(refTexture, overrides) {
12
+ /** Clone a new texture object from a reference texture object. */
13
+ export function cloneTextureFrom<T extends TextureType>(refTexture: T, overrides?: any): T {
12
14
  assert(
13
15
  refTexture instanceof Texture2D ||
14
16
  refTexture instanceof TextureCube ||
@@ -37,10 +39,11 @@ export function cloneTextureFrom(refTexture, overrides) {
37
39
  return new TextureType(gl, textureOptions);
38
40
  }
39
41
 
40
- // Wraps a given texture into a framebuffer object, that can be further used
41
- // to read data from the texture object.
42
- /** @type {import('./texture-utils').toFramebuffer} */
43
- export function toFramebuffer(texture, opts) {
42
+ /**
43
+ * Wraps a given texture into a framebuffer object, that can be further used
44
+ * to read data from the texture object.
45
+ */
46
+ export function toFramebuffer(texture: Texture, opts?: FramebufferProps): Framebuffer {
44
47
  const {gl, width, height, id} = texture;
45
48
  const framebuffer = new Framebuffer(
46
49
  gl,