@luma.gl/webgl 8.5.10 → 8.6.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (804) 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 +70 -0
  5. package/dist/_deprecated/context-api.js.map +1 -0
  6. package/dist/_deprecated/features.d.ts +27 -0
  7. package/dist/_deprecated/features.d.ts.map +1 -0
  8. package/{src/features/webgl-features-table.js → dist/_deprecated/features.js} +66 -59
  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 +111 -0
  35. package/dist/adapter/webgl-device.d.ts.map +1 -0
  36. package/dist/adapter/webgl-device.js +208 -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/bundle.d.ts +2 -0
  43. package/dist/bundle.d.ts.map +1 -0
  44. package/dist/bundle.js +5 -0
  45. package/dist/bundle.js.map +1 -0
  46. package/dist/classes/accessor.d.ts +28 -0
  47. package/dist/classes/accessor.d.ts.map +1 -0
  48. package/dist/classes/accessor.js +112 -0
  49. package/dist/classes/accessor.js.map +1 -0
  50. package/dist/classes/accessor.ts.disabled +159 -0
  51. package/dist/classes/clear.d.ts +17 -0
  52. package/dist/classes/clear.d.ts.map +1 -0
  53. package/{src → dist}/classes/clear.js +29 -23
  54. package/dist/classes/clear.js.map +1 -0
  55. package/dist/classes/copy-and-blit.d.ts +86 -0
  56. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  57. package/dist/classes/copy-and-blit.js +338 -0
  58. package/dist/classes/copy-and-blit.js.map +1 -0
  59. package/dist/classes/framebuffer.d.ts +139 -0
  60. package/dist/classes/framebuffer.d.ts.map +1 -0
  61. package/dist/classes/framebuffer.js +656 -0
  62. package/dist/classes/framebuffer.js.map +1 -0
  63. package/dist/classes/program-configuration.d.ts +24 -0
  64. package/dist/classes/program-configuration.d.ts.map +1 -0
  65. package/dist/classes/program-configuration.js +73 -0
  66. package/dist/classes/program-configuration.js.map +1 -0
  67. package/dist/classes/program.d.ts +66 -0
  68. package/dist/classes/program.d.ts.map +1 -0
  69. package/dist/classes/program.js +379 -0
  70. package/dist/classes/program.js.map +1 -0
  71. package/dist/classes/query.d.ts +27 -0
  72. package/dist/classes/query.d.ts.map +1 -0
  73. package/dist/classes/query.js +145 -0
  74. package/dist/classes/query.js.map +1 -0
  75. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  76. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  77. package/dist/classes/renderbuffer-formats.js +185 -0
  78. package/dist/classes/renderbuffer-formats.js.map +1 -0
  79. package/dist/classes/renderbuffer.d.ts +60 -0
  80. package/dist/classes/renderbuffer.d.ts.map +1 -0
  81. package/dist/classes/renderbuffer.js +128 -0
  82. package/dist/classes/renderbuffer.js.map +1 -0
  83. package/dist/classes/shader.d.ts +42 -0
  84. package/dist/classes/shader.d.ts.map +1 -0
  85. package/dist/classes/shader.js +118 -0
  86. package/dist/classes/shader.js.map +1 -0
  87. package/dist/classes/texture-2d.d.ts +9 -0
  88. package/dist/classes/texture-2d.d.ts.map +1 -0
  89. package/dist/classes/texture-2d.js +36 -0
  90. package/dist/classes/texture-2d.js.map +1 -0
  91. package/dist/classes/texture-3d.d.ts +29 -0
  92. package/dist/classes/texture-3d.d.ts.map +1 -0
  93. package/dist/classes/texture-3d.js +76 -0
  94. package/dist/classes/texture-3d.js.map +1 -0
  95. package/dist/classes/texture-cube.d.ts +28 -0
  96. package/dist/classes/texture-cube.d.ts.map +1 -0
  97. package/dist/classes/texture-cube.js +130 -0
  98. package/dist/classes/texture-cube.js.map +1 -0
  99. package/dist/classes/texture-formats.d.ts +37 -0
  100. package/dist/classes/texture-formats.d.ts.map +1 -0
  101. package/dist/classes/texture-formats.js +98 -0
  102. package/dist/classes/texture-formats.js.map +1 -0
  103. package/dist/classes/texture.d.ts +123 -0
  104. package/dist/classes/texture.d.ts.map +1 -0
  105. package/dist/classes/texture.js +786 -0
  106. package/dist/classes/texture.js.map +1 -0
  107. package/dist/classes/transform-feedback.d.ts +33 -0
  108. package/dist/classes/transform-feedback.d.ts.map +1 -0
  109. package/dist/classes/transform-feedback.js +198 -0
  110. package/dist/classes/transform-feedback.js.map +1 -0
  111. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  112. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  113. package/dist/classes/uniform-buffer-layout.js +104 -0
  114. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  115. package/dist/classes/uniforms.d.ts +37 -0
  116. package/dist/classes/uniforms.d.ts.map +1 -0
  117. package/dist/classes/uniforms.js +250 -0
  118. package/dist/classes/uniforms.js.map +1 -0
  119. package/dist/classes/vertex-array-object.d.ts +76 -0
  120. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  121. package/dist/classes/vertex-array-object.js +261 -0
  122. package/dist/classes/vertex-array-object.js.map +1 -0
  123. package/dist/classes/vertex-array.d.ts +75 -0
  124. package/dist/classes/vertex-array.d.ts.map +1 -0
  125. package/dist/classes/vertex-array.js +408 -0
  126. package/dist/classes/vertex-array.js.map +1 -0
  127. package/dist/classes/webgl-buffer.d.ts +100 -0
  128. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  129. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +100 -73
  130. package/dist/classes/webgl-buffer.js.map +1 -0
  131. package/dist/classes/webgl-resource.d.ts +56 -0
  132. package/dist/classes/webgl-resource.d.ts.map +1 -0
  133. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +35 -52
  134. package/dist/classes/webgl-resource.js.map +1 -0
  135. package/dist/context/context/context-state.d.ts +18 -0
  136. package/dist/context/context/context-state.d.ts.map +1 -0
  137. package/dist/context/context/context-state.js +26 -0
  138. package/dist/context/context/context-state.js.map +1 -0
  139. package/dist/context/context/create-context.d.ts +40 -0
  140. package/dist/context/context/create-context.d.ts.map +1 -0
  141. package/dist/context/context/create-context.js +37 -0
  142. package/dist/context/context/create-context.js.map +1 -0
  143. package/dist/context/context/device-pixels.d.ts +25 -0
  144. package/dist/context/context/device-pixels.d.ts.map +1 -0
  145. package/dist/context/context/device-pixels.js +98 -0
  146. package/dist/context/context/device-pixels.js.map +1 -0
  147. package/dist/context/context/get-canvas.d.ts +13 -0
  148. package/dist/context/context/get-canvas.d.ts.map +1 -0
  149. package/dist/context/context/get-canvas.js +31 -0
  150. package/dist/context/context/get-canvas.js.map +1 -0
  151. package/dist/context/context/resize-context.d.ts +20 -0
  152. package/dist/context/context/resize-context.d.ts.map +1 -0
  153. package/dist/context/context/resize-context.js +15 -0
  154. package/dist/context/context/resize-context.js.map +1 -0
  155. package/dist/context/context/webgl-checks.d.ts +13 -0
  156. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  157. package/dist/context/context/webgl-checks.js +34 -0
  158. package/dist/context/context/webgl-checks.js.map +1 -0
  159. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  160. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  161. package/dist/context/parameters/unified-parameter-api.js +65 -0
  162. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  163. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  164. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  165. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  166. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  167. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  168. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  169. package/dist/context/parameters/webgl-parameters.js +2 -0
  170. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  171. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  172. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  174. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  175. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  176. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  177. package/dist/context/polyfill/polyfill-context.js +91 -0
  178. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  179. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  180. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  181. package/dist/context/polyfill/polyfill-table.js +160 -0
  182. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  183. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  187. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  188. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  189. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  190. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  191. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  192. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  193. package/dist/context/state-tracker/track-context-state.js +169 -0
  194. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  195. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  196. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  197. package/dist/context/state-tracker/with-parameters.js +36 -0
  198. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  199. package/dist/debug/debug-program-configuration.d.ts +2 -0
  200. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  201. package/dist/debug/debug-program-configuration.js +40 -0
  202. package/dist/debug/debug-program-configuration.js.map +1 -0
  203. package/dist/debug/debug-uniforms.d.ts +12 -0
  204. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  205. package/dist/debug/debug-uniforms.js +108 -0
  206. package/dist/debug/debug-uniforms.js.map +1 -0
  207. package/dist/debug/debug-vertex-array.d.ts +5 -0
  208. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  209. package/dist/debug/debug-vertex-array.js +118 -0
  210. package/dist/debug/debug-vertex-array.js.map +1 -0
  211. package/dist/es5/_deprecated/context-api.js +110 -0
  212. package/dist/es5/_deprecated/context-api.js.map +1 -0
  213. package/dist/es5/_deprecated/features.js +118 -0
  214. package/dist/es5/_deprecated/features.js.map +1 -0
  215. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  216. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  217. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  218. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  219. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  220. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  221. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  222. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  223. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  224. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  225. package/dist/es5/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  226. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  227. package/dist/es5/adapter/webgl-device.js +279 -0
  228. package/dist/es5/adapter/webgl-device.js.map +1 -0
  229. package/dist/es5/adapter/webgl-shader.js +155 -0
  230. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  231. package/dist/es5/bundle.js +2 -4
  232. package/dist/es5/bundle.js.map +1 -1
  233. package/dist/es5/classes/accessor.js +36 -38
  234. package/dist/es5/classes/accessor.js.map +1 -1
  235. package/dist/es5/classes/accessor.ts.disabled +159 -0
  236. package/dist/es5/classes/clear.js +17 -11
  237. package/dist/es5/classes/clear.js.map +1 -1
  238. package/dist/es5/classes/copy-and-blit.js +121 -117
  239. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  240. package/dist/es5/classes/framebuffer.js +435 -423
  241. package/dist/es5/classes/framebuffer.js.map +1 -1
  242. package/dist/es5/classes/program-configuration.js +44 -108
  243. package/dist/es5/classes/program-configuration.js.map +1 -1
  244. package/dist/es5/classes/program.js +108 -85
  245. package/dist/es5/classes/program.js.map +1 -1
  246. package/dist/es5/classes/query.js +58 -59
  247. package/dist/es5/classes/query.js.map +1 -1
  248. package/dist/es5/classes/renderbuffer-formats.js +79 -52
  249. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  250. package/dist/es5/classes/renderbuffer.js +129 -100
  251. package/dist/es5/classes/renderbuffer.js.map +1 -1
  252. package/dist/es5/classes/shader.js +70 -96
  253. package/dist/es5/classes/shader.js.map +1 -1
  254. package/dist/es5/classes/texture-2d.js +25 -21
  255. package/dist/es5/classes/texture-2d.js.map +1 -1
  256. package/dist/es5/classes/texture-3d.js +49 -29
  257. package/dist/es5/classes/texture-3d.js.map +1 -1
  258. package/dist/es5/classes/texture-cube.js +45 -36
  259. package/dist/es5/classes/texture-cube.js.map +1 -1
  260. package/dist/es5/classes/texture-formats.js +35 -33
  261. package/dist/es5/classes/texture-formats.js.map +1 -1
  262. package/dist/es5/classes/texture.js +213 -101
  263. package/dist/es5/classes/texture.js.map +1 -1
  264. package/dist/es5/classes/transform-feedback.js +37 -34
  265. package/dist/es5/classes/transform-feedback.js.map +1 -1
  266. package/dist/es5/classes/uniform-buffer-layout.js +4 -4
  267. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  268. package/dist/es5/classes/uniforms.js +73 -73
  269. package/dist/es5/classes/uniforms.js.map +1 -1
  270. package/dist/es5/classes/vertex-array-object.js +106 -149
  271. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  272. package/dist/es5/classes/vertex-array.js +52 -43
  273. package/dist/es5/classes/vertex-array.js.map +1 -1
  274. package/dist/es5/classes/{buffer.js → webgl-buffer.js} +120 -111
  275. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  276. package/dist/es5/classes/{resource.js → webgl-resource.js} +78 -99
  277. package/dist/es5/classes/webgl-resource.js.map +1 -0
  278. package/dist/es5/context/context/context-state.js +31 -0
  279. package/dist/es5/context/context/context-state.js.map +1 -0
  280. package/dist/es5/context/context/create-context.js +57 -0
  281. package/dist/es5/context/context/create-context.js.map +1 -0
  282. package/dist/es5/context/context/device-pixels.js +115 -0
  283. package/dist/es5/context/context/device-pixels.js.map +1 -0
  284. package/dist/es5/context/context/get-canvas.js +40 -0
  285. package/dist/es5/context/context/get-canvas.js.map +1 -0
  286. package/dist/es5/context/context/resize-context.js +23 -0
  287. package/dist/es5/context/context/resize-context.js.map +1 -0
  288. package/dist/es5/context/context/webgl-checks.js +54 -0
  289. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  290. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  291. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  292. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  293. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  294. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  295. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  296. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  297. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  298. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  299. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  300. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  301. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  302. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  303. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  304. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  305. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  306. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  307. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  308. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  309. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  310. package/dist/es5/debug/debug-program-configuration.js +1 -1
  311. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  312. package/dist/es5/debug/debug-uniforms.js +18 -20
  313. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  314. package/dist/es5/debug/debug-vertex-array.js +16 -16
  315. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  316. package/dist/es5/helpers/get-program-bindings.js +274 -0
  317. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  318. package/dist/es5/helpers/program-bindings.js +2 -0
  319. package/dist/es5/helpers/program-bindings.js.map +1 -0
  320. package/dist/es5/index.js +229 -99
  321. package/dist/es5/index.js.map +1 -1
  322. package/dist/es5/init.js +21 -41
  323. package/dist/es5/init.js.map +1 -1
  324. package/dist/es5/types/accessor.d.ts +29 -0
  325. package/dist/es5/types.js +2 -0
  326. package/dist/es5/types.js.map +1 -0
  327. package/dist/es5/webgl-utils/attribute-utils.js +4 -4
  328. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  329. package/dist/es5/webgl-utils/constants-to-keys.js +3 -3
  330. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  331. package/dist/es5/webgl-utils/format-utils.js +21 -17
  332. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  333. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  334. package/dist/es5/webgl-utils/index.js +74 -0
  335. package/dist/es5/webgl-utils/index.js.map +1 -0
  336. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +72 -0
  337. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  338. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  339. package/dist/es5/webgl-utils/texture-utils.js +6 -4
  340. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  341. package/dist/es5/webgl-utils/typed-array-utils.js +39 -34
  342. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  343. package/dist/esm/_deprecated/context-api.js +70 -0
  344. package/dist/esm/_deprecated/context-api.js.map +1 -0
  345. package/dist/esm/{features/webgl-features-table.js → _deprecated/features.js} +66 -26
  346. package/dist/esm/_deprecated/features.js.map +1 -0
  347. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  348. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  349. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  350. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  351. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  352. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  353. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  354. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  355. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  356. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  357. package/dist/esm/adapter/device-helpers/is-old-ie.js +8 -0
  358. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  359. package/dist/esm/adapter/webgl-device.js +208 -0
  360. package/dist/esm/adapter/webgl-device.js.map +1 -0
  361. package/dist/esm/adapter/webgl-shader.js +82 -0
  362. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  363. package/dist/esm/bundle.js +2 -4
  364. package/dist/esm/bundle.js.map +1 -1
  365. package/dist/esm/classes/accessor.js +6 -6
  366. package/dist/esm/classes/accessor.js.map +1 -1
  367. package/dist/esm/classes/accessor.ts.disabled +159 -0
  368. package/dist/esm/classes/clear.js +19 -14
  369. package/dist/esm/classes/clear.js.map +1 -1
  370. package/dist/esm/classes/copy-and-blit.js +67 -64
  371. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  372. package/dist/esm/classes/framebuffer.js +341 -313
  373. package/dist/esm/classes/framebuffer.js.map +1 -1
  374. package/dist/esm/classes/program-configuration.js +25 -104
  375. package/dist/esm/classes/program-configuration.js.map +1 -1
  376. package/dist/esm/classes/program.js +98 -62
  377. package/dist/esm/classes/program.js.map +1 -1
  378. package/dist/esm/classes/query.js +20 -16
  379. package/dist/esm/classes/query.js.map +1 -1
  380. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  381. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  382. package/dist/esm/classes/renderbuffer.js +86 -73
  383. package/dist/esm/classes/renderbuffer.js.map +1 -1
  384. package/dist/esm/classes/shader.js +47 -67
  385. package/dist/esm/classes/shader.js.map +1 -1
  386. package/dist/esm/classes/texture-2d.js +13 -9
  387. package/dist/esm/classes/texture-2d.js.map +1 -1
  388. package/dist/esm/classes/texture-3d.js +28 -16
  389. package/dist/esm/classes/texture-3d.js.map +1 -1
  390. package/dist/esm/classes/texture-cube.js +45 -31
  391. package/dist/esm/classes/texture-cube.js.map +1 -1
  392. package/dist/esm/classes/texture-formats.js +52 -51
  393. package/dist/esm/classes/texture-formats.js.map +1 -1
  394. package/dist/esm/classes/texture.js +174 -58
  395. package/dist/esm/classes/texture.js.map +1 -1
  396. package/dist/esm/classes/transform-feedback.js +26 -14
  397. package/dist/esm/classes/transform-feedback.js.map +1 -1
  398. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  399. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  400. package/dist/esm/classes/uniforms.js +111 -113
  401. package/dist/esm/classes/uniforms.js.map +1 -1
  402. package/dist/esm/classes/vertex-array-object.js +52 -89
  403. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  404. package/dist/esm/classes/vertex-array.js +52 -31
  405. package/dist/esm/classes/vertex-array.js.map +1 -1
  406. package/dist/esm/classes/webgl-buffer.js +382 -0
  407. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  408. package/dist/esm/classes/webgl-resource.js +212 -0
  409. package/dist/esm/classes/webgl-resource.js.map +1 -0
  410. package/dist/esm/context/context/context-state.js +26 -0
  411. package/dist/esm/context/context/context-state.js.map +1 -0
  412. package/dist/esm/context/context/create-context.js +37 -0
  413. package/dist/esm/context/context/create-context.js.map +1 -0
  414. package/dist/esm/context/context/device-pixels.js +98 -0
  415. package/dist/esm/context/context/device-pixels.js.map +1 -0
  416. package/dist/esm/context/context/get-canvas.js +31 -0
  417. package/dist/esm/context/context/get-canvas.js.map +1 -0
  418. package/dist/esm/context/context/resize-context.js +15 -0
  419. package/dist/esm/context/context/resize-context.js.map +1 -0
  420. package/dist/esm/context/context/webgl-checks.js +34 -0
  421. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  422. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  423. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  424. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  425. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  426. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  427. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  428. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  429. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  430. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  431. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  432. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  433. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  434. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  435. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  436. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  437. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  438. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  439. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  440. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  441. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  442. package/dist/esm/debug/debug-program-configuration.js +4 -4
  443. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  444. package/dist/esm/debug/debug-uniforms.js +9 -9
  445. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  446. package/dist/esm/debug/debug-vertex-array.js +18 -16
  447. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  448. package/dist/esm/helpers/get-program-bindings.js +228 -0
  449. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  450. package/dist/esm/helpers/program-bindings.js +2 -0
  451. package/dist/esm/helpers/program-bindings.js.map +1 -0
  452. package/dist/esm/index.js +19 -15
  453. package/dist/esm/index.js.map +1 -1
  454. package/dist/esm/init.js +12 -28
  455. package/dist/esm/init.js.map +1 -1
  456. package/dist/esm/types/accessor.d.ts +29 -0
  457. package/dist/esm/types.js +2 -0
  458. package/dist/esm/types.js.map +1 -0
  459. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  460. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  461. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  462. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  463. package/dist/esm/webgl-utils/format-utils.js +16 -15
  464. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  465. package/dist/esm/webgl-utils/get-error.js +1 -1
  466. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  467. package/dist/esm/webgl-utils/index.js +5 -0
  468. package/dist/esm/webgl-utils/index.js.map +1 -0
  469. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  470. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  471. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  472. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  473. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  474. package/dist/esm/webgl-utils/typed-array-utils.js +41 -36
  475. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  476. package/dist/helpers/get-program-bindings.d.ts +8 -0
  477. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  478. package/dist/helpers/get-program-bindings.js +228 -0
  479. package/dist/helpers/get-program-bindings.js.map +1 -0
  480. package/dist/helpers/program-bindings.d.ts +41 -0
  481. package/dist/helpers/program-bindings.d.ts.map +1 -0
  482. package/dist/helpers/program-bindings.js +2 -0
  483. package/dist/helpers/program-bindings.js.map +1 -0
  484. package/dist/index.d.ts +54 -0
  485. package/dist/index.d.ts.map +1 -0
  486. package/dist/index.js +39 -0
  487. package/dist/index.js.map +1 -0
  488. package/dist/init.d.ts +5 -0
  489. package/dist/init.d.ts.map +1 -0
  490. package/dist/init.js +33 -0
  491. package/dist/init.js.map +1 -0
  492. package/dist/types/accessor.d.ts +29 -0
  493. package/dist/types.d.ts +9 -0
  494. package/dist/types.d.ts.map +1 -0
  495. package/dist/types.js +2 -0
  496. package/dist/types.js.map +1 -0
  497. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  498. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  499. package/dist/webgl-utils/attribute-utils.js +182 -0
  500. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  501. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  502. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  503. package/dist/webgl-utils/constants-to-keys.js +41 -0
  504. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  505. package/dist/webgl-utils/format-utils.d.ts +3 -0
  506. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  507. package/dist/webgl-utils/format-utils.js +45 -0
  508. package/dist/webgl-utils/format-utils.js.map +1 -0
  509. package/dist/webgl-utils/get-error.d.ts +3 -0
  510. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  511. package/dist/webgl-utils/get-error.js +41 -0
  512. package/dist/webgl-utils/get-error.js.map +1 -0
  513. package/dist/webgl-utils/index.d.ts +5 -0
  514. package/dist/webgl-utils/index.d.ts.map +1 -0
  515. package/dist/webgl-utils/index.js +5 -0
  516. package/dist/webgl-utils/index.js.map +1 -0
  517. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  518. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  519. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  520. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  521. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  522. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  523. package/dist/webgl-utils/request-animation-frame.js +7 -0
  524. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  525. package/dist/webgl-utils/texture-utils.d.ts +15 -0
  526. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  527. package/dist/webgl-utils/texture-utils.js +48 -0
  528. package/dist/webgl-utils/texture-utils.js.map +1 -0
  529. package/dist/webgl-utils/typed-array-utils.d.ts +43 -0
  530. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  531. package/{src → dist}/webgl-utils/typed-array-utils.js +45 -27
  532. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  533. package/package.json +9 -9
  534. package/src/.DS_Store +0 -0
  535. package/src/_deprecated/context-api.ts +140 -0
  536. package/src/_deprecated/features.ts +159 -0
  537. package/src/adapter/converters/set-device-parameters.ts +182 -0
  538. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  539. package/src/adapter/device-helpers/device-features.ts +227 -0
  540. package/src/adapter/device-helpers/device-limits.ts +150 -0
  541. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  542. package/src/{features/check-old-ie.js → adapter/device-helpers/is-old-ie.ts} +3 -3
  543. package/src/adapter/webgl-device.ts +406 -0
  544. package/src/adapter/webgl-shader.ts +84 -0
  545. package/src/bundle.ts +4 -0
  546. package/src/classes/accessor.js +2 -3
  547. package/src/classes/accessor.ts.disabled +159 -0
  548. package/src/classes/clear.ts +108 -0
  549. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +143 -55
  550. package/src/classes/{framebuffer.js → framebuffer.ts} +381 -321
  551. package/src/classes/program-configuration.ts +77 -0
  552. package/src/classes/{program.js → program.ts} +111 -77
  553. package/src/classes/{query.js → query.ts} +31 -25
  554. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  555. package/src/classes/renderbuffer.ts +154 -0
  556. package/src/classes/shader.ts +129 -0
  557. package/src/classes/texture-2d.ts +35 -0
  558. package/src/classes/{texture-3d.js → texture-3d.ts} +48 -18
  559. package/src/classes/{texture-cube.js → texture-cube.ts} +52 -34
  560. package/src/classes/{texture-formats.js → texture-formats.ts} +10 -2
  561. package/src/classes/{texture.js → texture.ts} +223 -57
  562. package/src/classes/{transform-feedback.js → transform-feedback.ts} +34 -25
  563. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  564. package/src/classes/{uniforms.js → uniforms.ts} +123 -77
  565. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +136 -114
  566. package/src/classes/{vertex-array.js → vertex-array.ts} +84 -59
  567. package/src/classes/{buffer.js → webgl-buffer.ts} +126 -50
  568. package/src/classes/{resource.js → webgl-resource.ts} +55 -46
  569. package/src/context/context/context-state.ts +39 -0
  570. package/src/context/context/create-context.ts +83 -0
  571. package/src/context/context/device-pixels.ts +147 -0
  572. package/src/context/context/get-canvas.ts +37 -0
  573. package/src/context/context/resize-context.ts +37 -0
  574. package/src/context/context/webgl-checks.ts +49 -0
  575. package/src/context/parameters/unified-parameter-api.ts +128 -0
  576. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  577. package/src/context/parameters/webgl-parameters.ts +197 -0
  578. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  579. package/src/context/polyfill/polyfill-context.ts +98 -0
  580. package/src/context/polyfill/polyfill-table.ts +162 -0
  581. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  582. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  583. package/src/context/state-tracker/track-context-state.ts +250 -0
  584. package/src/context/state-tracker/with-parameters.ts +50 -0
  585. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  586. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  587. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +6 -5
  588. package/src/helpers/get-program-bindings.ts +244 -0
  589. package/src/helpers/program-bindings.ts +46 -0
  590. package/src/index.ts +144 -0
  591. package/src/{init.js → init.ts} +11 -25
  592. package/src/types/accessor.d.ts +29 -0
  593. package/src/{types.d.ts → types.ts} +1 -1
  594. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  595. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  596. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  597. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  598. package/src/webgl-utils/index.ts +12 -0
  599. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  600. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  601. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +14 -10
  602. package/src/webgl-utils/typed-array-utils.ts +137 -0
  603. package/dist/dist.js +0 -13555
  604. package/dist/dist.min.js +0 -1
  605. package/dist/es5/classes/buffer.d.ts +0 -84
  606. package/dist/es5/classes/buffer.js.map +0 -1
  607. package/dist/es5/classes/clear.d.ts +0 -11
  608. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  609. package/dist/es5/classes/framebuffer.d.ts +0 -96
  610. package/dist/es5/classes/program-configuration.d.ts +0 -15
  611. package/dist/es5/classes/program.d.ts +0 -44
  612. package/dist/es5/classes/query.d.ts +0 -21
  613. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  614. package/dist/es5/classes/resource.d.ts +0 -47
  615. package/dist/es5/classes/resource.js.map +0 -1
  616. package/dist/es5/classes/shader.d.ts +0 -29
  617. package/dist/es5/classes/texture-2d.d.ts +0 -11
  618. package/dist/es5/classes/texture-3d.d.ts +0 -29
  619. package/dist/es5/classes/texture-cube.d.ts +0 -23
  620. package/dist/es5/classes/texture.d.ts +0 -80
  621. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  622. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  623. package/dist/es5/classes/uniforms.d.ts +0 -63
  624. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  625. package/dist/es5/classes/vertex-array.d.ts +0 -37
  626. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  627. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  628. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  629. package/dist/es5/features/check-glsl-extension.js +0 -41
  630. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  631. package/dist/es5/features/check-old-ie.js.map +0 -1
  632. package/dist/es5/features/features.js +0 -99
  633. package/dist/es5/features/features.js.map +0 -1
  634. package/dist/es5/features/index.js +0 -64
  635. package/dist/es5/features/index.js.map +0 -1
  636. package/dist/es5/features/limits.js +0 -64
  637. package/dist/es5/features/limits.js.map +0 -1
  638. package/dist/es5/features/webgl-features-table.js +0 -64
  639. package/dist/es5/features/webgl-features-table.js.map +0 -1
  640. package/dist/es5/features/webgl-limits-table.js +0 -132
  641. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  642. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  643. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  644. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  645. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  646. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  647. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  648. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  649. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  650. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  651. package/dist/es5/glsl-utils/index.js +0 -48
  652. package/dist/es5/glsl-utils/index.js.map +0 -1
  653. package/dist/es5/index.d.ts +0 -71
  654. package/dist/es5/init.d.ts +0 -12
  655. package/dist/es5/types.d.ts +0 -8
  656. package/dist/es5/utils/array-utils-flat.js +0 -51
  657. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  658. package/dist/es5/utils/assert.d.ts +0 -1
  659. package/dist/es5/utils/assert.js +0 -13
  660. package/dist/es5/utils/assert.js.map +0 -1
  661. package/dist/es5/utils/check-props.js +0 -51
  662. package/dist/es5/utils/check-props.js.map +0 -1
  663. package/dist/es5/utils/format-value.js +0 -57
  664. package/dist/es5/utils/format-value.js.map +0 -1
  665. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  666. package/dist/es5/utils/is-old-ie.js +0 -14
  667. package/dist/es5/utils/is-old-ie.js.map +0 -1
  668. package/dist/es5/utils/load-file.js +0 -50
  669. package/dist/es5/utils/load-file.js.map +0 -1
  670. package/dist/es5/utils/stub-methods.js +0 -25
  671. package/dist/es5/utils/stub-methods.js.map +0 -1
  672. package/dist/es5/utils/utils.d.ts +0 -13
  673. package/dist/es5/utils/utils.js +0 -36
  674. package/dist/es5/utils/utils.js.map +0 -1
  675. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  676. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  677. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  678. package/dist/esm/classes/buffer.d.ts +0 -84
  679. package/dist/esm/classes/buffer.js.map +0 -1
  680. package/dist/esm/classes/clear.d.ts +0 -11
  681. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  682. package/dist/esm/classes/framebuffer.d.ts +0 -96
  683. package/dist/esm/classes/program-configuration.d.ts +0 -15
  684. package/dist/esm/classes/program.d.ts +0 -44
  685. package/dist/esm/classes/query.d.ts +0 -21
  686. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  687. package/dist/esm/classes/resource.d.ts +0 -47
  688. package/dist/esm/classes/resource.js.map +0 -1
  689. package/dist/esm/classes/shader.d.ts +0 -29
  690. package/dist/esm/classes/texture-2d.d.ts +0 -11
  691. package/dist/esm/classes/texture-3d.d.ts +0 -29
  692. package/dist/esm/classes/texture-cube.d.ts +0 -23
  693. package/dist/esm/classes/texture.d.ts +0 -80
  694. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  695. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  696. package/dist/esm/classes/uniforms.d.ts +0 -63
  697. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  698. package/dist/esm/classes/vertex-array.d.ts +0 -37
  699. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  700. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  701. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  702. package/dist/esm/features/check-glsl-extension.js +0 -27
  703. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  704. package/dist/esm/features/check-old-ie.js.map +0 -1
  705. package/dist/esm/features/features.js +0 -66
  706. package/dist/esm/features/features.js.map +0 -1
  707. package/dist/esm/features/index.js +0 -5
  708. package/dist/esm/features/index.js.map +0 -1
  709. package/dist/esm/features/limits.js +0 -52
  710. package/dist/esm/features/limits.js.map +0 -1
  711. package/dist/esm/features/webgl-features-table.js.map +0 -1
  712. package/dist/esm/features/webgl-limits-table.js +0 -160
  713. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  714. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  715. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  716. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  717. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  718. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  719. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  720. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  721. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  722. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  723. package/dist/esm/glsl-utils/index.js +0 -5
  724. package/dist/esm/glsl-utils/index.js.map +0 -1
  725. package/dist/esm/index.d.ts +0 -71
  726. package/dist/esm/init.d.ts +0 -12
  727. package/dist/esm/types.d.ts +0 -8
  728. package/dist/esm/utils/array-utils-flat.js +0 -39
  729. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  730. package/dist/esm/utils/assert.d.ts +0 -1
  731. package/dist/esm/utils/assert.js +0 -6
  732. package/dist/esm/utils/assert.js.map +0 -1
  733. package/dist/esm/utils/check-props.js +0 -38
  734. package/dist/esm/utils/check-props.js.map +0 -1
  735. package/dist/esm/utils/format-value.js +0 -50
  736. package/dist/esm/utils/format-value.js.map +0 -1
  737. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  738. package/dist/esm/utils/is-old-ie.js +0 -5
  739. package/dist/esm/utils/is-old-ie.js.map +0 -1
  740. package/dist/esm/utils/load-file.js +0 -30
  741. package/dist/esm/utils/load-file.js.map +0 -1
  742. package/dist/esm/utils/stub-methods.js +0 -17
  743. package/dist/esm/utils/stub-methods.js.map +0 -1
  744. package/dist/esm/utils/utils.d.ts +0 -13
  745. package/dist/esm/utils/utils.js +0 -22
  746. package/dist/esm/utils/utils.js.map +0 -1
  747. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  748. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  749. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  750. package/src/bundle.js +0 -8
  751. package/src/classes/buffer.d.ts +0 -84
  752. package/src/classes/clear.d.ts +0 -11
  753. package/src/classes/copy-and-blit.d.ts +0 -101
  754. package/src/classes/framebuffer.d.ts +0 -96
  755. package/src/classes/program-configuration.d.ts +0 -15
  756. package/src/classes/program-configuration.js +0 -123
  757. package/src/classes/program.d.ts +0 -44
  758. package/src/classes/query.d.ts +0 -21
  759. package/src/classes/renderbuffer.d.ts +0 -34
  760. package/src/classes/renderbuffer.js +0 -105
  761. package/src/classes/resource.d.ts +0 -47
  762. package/src/classes/shader.d.ts +0 -29
  763. package/src/classes/shader.js +0 -147
  764. package/src/classes/texture-2d.d.ts +0 -11
  765. package/src/classes/texture-2d.js +0 -30
  766. package/src/classes/texture-3d.d.ts +0 -29
  767. package/src/classes/texture-cube.d.ts +0 -23
  768. package/src/classes/texture.d.ts +0 -80
  769. package/src/classes/transform-feedback.d.ts +0 -16
  770. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  771. package/src/classes/uniforms.d.ts +0 -63
  772. package/src/classes/vertex-array-object.d.ts +0 -25
  773. package/src/classes/vertex-array.d.ts +0 -37
  774. package/src/debug/debug-program-configuration.d.ts +0 -1
  775. package/src/debug/debug-uniforms.d.ts +0 -11
  776. package/src/debug/debug-vertex-array.d.ts +0 -1
  777. package/src/features/check-glsl-extension.js +0 -34
  778. package/src/features/features.js +0 -79
  779. package/src/features/index.js +0 -5
  780. package/src/features/limits.js +0 -65
  781. package/src/features/webgl-limits-table.js +0 -51
  782. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  783. package/src/glsl-utils/format-glsl-error.js +0 -107
  784. package/src/glsl-utils/get-shader-name.js +0 -7
  785. package/src/glsl-utils/get-shader-type-name.js +0 -13
  786. package/src/glsl-utils/get-shader-version.js +0 -12
  787. package/src/glsl-utils/index.js +0 -8
  788. package/src/index.d.ts +0 -71
  789. package/src/index.js +0 -70
  790. package/src/init.d.ts +0 -12
  791. package/src/utils/array-utils-flat.js +0 -56
  792. package/src/utils/assert.d.ts +0 -1
  793. package/src/utils/assert.js +0 -7
  794. package/src/utils/check-props.js +0 -68
  795. package/src/utils/format-value.js +0 -37
  796. package/src/utils/is-old-ie.d.ts +0 -1
  797. package/src/utils/is-old-ie.js +0 -6
  798. package/src/utils/load-file.js +0 -39
  799. package/src/utils/stub-methods.js +0 -20
  800. package/src/utils/utils.d.ts +0 -13
  801. package/src/utils/utils.js +0 -36
  802. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
  803. package/src/webgl-utils/texture-utils.d.ts +0 -11
  804. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -1,86 +1,309 @@
1
+ import {log, assert} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';
3
- import Resource from './resource';
3
+ import WebGLDevice from '../adapter/webgl-device';
4
+ import {getWebGL2Context, assertWebGL2Context} from '../context/context/webgl-checks';
5
+ import {getKey} from '../webgl-utils/constants-to-keys';
6
+ import Resource, {ResourceProps} from './webgl-resource';
4
7
  import Texture2D from './texture-2d';
5
8
  import Renderbuffer from './renderbuffer';
6
9
  import {clear, clearBuffer} from './clear';
7
- import {copyToDataUrl} from './copy-and-blit.js';
8
-
9
- import {getFeatures} from '../features';
10
- import {getKey} from '../webgl-utils/constants-to-keys';
11
- import {assert} from '../utils/assert';
10
+ import {copyToDataUrl} from './copy-and-blit';
12
11
 
13
12
  const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
14
13
 
15
- export default class Framebuffer extends Resource {
16
- static isSupported(gl, options = {}) {
17
- const {
18
- colorBufferFloat, // Whether floating point textures can be rendered and read
19
- colorBufferHalfFloat // Whether half float textures can be rendered and read
20
- } = options;
21
- let supported = true;
14
+ type TextureAttachment = {
15
+ texture: Texture2D;
16
+ layer?: number; // = 0
17
+ level?: number; // = 0
18
+ };
19
+
20
+ type Attachment = Renderbuffer | Texture2D | TextureAttachment;
21
+
22
+ export type ImmutableFramebufferProps = ResourceProps & {
23
+ attachments?: Record<string, Attachment>;
24
+ readBuffer?: number;
25
+ drawBuffers?: number[];
26
+ check?: boolean;
27
+ };
28
+
29
+ export type FramebufferProps = ImmutableFramebufferProps & {
30
+ width?: number;
31
+ height?: number;
32
+ color?: boolean;
33
+ depth?: boolean;
34
+ stencil?: boolean;
35
+ };
36
+
37
+ type colorBufferFloatOptions = {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean};
38
+
39
+ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
40
+ constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
41
+ super(WebGLDevice.attach(gl), props, {} as any);
42
+ this._initialize({
43
+ attachments: props?.attachments || {},
44
+ readBuffer: props?.readBuffer,
45
+ drawBuffers: props?.drawBuffers
46
+ });
47
+ }
22
48
 
23
- if (colorBufferFloat) {
24
- supported = Boolean(
25
- // WebGL 2
26
- gl.getExtension('EXT_color_buffer_float') ||
27
- // WebGL 1, not exposed on all platforms
28
- gl.getExtension('WEBGL_color_buffer_float') ||
29
- // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/
30
- gl.getExtension('OES_texture_float')
49
+ checkStatus(): this {
50
+ const {gl} = this;
51
+ const status = this.getStatus();
52
+ if (status !== gl.FRAMEBUFFER_COMPLETE) {
53
+ throw new Error(_getFrameBufferStatus(status));
54
+ }
55
+ return this;
56
+ }
57
+
58
+ getStatus(): number {
59
+ const {gl} = this;
60
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
61
+ const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
62
+ // @ts-expect-error
63
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
64
+ return status;
65
+ }
66
+
67
+ // DEBUG
68
+
69
+ // Note: Will only work when called in an event handler
70
+ show() {
71
+ if (typeof window !== 'undefined') {
72
+ window.open(copyToDataUrl(this), 'luma-debug-texture');
73
+ }
74
+ return this;
75
+ }
76
+
77
+ log(logLevel = 0, message = '') {
78
+ if (logLevel > log.level || typeof window === 'undefined') {
79
+ return this;
80
+ }
81
+ message = message || `Framebuffer ${this.id}`;
82
+ const image = copyToDataUrl(this, {targetMaxHeight: 100});
83
+ // @ts-expect-error probe.gl typings incorrectly require priority...
84
+ log.image({logLevel, message, image})();
85
+ return this;
86
+ }
87
+
88
+ // WEBGL INTERFACE
89
+ bind({target = GL.FRAMEBUFFER} = {}) {
90
+ this.gl.bindFramebuffer(target, this.handle);
91
+ return this;
92
+ }
93
+
94
+ unbind({target = GL.FRAMEBUFFER} = {}) {
95
+ this.gl.bindFramebuffer(target, null);
96
+ return this;
97
+ }
98
+
99
+ // PRIVATE
100
+
101
+ _initialize(options: {attachments: Record<string, Attachment>; readBuffer?: number; drawBuffers?: number[]}): this {
102
+ const {attachments = {}, readBuffer, drawBuffers} = options;
103
+
104
+ this._attach(attachments);
105
+
106
+ // Multiple render target support, set read buffer and draw buffers
107
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
108
+ if (readBuffer) {
109
+ this._setReadBuffer(readBuffer);
110
+ }
111
+ if (drawBuffers) {
112
+ this._setDrawBuffers(drawBuffers);
113
+ }
114
+ // @ts-expect-error
115
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
116
+
117
+ return this;
118
+ }
119
+
120
+ /** Attach from a map of attachments */
121
+ _attach(attachments: Record<string, Attachment>) {
122
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
123
+
124
+ // Walk the attachments
125
+ for (const key in attachments) {
126
+ // Ensure key is not undefined
127
+ assert(key !== undefined, 'Misspelled framebuffer binding point?');
128
+ const attachmentPoint = Number(key) as GL;
129
+ const attachment = attachments[attachmentPoint];
130
+ this._attachOne(attachmentPoint, attachment);
131
+ }
132
+
133
+ // @ts-expect-error
134
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
135
+ }
136
+
137
+ /** Attach one attachment */
138
+ _attachOne(attachmentPoint: GL, attachment: Attachment): Renderbuffer | Texture2D {
139
+ if (attachment instanceof Renderbuffer) {
140
+ this._attachRenderbuffer(attachmentPoint, attachment);
141
+ return attachment;
142
+ } else if (Array.isArray(attachment)) {
143
+ const [texture, layer = 0, level = 0] = attachment;
144
+ this._attachTexture(attachmentPoint, texture, layer, level);
145
+ return texture;
146
+ } else if (attachment instanceof Texture2D) {
147
+ this._attachTexture(attachmentPoint, attachment, 0, 0);
148
+ return attachment;
149
+ }
150
+ }
151
+
152
+ _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {
153
+ this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
154
+ }
155
+
156
+ /**
157
+ * @param attachment
158
+ * @param texture
159
+ * @param layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`
160
+ * @param level = 0 - mipmapLevel (must be 0 in WebGL1)
161
+ */
162
+ _attachTexture(attachment: GL, texture: Texture2D, layer: number, level: number): void {
163
+ const {gl} = this;
164
+ gl.bindTexture(texture.target, texture.handle);
165
+
166
+ switch (texture.target) {
167
+ case GL.TEXTURE_2D_ARRAY:
168
+ case GL.TEXTURE_3D:
169
+ const gl2 = assertWebGL2Context(gl);
170
+ gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
171
+ break;
172
+
173
+ case GL.TEXTURE_CUBE_MAP:
174
+ // layer must be a cubemap face (or if index, converted to cube map face)
175
+ const face = mapIndexToCubeMapFace(layer);
176
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
177
+ break;
178
+
179
+ case GL.TEXTURE_2D:
180
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
181
+ break;
182
+
183
+ default:
184
+ assert(false, 'Illegal texture type');
185
+ }
186
+
187
+ gl.bindTexture(texture.target, null);
188
+ }
189
+
190
+ /** @note Expects framebuffer to be bound */
191
+ _setReadBuffer(readBuffer: number): void {
192
+ const gl2 = getWebGL2Context(this.gl);
193
+ if (gl2) {
194
+ gl2.readBuffer(readBuffer);
195
+ } else {
196
+ // Setting to color attachment 0 is a noop, so allow it in WebGL1
197
+ assert(
198
+ readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,
199
+ ERR_MULTIPLE_RENDERTARGETS
31
200
  );
32
201
  }
202
+ }
33
203
 
34
- if (colorBufferHalfFloat) {
35
- supported =
36
- supported &&
37
- Boolean(
38
- // WebGL 2
39
- gl.getExtension('EXT_color_buffer_float') ||
40
- // WebGL 1
41
- gl.getExtension('EXT_color_buffer_half_float')
204
+ /** @note Expects framebuffer to be bound */
205
+ _setDrawBuffers(drawBuffers: number[]) {
206
+ const {gl} = this;
207
+ const gl2 = assertWebGL2Context(gl);
208
+ if (gl2) {
209
+ gl2.drawBuffers(drawBuffers);
210
+ } else {
211
+ // TODO - is this not handled by polyfills?
212
+ const ext = gl.getExtension('WEBGL_draw_buffers');
213
+ if (ext) {
214
+ ext.drawBuffersWEBGL(drawBuffers);
215
+ } else {
216
+ // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1
217
+ assert(
218
+ drawBuffers.length === 1 &&
219
+ (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),
220
+ ERR_MULTIPLE_RENDERTARGETS
42
221
  );
222
+ }
43
223
  }
224
+ }
225
+
226
+ // RESOURCE METHODS
44
227
 
45
- return supported;
228
+ _createHandle() {
229
+ return this.gl.createFramebuffer();
46
230
  }
47
231
 
48
- // Create a Framebuffer wrapper for the default framebuffer (target === null)
49
- static getDefaultFramebuffer(gl) {
50
- gl.luma = gl.luma || {};
51
- gl.luma.defaultFramebuffer =
52
- gl.luma.defaultFramebuffer ||
232
+ _deleteHandle() {
233
+ this.gl.deleteFramebuffer(this.handle);
234
+ }
235
+
236
+ _bindHandle(handle) {
237
+ return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
238
+ }
239
+ }
240
+
241
+ export default class Framebuffer extends ImmutableFramebuffer {
242
+ width = null;
243
+ height = null;
244
+ attachments = {};
245
+ readBuffer = GL.COLOR_ATTACHMENT0;
246
+ drawBuffers = [GL.COLOR_ATTACHMENT0];
247
+ ownResources = [];
248
+
249
+ static readonly FRAMEBUFFER_ATTACHMENT_PARAMETERS = [
250
+ GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture
251
+ GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE
252
+ // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.
253
+ // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint
254
+ // EXT_sRGB or WebGL2
255
+ GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG
256
+ // WebGL2
257
+ // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint
258
+ GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint
259
+ GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint
260
+ GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint
261
+ GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint
262
+ GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint
263
+ GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint
264
+ // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
265
+ // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.
266
+ ];
267
+
268
+ /**
269
+ * Check color buffer float support
270
+ * @param options.colorBufferFloat Whether floating point textures can be rendered and read
271
+ * @param options.colorBufferHalfFloat Whether half float textures can be rendered and read
272
+ */
273
+ static isSupported(gl: WebGLRenderingContext, options: colorBufferFloatOptions): boolean {
274
+ return isFloatColorBufferSupported(gl, options);
275
+ }
276
+
277
+ /**
278
+ * returns the default Framebuffer
279
+ * Creates a Framebuffer object wrapper for the default WebGL framebuffer (target === null)
280
+ */
281
+ static getDefaultFramebuffer(gl: WebGLRenderingContext): Framebuffer {
282
+ const webglDevice = WebGLDevice.fromContext(gl);
283
+ webglDevice.defaultFramebuffer =
284
+ webglDevice.defaultFramebuffer ||
53
285
  new Framebuffer(gl, {
54
286
  id: 'default-framebuffer',
55
287
  handle: null,
56
288
  attachments: {}
57
289
  });
58
290
  // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?
59
- return gl.luma.defaultFramebuffer;
291
+ return webglDevice.defaultFramebuffer;
60
292
  }
61
293
 
62
- get MAX_COLOR_ATTACHMENTS() {
294
+ get MAX_COLOR_ATTACHMENTS(): number {
63
295
  const gl2 = assertWebGL2Context(this.gl);
64
296
  return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);
65
297
  }
66
298
 
67
- get MAX_DRAW_BUFFERS() {
299
+ get MAX_DRAW_BUFFERS(): number {
68
300
  const gl2 = assertWebGL2Context(this.gl);
69
301
  return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
70
302
  }
71
303
 
72
- constructor(gl, opts = {}) {
73
- super(gl, opts);
74
-
75
- // Public members
76
- this.width = null;
77
- this.height = null;
78
- this.attachments = {};
79
- this.readBuffer = GL.COLOR_ATTACHMENT0;
80
- this.drawBuffers = [GL.COLOR_ATTACHMENT0];
81
- this.ownResources = [];
82
- this.initialize(opts);
83
-
304
+ constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
305
+ super(gl, props);
306
+ this.initialize(props);
84
307
  Object.seal(this);
85
308
  }
86
309
 
@@ -106,17 +329,19 @@ export default class Framebuffer extends Resource {
106
329
  );
107
330
  }
108
331
 
109
- initialize({
110
- width = 1,
111
- height = 1,
112
- attachments = null,
113
- color = true,
114
- depth = true,
115
- stencil = false,
116
- check = true,
117
- readBuffer = undefined,
118
- drawBuffers = undefined
119
- }) {
332
+ // initialize(props?: FramebufferProps): this;
333
+ initialize(props: FramebufferProps) {
334
+ let {attachments = null} = props || {};
335
+ const {
336
+ width = 1,
337
+ height = 1,
338
+ color = true,
339
+ depth = true,
340
+ stencil = false,
341
+ check = true,
342
+ readBuffer = undefined,
343
+ drawBuffers = undefined
344
+ } = props || {};
120
345
  assert(width >= 0 && height >= 0, 'Width and height need to be integers');
121
346
 
122
347
  // Store actual width and height for diffing
@@ -144,7 +369,7 @@ export default class Framebuffer extends Resource {
144
369
  }
145
370
  }
146
371
 
147
- delete() {
372
+ delete(): this {
148
373
  for (const resource of this.ownResources) {
149
374
  resource.delete();
150
375
  }
@@ -152,13 +377,22 @@ export default class Framebuffer extends Resource {
152
377
  return this;
153
378
  }
154
379
 
155
- update({
156
- attachments = {},
157
- readBuffer,
158
- drawBuffers,
159
- clearAttachments = false,
160
- resizeAttachments = true
161
- }) {
380
+ update(options: {
381
+ attachments: Record<string, Attachment>,
382
+ readBuffer?: number,
383
+ drawBuffers?,
384
+ clearAttachments?: boolean,
385
+ resizeAttachments?: boolean
386
+ }): this {
387
+
388
+ const {
389
+ attachments = {},
390
+ readBuffer,
391
+ drawBuffers,
392
+ clearAttachments = false,
393
+ resizeAttachments = true
394
+ } = options;
395
+
162
396
  this.attach(attachments, {clearAttachments, resizeAttachments});
163
397
 
164
398
  const {gl} = this;
@@ -166,19 +400,21 @@ export default class Framebuffer extends Resource {
166
400
  const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
167
401
  if (readBuffer) {
168
402
  this._setReadBuffer(readBuffer);
403
+ this.readBuffer = readBuffer;
169
404
  }
170
405
  if (drawBuffers) {
171
406
  this._setDrawBuffers(drawBuffers);
407
+ this.drawBuffers = drawBuffers;
172
408
  }
173
- // @ts-ignore
409
+ // @ts-expect-error
174
410
  gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
175
411
 
176
412
  return this;
177
413
  }
178
414
 
179
- // Attachment resize is expected to be a noop if size is same
180
- resize(options = {}) {
181
- let {width, height} = options;
415
+ /** Attachment resize is expected to be a noop if size is same */
416
+ resize(size?: {width?: number; height?: number}): this {
417
+ let {width, height} = size || {};
182
418
  // for default framebuffer, just update the stored size
183
419
  if (this.handle === null) {
184
420
  assert(width === undefined && height === undefined);
@@ -205,13 +441,13 @@ export default class Framebuffer extends Resource {
205
441
  return this;
206
442
  }
207
443
 
208
- // Attach from a map of attachments
444
+ /** Attach from a map of attachments */
209
445
  attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {
210
446
  const newAttachments = {};
211
447
 
212
448
  // Any current attachments need to be removed, add null values to map
213
449
  if (clearAttachments) {
214
- Object.keys(this.attachments).forEach(key => {
450
+ Object.keys(this.attachments).forEach((key) => {
215
451
  newAttachments[key] = null;
216
452
  });
217
453
  }
@@ -232,14 +468,9 @@ export default class Framebuffer extends Resource {
232
468
  let object = descriptor;
233
469
  if (!object) {
234
470
  this._unattach(attachment);
235
- } else if (object instanceof Renderbuffer) {
236
- this._attachRenderbuffer({attachment, renderbuffer: object});
237
- } else if (Array.isArray(descriptor)) {
238
- const [texture, layer = 0, level = 0] = descriptor;
239
- object = texture;
240
- this._attachTexture({attachment, texture, layer, level});
241
471
  } else {
242
- this._attachTexture({attachment, texture: object, layer: 0, level: 0});
472
+ object = this._attachOne(attachment, object);
473
+ this.attachments[attachment] = object;
243
474
  }
244
475
 
245
476
  // Resize objects
@@ -248,37 +479,19 @@ export default class Framebuffer extends Resource {
248
479
  }
249
480
  }
250
481
 
251
- // @ts-ignore
482
+ // @ts-expect-error
252
483
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
253
484
 
254
485
  // Assign to attachments and remove any nulls to get a clean attachment map
255
486
  Object.assign(this.attachments, attachments);
256
487
  Object.keys(this.attachments)
257
- .filter(key => !this.attachments[key])
258
- .forEach(key => {
488
+ .filter((key) => !this.attachments[key])
489
+ .forEach((key) => {
259
490
  delete this.attachments[key];
260
491
  });
261
492
  }
262
493
 
263
- checkStatus() {
264
- const {gl} = this;
265
- const status = this.getStatus();
266
- if (status !== gl.FRAMEBUFFER_COMPLETE) {
267
- throw new Error(_getFrameBufferStatus(status));
268
- }
269
- return this;
270
- }
271
-
272
- getStatus() {
273
- const {gl} = this;
274
- const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
275
- const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
276
- // @ts-ignore
277
- gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
278
- return status;
279
- }
280
-
281
- clear(options = {}) {
494
+ clear(options?: {color?: any; depth?: any; stencil?: any; drawBuffers?: any[]}): this {
282
495
  const {color, depth, stencil, drawBuffers = []} = options;
283
496
 
284
497
  // Bind framebuffer and delegate to global clear functions
@@ -292,66 +505,12 @@ export default class Framebuffer extends Resource {
292
505
  clearBuffer(this.gl, {drawBuffer, value});
293
506
  });
294
507
 
295
- // @ts-ignore
508
+ // @ts-expect-error
296
509
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
297
510
 
298
511
  return this;
299
512
  }
300
513
 
301
- // NOTE: Slow requires roundtrip to GPU
302
- // App can provide pixelArray or have it auto allocated by this method
303
- // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
304
- // newly allocated by this method unless provided by app.
305
- readPixels(opts = {}) {
306
- log.error(
307
- 'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'
308
- )();
309
- return null;
310
- }
311
-
312
- // Reads data into provided buffer object asynchronously
313
- // This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
314
- readPixelsToBuffer(opts = {}) {
315
- log.error(
316
- 'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'
317
- )();
318
- return null;
319
- }
320
-
321
- // Reads pixels as a dataUrl
322
- copyToDataUrl(opts = {}) {
323
- log.error(
324
- 'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'
325
- )();
326
- return null;
327
- }
328
-
329
- // Reads pixels into an HTML Image
330
- copyToImage(opts = {}) {
331
- log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();
332
- return null;
333
- }
334
-
335
- // copyToFramebuffer({width, height}) {
336
- // const scaleX = width / this.width;
337
- // const scaleY = height / this.height;
338
- // const scale = Math.min(scaleX, scaleY);
339
- // width = width * scale;
340
- // height = height * scale;
341
- // const scaledFramebuffer = new Framebuffer(this.gl, {width, height});
342
- // this.blit();
343
- // }
344
-
345
- // Copy a rectangle from a framebuffer attachment into a texture (at an offset)
346
- // NOTE: assumes texture has enough storage allocated
347
- // eslint-disable-next-line complexity
348
- copyToTexture(opts = {}) {
349
- log.error(
350
- 'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'
351
- )();
352
- return null;
353
- }
354
-
355
514
  // WEBGL2 INTERFACE
356
515
 
357
516
  // Copies a rectangle of pixels between framebuffers
@@ -362,7 +521,8 @@ export default class Framebuffer extends Resource {
362
521
  }
363
522
 
364
523
  // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer
365
- invalidate({attachments = [], x = 0, y = 0, width, height}) {
524
+ invalidate(options: {attachments: []; x?: number; y?: number; width: number; height: number}) {
525
+ const {attachments = [], x = 0, y = 0, width, height} = options;
366
526
  const gl2 = assertWebGL2Context(this.gl);
367
527
  const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);
368
528
  const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
@@ -370,10 +530,10 @@ export default class Framebuffer extends Resource {
370
530
  gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);
371
531
  } else {
372
532
  // TODO - why does type checking fail on this line
373
- // @ts-ignore
533
+ // @ts-expect-error
374
534
  gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);
375
535
  }
376
- // @ts-ignore
536
+ // @ts-expect-error
377
537
  gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);
378
538
  return this;
379
539
  }
@@ -388,7 +548,7 @@ export default class Framebuffer extends Resource {
388
548
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
389
549
  }
390
550
  if (keys && value > 1000) {
391
- // @ts-ignore
551
+ // @ts-expect-error
392
552
  value = getKey(this.gl, value);
393
553
  }
394
554
  return value;
@@ -397,7 +557,7 @@ export default class Framebuffer extends Resource {
397
557
  getAttachmentParameters(
398
558
  attachment = GL.COLOR_ATTACHMENT0,
399
559
  keys,
400
- // @ts-ignore
560
+ // @ts-expect-error
401
561
  parameters = this.constructor.ATTACHMENT_PARAMETERS || []
402
562
  ) {
403
563
  const values = {};
@@ -408,6 +568,7 @@ export default class Framebuffer extends Resource {
408
568
  return values;
409
569
  }
410
570
 
571
+ // @ts-expect-error
411
572
  getParameters(keys = true) {
412
573
  const attachments = Object.keys(this.attachments);
413
574
  // if (this === this.gl.luma.defaultFramebuffer) {
@@ -422,37 +583,6 @@ export default class Framebuffer extends Resource {
422
583
  return parameters;
423
584
  }
424
585
 
425
- // DEBUG
426
-
427
- // Note: Will only work when called in an event handler
428
- show() {
429
- if (typeof window !== 'undefined') {
430
- window.open(copyToDataUrl(this), 'luma-debug-texture');
431
- }
432
- return this;
433
- }
434
-
435
- log(logLevel = 0, message = '') {
436
- if (logLevel > log.level || typeof window === 'undefined') {
437
- return this;
438
- }
439
- message = message || `Framebuffer ${this.id}`;
440
- const image = copyToDataUrl(this, {targetMaxHeight: 100});
441
- log.image({logLevel, message, image}, message)();
442
- return this;
443
- }
444
-
445
- // WEBGL INTERFACE
446
- bind({target = GL.FRAMEBUFFER} = {}) {
447
- this.gl.bindFramebuffer(target, this.handle);
448
- return this;
449
- }
450
-
451
- unbind({target = GL.FRAMEBUFFER} = {}) {
452
- this.gl.bindFramebuffer(target, null);
453
- return this;
454
- }
455
-
456
586
  // PRIVATE METHODS
457
587
 
458
588
  _createDefaultAttachments(color, depth, stencil, width, height) {
@@ -541,126 +671,36 @@ export default class Framebuffer extends Resource {
541
671
  delete this.attachments[attachment];
542
672
  }
543
673
 
544
- _attachRenderbuffer({attachment = GL.COLOR_ATTACHMENT0, renderbuffer}) {
545
- const {gl} = this;
546
- // TODO - is the bind needed?
547
- // gl.bindRenderbuffer(GL.RENDERBUFFER, renderbuffer.handle);
548
- gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
549
- // TODO - is the unbind needed?
550
- // gl.bindRenderbuffer(GL.RENDERBUFFER, null);
551
-
552
- this.attachments[attachment] = renderbuffer;
553
- }
554
-
555
- // layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`
556
- // level = 0 - mipmapLevel (must be 0 in WebGL1)
557
- _attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {
558
- const {gl} = this;
559
- gl.bindTexture(texture.target, texture.handle);
560
-
561
- switch (texture.target) {
562
- case GL.TEXTURE_2D_ARRAY:
563
- case GL.TEXTURE_3D:
564
- const gl2 = assertWebGL2Context(gl);
565
- gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
566
- break;
567
-
568
- case GL.TEXTURE_CUBE_MAP:
569
- // layer must be a cubemap face (or if index, converted to cube map face)
570
- const face = mapIndexToCubeMapFace(layer);
571
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
572
- break;
573
-
574
- case GL.TEXTURE_2D:
575
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
576
- break;
577
-
578
- default:
579
- assert(false, 'Illegal texture type');
580
- }
581
-
582
- gl.bindTexture(texture.target, null);
583
- this.attachments[attachment] = texture;
584
- }
585
-
586
- // Expects framebuffer to be bound
587
- _setReadBuffer(readBuffer) {
588
- const gl2 = getWebGL2Context(this.gl);
589
- if (gl2) {
590
- gl2.readBuffer(readBuffer);
591
- } else {
592
- // Setting to color attachment 0 is a noop, so allow it in WebGL1
593
- assert(
594
- readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,
595
- ERR_MULTIPLE_RENDERTARGETS
596
- );
597
- }
598
- this.readBuffer = readBuffer;
599
- }
600
-
601
- // Expects framebuffer to be bound
602
- _setDrawBuffers(drawBuffers) {
603
- const {gl} = this;
604
- const gl2 = assertWebGL2Context(gl);
605
- if (gl2) {
606
- gl2.drawBuffers(drawBuffers);
607
- } else {
608
- // TODO - is this not handled by polyfills?
609
- const ext = gl.getExtension('WEBGL_draw_buffers');
610
- if (ext) {
611
- ext.drawBuffersWEBGL(drawBuffers);
612
- } else {
613
- // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1
614
- assert(
615
- drawBuffers.length === 1 &&
616
- (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),
617
- ERR_MULTIPLE_RENDERTARGETS
618
- );
619
- }
620
- }
621
- this.drawBuffers = drawBuffers;
622
- }
623
-
624
- // Attempt to provide workable defaults for WebGL2 symbols under WebGL1
625
- // null means OK to query
626
- // TODO - move to webgl1 polyfills
627
- /* eslint-disable complexity */
674
+ /**
675
+ * Attempt to provide workable defaults for WebGL2 symbols under WebGL1
676
+ * null means OK to query
677
+ * TODO - move to webgl1 polyfills
678
+ * @param pname
679
+ * @returns
680
+ */
681
+ // eslint-disable-next-line complexity
628
682
  _getAttachmentParameterFallback(pname) {
629
- const caps = getFeatures(this.gl);
683
+ const webglDevice = WebGLDevice.fromContext(this.gl);
684
+ const features = webglDevice.features;
630
685
 
631
686
  switch (pname) {
632
687
  case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint
633
- return !caps.WEBGL2 ? 0 : null;
688
+ return !features.has('webgl2') ? 0 : null;
634
689
  case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint
635
690
  case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint
636
691
  case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint
637
692
  case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint
638
693
  case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint
639
694
  case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint
640
- return !caps.WEBGL2 ? 8 : null;
695
+ return !features.has('webgl2') ? 8 : null;
641
696
  case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum
642
- return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;
697
+ return !features.has('webgl2') ? GL.UNSIGNED_INT : null;
643
698
  case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
644
- return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;
699
+ return !features.has('webgl2') && !features.has('webgl-color-encoding-srgb') ? GL.LINEAR : null;
645
700
  default:
646
701
  return null;
647
702
  }
648
703
  }
649
- /* eslint-enable complexity */
650
-
651
- // RESOURCE METHODS
652
-
653
- _createHandle() {
654
- return this.gl.createFramebuffer();
655
- }
656
-
657
- _deleteHandle() {
658
- this.gl.deleteFramebuffer(this.handle);
659
- }
660
-
661
- _bindHandle(handle) {
662
- return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
663
- }
664
704
  }
665
705
 
666
706
  // PUBLIC METHODS
@@ -676,28 +716,48 @@ function mapIndexToCubeMapFace(layer) {
676
716
  // Get a string describing the framebuffer error if installed
677
717
  function _getFrameBufferStatus(status) {
678
718
  // Use error mapping if installed
679
- // @ts-ignore
719
+ // @ts-expect-error
680
720
  const STATUS = Framebuffer.STATUS || {};
681
721
  return STATUS[status] || `Framebuffer error ${status}`;
682
722
  }
683
723
 
684
- export const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [
685
- GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture
686
- GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE
687
- // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.
688
- // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint
689
- // EXT_sRGB or WebGL2
690
- GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG
691
- // WebGL2
692
- // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint
693
- GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint
694
- GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint
695
- GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint
696
- GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint
697
- GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint
698
- GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint
699
- // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
700
- // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.
701
- ];
702
-
703
- Framebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;
724
+ /**
725
+ * Support
726
+ * @param gl
727
+ * @param options.colorBufferFloat Whether floating point textures can be rendered and read
728
+ * @param options.colorBufferHalfFloat Whether half float textures can be rendered and read
729
+ */
730
+ function isFloatColorBufferSupported(
731
+ gl: WebGLRenderingContext,
732
+ options: {colorBufferFloat?: boolean; colorBufferHalfFloat?: boolean}
733
+ ): boolean {
734
+ const {
735
+ colorBufferFloat, // Whether floating point textures can be rendered and read
736
+ colorBufferHalfFloat // Whether half float textures can be rendered and read
737
+ } = options;
738
+ let supported = true;
739
+
740
+ if (colorBufferFloat) {
741
+ supported = Boolean(
742
+ // WebGL 2
743
+ gl.getExtension('EXT_color_buffer_float') ||
744
+ // WebGL 1, not exposed on all platforms
745
+ gl.getExtension('WEBGL_color_buffer_float') ||
746
+ // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/
747
+ gl.getExtension('OES_texture_float')
748
+ );
749
+ }
750
+
751
+ if (colorBufferHalfFloat) {
752
+ supported =
753
+ supported &&
754
+ Boolean(
755
+ // WebGL 2
756
+ gl.getExtension('EXT_color_buffer_float') ||
757
+ // WebGL 1
758
+ gl.getExtension('EXT_color_buffer_half_float')
759
+ );
760
+ }
761
+
762
+ return supported;
763
+ }