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

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 (633) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +5 -0
  4. package/dist/bundle.js.map +1 -0
  5. package/dist/classes/accessor.d.ts +28 -0
  6. package/dist/classes/accessor.d.ts.map +1 -0
  7. package/dist/classes/accessor.js +112 -0
  8. package/dist/classes/accessor.js.map +1 -0
  9. package/dist/classes/accessor.ts.disabled +159 -0
  10. package/dist/classes/clear.d.ts +16 -0
  11. package/dist/classes/clear.d.ts.map +1 -0
  12. package/dist/classes/clear.js +102 -0
  13. package/dist/classes/clear.js.map +1 -0
  14. package/dist/classes/copy-and-blit.d.ts +69 -0
  15. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  16. package/dist/classes/copy-and-blit.js +333 -0
  17. package/dist/classes/copy-and-blit.js.map +1 -0
  18. package/dist/classes/framebuffer.d.ts +130 -0
  19. package/dist/classes/framebuffer.d.ts.map +1 -0
  20. package/dist/classes/framebuffer.js +656 -0
  21. package/dist/classes/framebuffer.js.map +1 -0
  22. package/dist/classes/program-configuration.d.ts +27 -0
  23. package/dist/classes/program-configuration.d.ts.map +1 -0
  24. package/dist/classes/program-configuration.js +160 -0
  25. package/dist/classes/program-configuration.js.map +1 -0
  26. package/dist/classes/program.d.ts +61 -0
  27. package/dist/classes/program.d.ts.map +1 -0
  28. package/dist/classes/program.js +368 -0
  29. package/dist/classes/program.js.map +1 -0
  30. package/dist/classes/query.d.ts +27 -0
  31. package/dist/classes/query.d.ts.map +1 -0
  32. package/dist/classes/query.js +144 -0
  33. package/dist/classes/query.js.map +1 -0
  34. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  35. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  36. package/dist/classes/renderbuffer-formats.js +185 -0
  37. package/dist/classes/renderbuffer-formats.js.map +1 -0
  38. package/dist/classes/renderbuffer.d.ts +60 -0
  39. package/dist/classes/renderbuffer.d.ts.map +1 -0
  40. package/dist/classes/renderbuffer.js +127 -0
  41. package/dist/classes/renderbuffer.js.map +1 -0
  42. package/dist/classes/texture-2d.d.ts +8 -0
  43. package/dist/classes/texture-2d.d.ts.map +1 -0
  44. package/dist/classes/texture-2d.js +39 -0
  45. package/dist/classes/texture-2d.js.map +1 -0
  46. package/dist/classes/texture-3d.d.ts +28 -0
  47. package/dist/classes/texture-3d.d.ts.map +1 -0
  48. package/dist/classes/texture-3d.js +67 -0
  49. package/dist/classes/texture-3d.js.map +1 -0
  50. package/dist/classes/texture-cube.d.ts +27 -0
  51. package/dist/classes/texture-cube.d.ts.map +1 -0
  52. package/dist/classes/texture-cube.js +131 -0
  53. package/dist/classes/texture-cube.js.map +1 -0
  54. package/dist/classes/texture-formats.d.ts +37 -0
  55. package/dist/classes/texture-formats.d.ts.map +1 -0
  56. package/dist/classes/texture-formats.js +98 -0
  57. package/dist/classes/texture-formats.js.map +1 -0
  58. package/dist/classes/texture.d.ts +118 -0
  59. package/dist/classes/texture.d.ts.map +1 -0
  60. package/dist/classes/texture.js +785 -0
  61. package/dist/classes/texture.js.map +1 -0
  62. package/dist/classes/transform-feedback.d.ts +33 -0
  63. package/dist/classes/transform-feedback.d.ts.map +1 -0
  64. package/dist/classes/transform-feedback.js +197 -0
  65. package/dist/classes/transform-feedback.js.map +1 -0
  66. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  67. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  68. package/dist/classes/uniform-buffer-layout.js +104 -0
  69. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  70. package/dist/classes/uniforms.d.ts +38 -0
  71. package/dist/classes/uniforms.d.ts.map +1 -0
  72. package/dist/classes/uniforms.js +251 -0
  73. package/dist/classes/uniforms.js.map +1 -0
  74. package/dist/classes/vertex-array-object.d.ts +75 -0
  75. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  76. package/dist/classes/vertex-array-object.js +262 -0
  77. package/dist/classes/vertex-array-object.js.map +1 -0
  78. package/dist/classes/vertex-array.d.ts +75 -0
  79. package/dist/classes/vertex-array.d.ts.map +1 -0
  80. package/dist/classes/vertex-array.js +409 -0
  81. package/dist/classes/vertex-array.js.map +1 -0
  82. package/dist/classes/webgl-buffer.d.ts +98 -0
  83. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  84. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +97 -73
  85. package/dist/classes/webgl-buffer.js.map +1 -0
  86. package/dist/classes/webgl-resource.d.ts +54 -0
  87. package/dist/classes/webgl-resource.d.ts.map +1 -0
  88. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +31 -52
  89. package/dist/classes/webgl-resource.js.map +1 -0
  90. package/dist/classes/webgl-shader.d.ts +51 -0
  91. package/dist/classes/webgl-shader.d.ts.map +1 -0
  92. package/dist/classes/webgl-shader.js +190 -0
  93. package/dist/classes/webgl-shader.js.map +1 -0
  94. package/dist/context/gl-context.d.ts +15 -0
  95. package/dist/context/gl-context.d.ts.map +1 -0
  96. package/dist/context/gl-context.js +32 -0
  97. package/dist/context/gl-context.js.map +1 -0
  98. package/dist/context/luma-context-data.d.ts +31 -0
  99. package/dist/context/luma-context-data.d.ts.map +1 -0
  100. package/dist/context/luma-context-data.js +5 -0
  101. package/dist/context/luma-context-data.js.map +1 -0
  102. package/dist/debug/debug-program-configuration.d.ts +2 -0
  103. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  104. package/dist/debug/debug-program-configuration.js +40 -0
  105. package/dist/debug/debug-program-configuration.js.map +1 -0
  106. package/dist/debug/debug-uniforms.d.ts +12 -0
  107. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  108. package/dist/debug/debug-uniforms.js +108 -0
  109. package/dist/debug/debug-uniforms.js.map +1 -0
  110. package/dist/debug/debug-vertex-array.d.ts +5 -0
  111. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  112. package/dist/debug/debug-vertex-array.js +118 -0
  113. package/dist/debug/debug-vertex-array.js.map +1 -0
  114. package/dist/es5/bundle.js +3 -5
  115. package/dist/es5/bundle.js.map +1 -1
  116. package/dist/es5/classes/accessor.js +76 -108
  117. package/dist/es5/classes/accessor.js.map +1 -1
  118. package/dist/es5/classes/accessor.ts.disabled +159 -0
  119. package/dist/es5/classes/clear.js +33 -48
  120. package/dist/es5/classes/clear.js.map +1 -1
  121. package/dist/es5/classes/copy-and-blit.js +177 -192
  122. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  123. package/dist/es5/classes/framebuffer.js +538 -655
  124. package/dist/es5/classes/framebuffer.js.map +1 -1
  125. package/dist/es5/classes/program-configuration.js +127 -141
  126. package/dist/es5/classes/program-configuration.js.map +1 -1
  127. package/dist/es5/classes/program.js +294 -358
  128. package/dist/es5/classes/program.js.map +1 -1
  129. package/dist/es5/classes/query.js +115 -181
  130. package/dist/es5/classes/query.js.map +1 -1
  131. package/dist/es5/classes/renderbuffer-formats.js +186 -121
  132. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  133. package/dist/es5/classes/renderbuffer.js +104 -128
  134. package/dist/es5/classes/renderbuffer.js.map +1 -1
  135. package/dist/es5/classes/texture-2d.js +16 -39
  136. package/dist/es5/classes/texture-2d.js.map +1 -1
  137. package/dist/es5/classes/texture-3d.js +50 -89
  138. package/dist/es5/classes/texture-3d.js.map +1 -1
  139. package/dist/es5/classes/texture-cube.js +112 -162
  140. package/dist/es5/classes/texture-cube.js.map +1 -1
  141. package/dist/es5/classes/texture-formats.js +73 -42
  142. package/dist/es5/classes/texture-formats.js.map +1 -1
  143. package/dist/es5/classes/texture.js +670 -673
  144. package/dist/es5/classes/texture.js.map +1 -1
  145. package/dist/es5/classes/transform-feedback.js +150 -203
  146. package/dist/es5/classes/transform-feedback.js.map +1 -1
  147. package/dist/es5/classes/uniform-buffer-layout.js +89 -103
  148. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  149. package/dist/es5/classes/uniforms.js +134 -93
  150. package/dist/es5/classes/uniforms.js.map +1 -1
  151. package/dist/es5/classes/vertex-array-object.js +204 -306
  152. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  153. package/dist/es5/classes/vertex-array.js +317 -353
  154. package/dist/es5/classes/vertex-array.js.map +1 -1
  155. package/dist/es5/classes/webgl-buffer.js +391 -0
  156. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  157. package/dist/es5/classes/webgl-resource.js +217 -0
  158. package/dist/es5/classes/webgl-resource.js.map +1 -0
  159. package/dist/es5/classes/webgl-shader.js +213 -0
  160. package/dist/es5/classes/webgl-shader.js.map +1 -0
  161. package/dist/es5/context/gl-context.js +46 -0
  162. package/dist/es5/context/gl-context.js.map +1 -0
  163. package/dist/es5/context/luma-context-data.js +12 -0
  164. package/dist/es5/context/luma-context-data.js.map +1 -0
  165. package/dist/es5/debug/debug-program-configuration.js +20 -48
  166. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  167. package/dist/es5/debug/debug-uniforms.js +72 -114
  168. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  169. package/dist/es5/debug/debug-vertex-array.js +56 -51
  170. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  171. package/dist/es5/features/check-glsl-extension.js +9 -10
  172. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  173. package/dist/es5/features/check-old-ie.js +5 -6
  174. package/dist/es5/features/check-old-ie.js.map +1 -1
  175. package/dist/es5/features/features.js +23 -37
  176. package/dist/es5/features/features.js.map +1 -1
  177. package/dist/es5/features/index.js +8 -8
  178. package/dist/es5/features/index.js.map +1 -1
  179. package/dist/es5/features/limits.js +36 -28
  180. package/dist/es5/features/limits.js.map +1 -1
  181. package/dist/es5/features/webgl-features-table.js +35 -15
  182. package/dist/es5/features/webgl-features-table.js.map +1 -1
  183. package/dist/es5/features/webgl-limits-table.js +160 -120
  184. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  185. package/dist/es5/index.js +144 -90
  186. package/dist/es5/index.js.map +1 -1
  187. package/dist/es5/init.js +12 -36
  188. package/dist/es5/init.js.map +1 -1
  189. package/dist/es5/types.js +2 -0
  190. package/dist/es5/types.js.map +1 -0
  191. package/dist/es5/utils/array-utils-flat.js +13 -14
  192. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  193. package/dist/es5/utils/assert.js +1 -1
  194. package/dist/es5/utils/assert.js.map +1 -1
  195. package/dist/es5/utils/check-props.js +20 -21
  196. package/dist/es5/utils/check-props.js.map +1 -1
  197. package/dist/es5/utils/format-value.js +14 -14
  198. package/dist/es5/utils/format-value.js.map +1 -1
  199. package/dist/es5/utils/index.js +68 -0
  200. package/dist/es5/utils/index.js.map +1 -0
  201. package/dist/es5/utils/is-old-ie.js +2 -3
  202. package/dist/es5/utils/is-old-ie.js.map +1 -1
  203. package/dist/es5/utils/load-file.js +11 -18
  204. package/dist/es5/utils/load-file.js.map +1 -1
  205. package/dist/es5/utils/stub-methods.js +4 -4
  206. package/dist/es5/utils/stub-methods.js.map +1 -1
  207. package/dist/es5/utils/utils.js +5 -10
  208. package/dist/es5/utils/utils.js.map +1 -1
  209. package/dist/es5/webgl-utils/attribute-utils.js +87 -74
  210. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  211. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  212. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  213. package/dist/es5/webgl-utils/format-utils.js +21 -17
  214. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  215. package/dist/es5/webgl-utils/get-error.js +18 -18
  216. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  217. package/dist/es5/webgl-utils/index.js +74 -0
  218. package/dist/es5/webgl-utils/index.js.map +1 -0
  219. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +44 -0
  220. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  221. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  222. package/dist/es5/webgl-utils/texture-utils.js +35 -29
  223. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  224. package/dist/es5/webgl-utils/typed-array-utils.js +51 -47
  225. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  226. package/dist/esm/bundle.js +2 -4
  227. package/dist/esm/bundle.js.map +1 -1
  228. package/dist/esm/classes/accessor.js +7 -7
  229. package/dist/esm/classes/accessor.js.map +1 -1
  230. package/dist/esm/classes/accessor.ts.disabled +159 -0
  231. package/dist/esm/classes/clear.js +15 -13
  232. package/dist/esm/classes/clear.js.map +1 -1
  233. package/dist/esm/classes/copy-and-blit.js +41 -43
  234. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  235. package/dist/esm/classes/framebuffer.js +336 -308
  236. package/dist/esm/classes/framebuffer.js.map +1 -1
  237. package/dist/esm/classes/program-configuration.js +17 -9
  238. package/dist/esm/classes/program-configuration.js.map +1 -1
  239. package/dist/esm/classes/program.js +69 -44
  240. package/dist/esm/classes/program.js.map +1 -1
  241. package/dist/esm/classes/query.js +17 -14
  242. package/dist/esm/classes/query.js.map +1 -1
  243. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  244. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  245. package/dist/esm/classes/renderbuffer.js +84 -72
  246. package/dist/esm/classes/renderbuffer.js.map +1 -1
  247. package/dist/esm/classes/texture-2d.js +10 -3
  248. package/dist/esm/classes/texture-2d.js.map +1 -1
  249. package/dist/esm/classes/texture-3d.js +14 -11
  250. package/dist/esm/classes/texture-3d.js.map +1 -1
  251. package/dist/esm/classes/texture-cube.js +43 -28
  252. package/dist/esm/classes/texture-cube.js.map +1 -1
  253. package/dist/esm/classes/texture-formats.js +51 -50
  254. package/dist/esm/classes/texture-formats.js.map +1 -1
  255. package/dist/esm/classes/texture.js +164 -49
  256. package/dist/esm/classes/texture.js.map +1 -1
  257. package/dist/esm/classes/transform-feedback.js +24 -13
  258. package/dist/esm/classes/transform-feedback.js.map +1 -1
  259. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  260. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  261. package/dist/esm/classes/uniforms.js +111 -112
  262. package/dist/esm/classes/uniforms.js.map +1 -1
  263. package/dist/esm/classes/vertex-array-object.js +52 -88
  264. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  265. package/dist/esm/classes/vertex-array.js +50 -28
  266. package/dist/esm/classes/vertex-array.js.map +1 -1
  267. package/dist/esm/classes/webgl-buffer.js +379 -0
  268. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  269. package/dist/esm/classes/webgl-resource.js +208 -0
  270. package/dist/esm/classes/webgl-resource.js.map +1 -0
  271. package/dist/esm/classes/webgl-shader.js +190 -0
  272. package/dist/esm/classes/webgl-shader.js.map +1 -0
  273. package/dist/esm/context/gl-context.js +32 -0
  274. package/dist/esm/context/gl-context.js.map +1 -0
  275. package/dist/esm/context/luma-context-data.js +5 -0
  276. package/dist/esm/context/luma-context-data.js.map +1 -0
  277. package/dist/esm/debug/debug-program-configuration.js +4 -4
  278. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  279. package/dist/esm/debug/debug-uniforms.js +9 -9
  280. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  281. package/dist/esm/debug/debug-vertex-array.js +19 -17
  282. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  283. package/dist/esm/features/check-glsl-extension.js +4 -4
  284. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  285. package/dist/esm/features/check-old-ie.js.map +1 -1
  286. package/dist/esm/features/features.js +14 -13
  287. package/dist/esm/features/features.js.map +1 -1
  288. package/dist/esm/features/index.js.map +1 -1
  289. package/dist/esm/features/limits.js +25 -22
  290. package/dist/esm/features/limits.js.map +1 -1
  291. package/dist/esm/features/webgl-features-table.js +6 -6
  292. package/dist/esm/features/webgl-features-table.js.map +1 -1
  293. package/dist/esm/features/webgl-limits-table.js +43 -42
  294. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  295. package/dist/esm/index.js +13 -15
  296. package/dist/esm/index.js.map +1 -1
  297. package/dist/esm/init.js +4 -23
  298. package/dist/esm/init.js.map +1 -1
  299. package/dist/esm/types.js +2 -0
  300. package/dist/esm/types.js.map +1 -0
  301. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  302. package/dist/esm/utils/assert.js +1 -1
  303. package/dist/esm/utils/assert.js.map +1 -1
  304. package/dist/esm/utils/check-props.js +4 -4
  305. package/dist/esm/utils/check-props.js.map +1 -1
  306. package/dist/esm/utils/format-value.js +4 -4
  307. package/dist/esm/utils/format-value.js.map +1 -1
  308. package/dist/esm/utils/index.js +7 -0
  309. package/dist/esm/utils/index.js.map +1 -0
  310. package/dist/esm/utils/is-old-ie.js +1 -1
  311. package/dist/esm/utils/is-old-ie.js.map +1 -1
  312. package/dist/esm/utils/load-file.js +2 -2
  313. package/dist/esm/utils/load-file.js.map +1 -1
  314. package/dist/esm/utils/stub-methods.js +2 -3
  315. package/dist/esm/utils/stub-methods.js.map +1 -1
  316. package/dist/esm/utils/utils.js +1 -3
  317. package/dist/esm/utils/utils.js.map +1 -1
  318. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  319. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  320. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  321. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  322. package/dist/esm/webgl-utils/format-utils.js +16 -15
  323. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  324. package/dist/esm/webgl-utils/get-error.js +1 -1
  325. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  326. package/dist/esm/webgl-utils/index.js +5 -0
  327. package/dist/esm/webgl-utils/index.js.map +1 -0
  328. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  329. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  330. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  331. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  332. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  333. package/dist/esm/webgl-utils/typed-array-utils.js +19 -18
  334. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  335. package/dist/features/check-glsl-extension.d.ts +2 -0
  336. package/dist/features/check-glsl-extension.d.ts.map +1 -0
  337. package/dist/features/check-glsl-extension.js +27 -0
  338. package/dist/features/check-glsl-extension.js.map +1 -0
  339. package/dist/features/check-old-ie.d.ts +2 -0
  340. package/dist/features/check-old-ie.d.ts.map +1 -0
  341. package/dist/features/check-old-ie.js +8 -0
  342. package/dist/features/check-old-ie.js.map +1 -0
  343. package/dist/features/features.d.ts +6 -0
  344. package/dist/features/features.d.ts.map +1 -0
  345. package/dist/features/features.js +67 -0
  346. package/dist/features/features.js.map +1 -0
  347. package/dist/features/index.d.ts +5 -0
  348. package/dist/features/index.d.ts.map +1 -0
  349. package/dist/features/index.js +5 -0
  350. package/dist/features/index.js.map +1 -0
  351. package/dist/features/limits.d.ts +28 -0
  352. package/dist/features/limits.d.ts.map +1 -0
  353. package/dist/features/limits.js +55 -0
  354. package/dist/features/limits.js.map +1 -0
  355. package/dist/features/webgl-features-table.d.ts +30 -0
  356. package/dist/features/webgl-features-table.d.ts.map +1 -0
  357. package/dist/features/webgl-features-table.js +71 -0
  358. package/dist/features/webgl-features-table.js.map +1 -0
  359. package/dist/features/webgl-limits-table.d.ts +161 -0
  360. package/dist/features/webgl-limits-table.d.ts.map +1 -0
  361. package/dist/features/webgl-limits-table.js +161 -0
  362. package/dist/features/webgl-limits-table.js.map +1 -0
  363. package/dist/index.d.ts +33 -0
  364. package/dist/index.d.ts.map +1 -0
  365. package/dist/index.js +33 -0
  366. package/dist/index.js.map +1 -0
  367. package/dist/init.d.ts +5 -0
  368. package/dist/init.d.ts.map +1 -0
  369. package/dist/init.js +30 -0
  370. package/dist/init.js.map +1 -0
  371. package/dist/types.d.ts +9 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +2 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/utils/array-utils-flat.d.ts +9 -0
  376. package/dist/utils/array-utils-flat.d.ts.map +1 -0
  377. package/dist/utils/array-utils-flat.js +39 -0
  378. package/dist/utils/array-utils-flat.js.map +1 -0
  379. package/dist/utils/assert.d.ts +2 -0
  380. package/dist/utils/assert.d.ts.map +1 -0
  381. package/dist/utils/assert.js +6 -0
  382. package/dist/utils/assert.js.map +1 -0
  383. package/dist/utils/check-props.d.ts +2 -0
  384. package/dist/utils/check-props.d.ts.map +1 -0
  385. package/dist/utils/check-props.js +38 -0
  386. package/dist/utils/check-props.js.map +1 -0
  387. package/dist/utils/format-value.d.ts +5 -0
  388. package/dist/utils/format-value.d.ts.map +1 -0
  389. package/dist/utils/format-value.js +50 -0
  390. package/dist/utils/format-value.js.map +1 -0
  391. package/dist/utils/index.d.ts +7 -0
  392. package/dist/utils/index.d.ts.map +1 -0
  393. package/dist/utils/index.js +7 -0
  394. package/dist/utils/index.js.map +1 -0
  395. package/dist/utils/is-old-ie.d.ts +4 -0
  396. package/dist/utils/is-old-ie.d.ts.map +1 -0
  397. package/dist/utils/is-old-ie.js +5 -0
  398. package/dist/utils/is-old-ie.js.map +1 -0
  399. package/dist/utils/load-file.d.ts +4 -0
  400. package/dist/utils/load-file.d.ts.map +1 -0
  401. package/dist/utils/load-file.js +30 -0
  402. package/dist/utils/load-file.js.map +1 -0
  403. package/dist/utils/stub-methods.d.ts +2 -0
  404. package/dist/utils/stub-methods.d.ts.map +1 -0
  405. package/dist/utils/stub-methods.js +16 -0
  406. package/dist/utils/stub-methods.js.map +1 -0
  407. package/dist/utils/utils.d.ts +15 -0
  408. package/dist/utils/utils.d.ts.map +1 -0
  409. package/dist/utils/utils.js +20 -0
  410. package/dist/utils/utils.js.map +1 -0
  411. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  412. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  413. package/dist/webgl-utils/attribute-utils.js +182 -0
  414. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  415. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  416. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  417. package/dist/webgl-utils/constants-to-keys.js +41 -0
  418. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  419. package/dist/webgl-utils/format-utils.d.ts +3 -0
  420. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  421. package/dist/webgl-utils/format-utils.js +45 -0
  422. package/dist/webgl-utils/format-utils.js.map +1 -0
  423. package/dist/webgl-utils/get-error.d.ts +3 -0
  424. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  425. package/dist/webgl-utils/get-error.js +41 -0
  426. package/dist/webgl-utils/get-error.js.map +1 -0
  427. package/dist/webgl-utils/index.d.ts +5 -0
  428. package/dist/webgl-utils/index.d.ts.map +1 -0
  429. package/dist/webgl-utils/index.js +5 -0
  430. package/dist/webgl-utils/index.js.map +1 -0
  431. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  432. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  433. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  434. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  435. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  436. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  437. package/dist/webgl-utils/request-animation-frame.js +7 -0
  438. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  439. package/dist/webgl-utils/texture-utils.d.ts +11 -0
  440. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  441. package/dist/webgl-utils/texture-utils.js +48 -0
  442. package/dist/webgl-utils/texture-utils.js.map +1 -0
  443. package/dist/webgl-utils/typed-array-utils.d.ts +36 -0
  444. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  445. package/dist/webgl-utils/typed-array-utils.js +108 -0
  446. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  447. package/package.json +9 -8
  448. package/src/bundle.ts +4 -0
  449. package/src/classes/accessor.js +3 -4
  450. package/src/classes/accessor.ts.disabled +159 -0
  451. package/src/classes/{clear.js → clear.ts} +13 -9
  452. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +113 -22
  453. package/src/classes/{framebuffer.js → framebuffer.ts} +355 -298
  454. package/src/classes/{program-configuration.js → program-configuration.ts} +18 -11
  455. package/src/classes/{program.js → program.ts} +56 -36
  456. package/src/classes/{query.js → query.ts} +28 -22
  457. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  458. package/src/classes/renderbuffer.ts +153 -0
  459. package/src/classes/{texture-2d.js → texture-2d.ts} +15 -5
  460. package/src/classes/{texture-3d.js → texture-3d.ts} +35 -10
  461. package/src/classes/{texture-cube.js → texture-cube.ts} +46 -28
  462. package/src/classes/{texture-formats.js → texture-formats.ts} +9 -1
  463. package/src/classes/{texture.js → texture.ts} +204 -37
  464. package/src/classes/{transform-feedback.js → transform-feedback.ts} +22 -14
  465. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  466. package/src/classes/{uniforms.js → uniforms.ts} +122 -70
  467. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +132 -107
  468. package/src/classes/{vertex-array.js → vertex-array.ts} +74 -54
  469. package/src/classes/{buffer.js → webgl-buffer.ts} +125 -51
  470. package/src/classes/{resource.js → webgl-resource.ts} +43 -36
  471. package/src/classes/webgl-shader.ts +200 -0
  472. package/src/context/gl-context.ts +31 -0
  473. package/src/context/luma-context-data.ts +27 -0
  474. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  475. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  476. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +7 -4
  477. package/src/features/{check-glsl-extension.js → check-glsl-extension.ts} +1 -1
  478. package/src/features/{check-old-ie.js → check-old-ie.ts} +0 -0
  479. package/src/features/{features.js → features.ts} +14 -13
  480. package/src/features/{index.js → index.ts} +0 -0
  481. package/src/features/{limits.js → limits.ts} +18 -17
  482. package/src/features/{webgl-features-table.js → webgl-features-table.ts} +0 -0
  483. package/src/features/{webgl-limits-table.js → webgl-limits-table.ts} +0 -0
  484. package/{dist/es5/index.d.ts → src/index.ts} +18 -16
  485. package/src/{init.js → init.ts} +1 -18
  486. package/{dist/es5/types.d.ts → src/types.ts} +0 -0
  487. package/src/utils/{array-utils-flat.js → array-utils-flat.ts} +0 -0
  488. package/src/utils/{assert.js → assert.ts} +1 -1
  489. package/src/utils/{check-props.js → check-props.ts} +0 -0
  490. package/src/utils/{format-value.js → format-value.ts} +2 -2
  491. package/src/utils/index.ts +6 -0
  492. package/src/utils/{is-old-ie.js → is-old-ie.ts} +1 -1
  493. package/src/utils/{load-file.js → load-file.ts} +3 -2
  494. package/src/utils/{stub-methods.js → stub-methods.ts} +1 -1
  495. package/src/utils/utils.ts +35 -0
  496. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  497. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  498. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  499. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  500. package/src/webgl-utils/index.ts +12 -0
  501. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  502. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  503. package/src/webgl-utils/texture-utils.js +2 -1
  504. package/dist/dist.js +0 -13555
  505. package/dist/dist.min.js +0 -1
  506. package/dist/es5/classes/buffer.d.ts +0 -84
  507. package/dist/es5/classes/buffer.js +0 -453
  508. package/dist/es5/classes/buffer.js.map +0 -1
  509. package/dist/es5/classes/clear.d.ts +0 -11
  510. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  511. package/dist/es5/classes/framebuffer.d.ts +0 -96
  512. package/dist/es5/classes/program-configuration.d.ts +0 -15
  513. package/dist/es5/classes/program.d.ts +0 -44
  514. package/dist/es5/classes/query.d.ts +0 -21
  515. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  516. package/dist/es5/classes/resource.d.ts +0 -47
  517. package/dist/es5/classes/resource.js +0 -308
  518. package/dist/es5/classes/resource.js.map +0 -1
  519. package/dist/es5/classes/shader.d.ts +0 -29
  520. package/dist/es5/classes/shader.js +0 -221
  521. package/dist/es5/classes/shader.js.map +0 -1
  522. package/dist/es5/classes/texture-2d.d.ts +0 -11
  523. package/dist/es5/classes/texture-3d.d.ts +0 -29
  524. package/dist/es5/classes/texture-cube.d.ts +0 -23
  525. package/dist/es5/classes/texture.d.ts +0 -80
  526. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  527. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  528. package/dist/es5/classes/uniforms.d.ts +0 -63
  529. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  530. package/dist/es5/classes/vertex-array.d.ts +0 -37
  531. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  532. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  533. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  534. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  535. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  536. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  537. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  538. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  539. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  540. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  541. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  542. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  543. package/dist/es5/glsl-utils/index.js +0 -48
  544. package/dist/es5/glsl-utils/index.js.map +0 -1
  545. package/dist/es5/init.d.ts +0 -12
  546. package/dist/es5/utils/assert.d.ts +0 -1
  547. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  548. package/dist/es5/utils/utils.d.ts +0 -13
  549. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  550. package/dist/esm/classes/buffer.d.ts +0 -84
  551. package/dist/esm/classes/buffer.js.map +0 -1
  552. package/dist/esm/classes/clear.d.ts +0 -11
  553. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  554. package/dist/esm/classes/framebuffer.d.ts +0 -96
  555. package/dist/esm/classes/program-configuration.d.ts +0 -15
  556. package/dist/esm/classes/program.d.ts +0 -44
  557. package/dist/esm/classes/query.d.ts +0 -21
  558. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  559. package/dist/esm/classes/resource.d.ts +0 -47
  560. package/dist/esm/classes/resource.js.map +0 -1
  561. package/dist/esm/classes/shader.d.ts +0 -29
  562. package/dist/esm/classes/shader.js +0 -138
  563. package/dist/esm/classes/shader.js.map +0 -1
  564. package/dist/esm/classes/texture-2d.d.ts +0 -11
  565. package/dist/esm/classes/texture-3d.d.ts +0 -29
  566. package/dist/esm/classes/texture-cube.d.ts +0 -23
  567. package/dist/esm/classes/texture.d.ts +0 -80
  568. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  569. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  570. package/dist/esm/classes/uniforms.d.ts +0 -63
  571. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  572. package/dist/esm/classes/vertex-array.d.ts +0 -37
  573. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  574. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  575. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  576. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  577. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  578. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  579. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  580. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  581. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  582. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  583. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  584. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  585. package/dist/esm/glsl-utils/index.js +0 -5
  586. package/dist/esm/glsl-utils/index.js.map +0 -1
  587. package/dist/esm/index.d.ts +0 -71
  588. package/dist/esm/init.d.ts +0 -12
  589. package/dist/esm/types.d.ts +0 -8
  590. package/dist/esm/utils/assert.d.ts +0 -1
  591. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  592. package/dist/esm/utils/utils.d.ts +0 -13
  593. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  594. package/src/bundle.js +0 -8
  595. package/src/classes/buffer.d.ts +0 -84
  596. package/src/classes/clear.d.ts +0 -11
  597. package/src/classes/copy-and-blit.d.ts +0 -101
  598. package/src/classes/framebuffer.d.ts +0 -96
  599. package/src/classes/program-configuration.d.ts +0 -15
  600. package/src/classes/program.d.ts +0 -44
  601. package/src/classes/query.d.ts +0 -21
  602. package/src/classes/renderbuffer.d.ts +0 -34
  603. package/src/classes/renderbuffer.js +0 -105
  604. package/src/classes/resource.d.ts +0 -47
  605. package/src/classes/shader.d.ts +0 -29
  606. package/src/classes/shader.js +0 -147
  607. package/src/classes/texture-2d.d.ts +0 -11
  608. package/src/classes/texture-3d.d.ts +0 -29
  609. package/src/classes/texture-cube.d.ts +0 -23
  610. package/src/classes/texture.d.ts +0 -80
  611. package/src/classes/transform-feedback.d.ts +0 -16
  612. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  613. package/src/classes/uniforms.d.ts +0 -63
  614. package/src/classes/vertex-array-object.d.ts +0 -25
  615. package/src/classes/vertex-array.d.ts +0 -37
  616. package/src/debug/debug-program-configuration.d.ts +0 -1
  617. package/src/debug/debug-uniforms.d.ts +0 -11
  618. package/src/debug/debug-vertex-array.d.ts +0 -1
  619. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  620. package/src/glsl-utils/format-glsl-error.js +0 -107
  621. package/src/glsl-utils/get-shader-name.js +0 -7
  622. package/src/glsl-utils/get-shader-type-name.js +0 -13
  623. package/src/glsl-utils/get-shader-version.js +0 -12
  624. package/src/glsl-utils/index.js +0 -8
  625. package/src/index.d.ts +0 -71
  626. package/src/index.js +0 -70
  627. package/src/init.d.ts +0 -12
  628. package/src/types.d.ts +0 -8
  629. package/src/utils/assert.d.ts +0 -1
  630. package/src/utils/is-old-ie.d.ts +0 -1
  631. package/src/utils/utils.d.ts +0 -13
  632. package/src/utils/utils.js +0 -36
  633. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
@@ -0,0 +1,656 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import GL from '@luma.gl/constants';
3
+ import { getWebGL2Context, assertWebGL2Context, log } from '@luma.gl/gltools';
4
+ import Resource from './webgl-resource';
5
+ import Texture2D from './texture-2d';
6
+ import Renderbuffer from './renderbuffer';
7
+ import { clear, clearBuffer } from './clear';
8
+ import { copyToDataUrl } from './copy-and-blit';
9
+ import { getLumaContextData } from '../context/luma-context-data';
10
+ import { getFeatures } from '../features';
11
+ import { getKey } from '../webgl-utils';
12
+ import { assert } from '../utils';
13
+ const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
14
+ export class ImmutableFramebuffer extends Resource {
15
+ constructor(gl, props) {
16
+ super(gl, props, {});
17
+
18
+ this._initialize({
19
+ attachments: (props === null || props === void 0 ? void 0 : props.attachments) || {},
20
+ readBuffer: props === null || props === void 0 ? void 0 : props.readBuffer,
21
+ drawBuffers: props === null || props === void 0 ? void 0 : props.drawBuffers
22
+ });
23
+ }
24
+
25
+ checkStatus() {
26
+ const {
27
+ gl
28
+ } = this;
29
+ const status = this.getStatus();
30
+
31
+ if (status !== gl.FRAMEBUFFER_COMPLETE) {
32
+ throw new Error(_getFrameBufferStatus(status));
33
+ }
34
+
35
+ return this;
36
+ }
37
+
38
+ getStatus() {
39
+ const {
40
+ gl
41
+ } = this;
42
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
43
+ const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
44
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
45
+ return status;
46
+ }
47
+
48
+ show() {
49
+ if (typeof window !== 'undefined') {
50
+ window.open(copyToDataUrl(this), 'luma-debug-texture');
51
+ }
52
+
53
+ return this;
54
+ }
55
+
56
+ log(logLevel = 0, message = '') {
57
+ if (logLevel > log.level || typeof window === 'undefined') {
58
+ return this;
59
+ }
60
+
61
+ message = message || "Framebuffer ".concat(this.id);
62
+ const image = copyToDataUrl(this, {
63
+ targetMaxHeight: 100
64
+ });
65
+ log.image({
66
+ logLevel,
67
+ message,
68
+ image
69
+ }, message)();
70
+ return this;
71
+ }
72
+
73
+ bind({
74
+ target = GL.FRAMEBUFFER
75
+ } = {}) {
76
+ this.gl.bindFramebuffer(target, this.handle);
77
+ return this;
78
+ }
79
+
80
+ unbind({
81
+ target = GL.FRAMEBUFFER
82
+ } = {}) {
83
+ this.gl.bindFramebuffer(target, null);
84
+ return this;
85
+ }
86
+
87
+ _initialize(options) {
88
+ const {
89
+ attachments = {},
90
+ readBuffer,
91
+ drawBuffers
92
+ } = options;
93
+
94
+ this._attach(attachments);
95
+
96
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
97
+
98
+ if (readBuffer) {
99
+ this._setReadBuffer(readBuffer);
100
+ }
101
+
102
+ if (drawBuffers) {
103
+ this._setDrawBuffers(drawBuffers);
104
+ }
105
+
106
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
107
+ return this;
108
+ }
109
+
110
+ _attach(attachments) {
111
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
112
+
113
+ for (const key in attachments) {
114
+ assert(key !== undefined, 'Misspelled framebuffer binding point?');
115
+ const attachmentPoint = Number(key);
116
+ const attachment = attachments[attachmentPoint];
117
+
118
+ this._attachOne(attachmentPoint, attachment);
119
+ }
120
+
121
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
122
+ }
123
+
124
+ _attachOne(attachmentPoint, attachment) {
125
+ if (attachment instanceof Renderbuffer) {
126
+ this._attachRenderbuffer(attachmentPoint, attachment);
127
+
128
+ return attachment;
129
+ } else if (Array.isArray(attachment)) {
130
+ const [texture, layer = 0, level = 0] = attachment;
131
+
132
+ this._attachTexture(attachmentPoint, texture, layer, level);
133
+
134
+ return texture;
135
+ } else if (attachment instanceof Texture2D) {
136
+ this._attachTexture(attachmentPoint, attachment, 0, 0);
137
+
138
+ return attachment;
139
+ }
140
+ }
141
+
142
+ _attachRenderbuffer(attachment, renderbuffer) {
143
+ this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
144
+ }
145
+
146
+ _attachTexture(attachment, texture, layer, level) {
147
+ const {
148
+ gl
149
+ } = this;
150
+ gl.bindTexture(texture.target, texture.handle);
151
+
152
+ switch (texture.target) {
153
+ case GL.TEXTURE_2D_ARRAY:
154
+ case GL.TEXTURE_3D:
155
+ const gl2 = assertWebGL2Context(gl);
156
+ gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
157
+ break;
158
+
159
+ case GL.TEXTURE_CUBE_MAP:
160
+ const face = mapIndexToCubeMapFace(layer);
161
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
162
+ break;
163
+
164
+ case GL.TEXTURE_2D:
165
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
166
+ break;
167
+
168
+ default:
169
+ assert(false, 'Illegal texture type');
170
+ }
171
+
172
+ gl.bindTexture(texture.target, null);
173
+ }
174
+
175
+ _setReadBuffer(readBuffer) {
176
+ const gl2 = getWebGL2Context(this.gl);
177
+
178
+ if (gl2) {
179
+ gl2.readBuffer(readBuffer);
180
+ } else {
181
+ assert(readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK, ERR_MULTIPLE_RENDERTARGETS);
182
+ }
183
+ }
184
+
185
+ _setDrawBuffers(drawBuffers) {
186
+ const {
187
+ gl
188
+ } = this;
189
+ const gl2 = assertWebGL2Context(gl);
190
+
191
+ if (gl2) {
192
+ gl2.drawBuffers(drawBuffers);
193
+ } else {
194
+ const ext = gl.getExtension('WEBGL_draw_buffers');
195
+
196
+ if (ext) {
197
+ ext.drawBuffersWEBGL(drawBuffers);
198
+ } else {
199
+ assert(drawBuffers.length === 1 && (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK), ERR_MULTIPLE_RENDERTARGETS);
200
+ }
201
+ }
202
+ }
203
+
204
+ _createHandle() {
205
+ return this.gl.createFramebuffer();
206
+ }
207
+
208
+ _deleteHandle() {
209
+ this.gl.deleteFramebuffer(this.handle);
210
+ }
211
+
212
+ _bindHandle(handle) {
213
+ return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
214
+ }
215
+
216
+ }
217
+ export default class Framebuffer extends ImmutableFramebuffer {
218
+ static isSupported(gl, options) {
219
+ return isFloatColorBufferSupported(gl, options);
220
+ }
221
+
222
+ static getDefaultFramebuffer(gl) {
223
+ const lumaContextData = getLumaContextData(gl);
224
+ lumaContextData.defaultFramebuffer = lumaContextData.defaultFramebuffer || new Framebuffer(gl, {
225
+ id: 'default-framebuffer',
226
+ handle: null,
227
+ attachments: {}
228
+ });
229
+ return lumaContextData.defaultFramebuffer;
230
+ }
231
+
232
+ get MAX_COLOR_ATTACHMENTS() {
233
+ const gl2 = assertWebGL2Context(this.gl);
234
+ return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);
235
+ }
236
+
237
+ get MAX_DRAW_BUFFERS() {
238
+ const gl2 = assertWebGL2Context(this.gl);
239
+ return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
240
+ }
241
+
242
+ constructor(gl, props) {
243
+ super(gl, props);
244
+
245
+ _defineProperty(this, "width", null);
246
+
247
+ _defineProperty(this, "height", null);
248
+
249
+ _defineProperty(this, "attachments", {});
250
+
251
+ _defineProperty(this, "readBuffer", GL.COLOR_ATTACHMENT0);
252
+
253
+ _defineProperty(this, "drawBuffers", [GL.COLOR_ATTACHMENT0]);
254
+
255
+ _defineProperty(this, "ownResources", []);
256
+
257
+ this.initialize(props);
258
+ Object.seal(this);
259
+ }
260
+
261
+ get color() {
262
+ return this.attachments[GL.COLOR_ATTACHMENT0] || null;
263
+ }
264
+
265
+ get texture() {
266
+ return this.attachments[GL.COLOR_ATTACHMENT0] || null;
267
+ }
268
+
269
+ get depth() {
270
+ return this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null;
271
+ }
272
+
273
+ get stencil() {
274
+ return this.attachments[GL.STENCIL_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null;
275
+ }
276
+
277
+ initialize(props) {
278
+ let {
279
+ attachments = null
280
+ } = props || {};
281
+ const {
282
+ width = 1,
283
+ height = 1,
284
+ color = true,
285
+ depth = true,
286
+ stencil = false,
287
+ check = true,
288
+ readBuffer = undefined,
289
+ drawBuffers = undefined
290
+ } = props || {};
291
+ assert(width >= 0 && height >= 0, 'Width and height need to be integers');
292
+ this.width = width;
293
+ this.height = height;
294
+
295
+ if (attachments) {
296
+ for (const attachment in attachments) {
297
+ const target = attachments[attachment];
298
+ const object = Array.isArray(target) ? target[0] : target;
299
+ object.resize({
300
+ width,
301
+ height
302
+ });
303
+ }
304
+ } else {
305
+ attachments = this._createDefaultAttachments(color, depth, stencil, width, height);
306
+ }
307
+
308
+ this.update({
309
+ clearAttachments: true,
310
+ attachments,
311
+ readBuffer,
312
+ drawBuffers
313
+ });
314
+
315
+ if (attachments && check) {
316
+ this.checkStatus();
317
+ }
318
+ }
319
+
320
+ delete() {
321
+ for (const resource of this.ownResources) {
322
+ resource.delete();
323
+ }
324
+
325
+ super.delete();
326
+ return this;
327
+ }
328
+
329
+ update(options) {
330
+ const {
331
+ attachments = {},
332
+ readBuffer,
333
+ drawBuffers,
334
+ clearAttachments = false,
335
+ resizeAttachments = true
336
+ } = options;
337
+ this.attach(attachments, {
338
+ clearAttachments,
339
+ resizeAttachments
340
+ });
341
+ const {
342
+ gl
343
+ } = this;
344
+ const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
345
+
346
+ if (readBuffer) {
347
+ this._setReadBuffer(readBuffer);
348
+
349
+ this.readBuffer = readBuffer;
350
+ }
351
+
352
+ if (drawBuffers) {
353
+ this._setDrawBuffers(drawBuffers);
354
+
355
+ this.drawBuffers = drawBuffers;
356
+ }
357
+
358
+ gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
359
+ return this;
360
+ }
361
+
362
+ resize(size) {
363
+ let {
364
+ width,
365
+ height
366
+ } = size || {};
367
+
368
+ if (this.handle === null) {
369
+ assert(width === undefined && height === undefined);
370
+ this.width = this.gl.drawingBufferWidth;
371
+ this.height = this.gl.drawingBufferHeight;
372
+ return this;
373
+ }
374
+
375
+ if (width === undefined) {
376
+ width = this.gl.drawingBufferWidth;
377
+ }
378
+
379
+ if (height === undefined) {
380
+ height = this.gl.drawingBufferHeight;
381
+ }
382
+
383
+ if (width !== this.width && height !== this.height) {
384
+ log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
385
+ }
386
+
387
+ for (const attachmentPoint in this.attachments) {
388
+ this.attachments[attachmentPoint].resize({
389
+ width,
390
+ height
391
+ });
392
+ }
393
+
394
+ this.width = width;
395
+ this.height = height;
396
+ return this;
397
+ }
398
+
399
+ attach(attachments, {
400
+ clearAttachments = false,
401
+ resizeAttachments = true
402
+ } = {}) {
403
+ const newAttachments = {};
404
+
405
+ if (clearAttachments) {
406
+ Object.keys(this.attachments).forEach(key => {
407
+ newAttachments[key] = null;
408
+ });
409
+ }
410
+
411
+ Object.assign(newAttachments, attachments);
412
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
413
+
414
+ for (const key in newAttachments) {
415
+ assert(key !== undefined, 'Misspelled framebuffer binding point?');
416
+ const attachment = Number(key);
417
+ const descriptor = newAttachments[attachment];
418
+ let object = descriptor;
419
+
420
+ if (!object) {
421
+ this._unattach(attachment);
422
+ } else {
423
+ object = this._attachOne(attachment, object);
424
+ this.attachments[attachment] = object;
425
+ }
426
+
427
+ if (resizeAttachments && object) {
428
+ object.resize({
429
+ width: this.width,
430
+ height: this.height
431
+ });
432
+ }
433
+ }
434
+
435
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
436
+ Object.assign(this.attachments, attachments);
437
+ Object.keys(this.attachments).filter(key => !this.attachments[key]).forEach(key => {
438
+ delete this.attachments[key];
439
+ });
440
+ }
441
+
442
+ clear(options) {
443
+ const {
444
+ color,
445
+ depth,
446
+ stencil,
447
+ drawBuffers = []
448
+ } = options;
449
+ const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
450
+
451
+ if (color || depth || stencil) {
452
+ clear(this.gl, {
453
+ color,
454
+ depth,
455
+ stencil
456
+ });
457
+ }
458
+
459
+ drawBuffers.forEach((value, drawBuffer) => {
460
+ clearBuffer(this.gl, {
461
+ drawBuffer,
462
+ value
463
+ });
464
+ });
465
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
466
+ return this;
467
+ }
468
+
469
+ blit(opts = {}) {
470
+ log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();
471
+ return null;
472
+ }
473
+
474
+ invalidate(options) {
475
+ const {
476
+ attachments = [],
477
+ x = 0,
478
+ y = 0,
479
+ width,
480
+ height
481
+ } = options;
482
+ const gl2 = assertWebGL2Context(this.gl);
483
+ const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);
484
+ const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
485
+
486
+ if (invalidateAll) {
487
+ gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);
488
+ } else {
489
+ gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);
490
+ }
491
+
492
+ gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);
493
+ return this;
494
+ }
495
+
496
+ getAttachmentParameter(attachment, pname, keys) {
497
+ let value = this._getAttachmentParameterFallback(pname);
498
+
499
+ if (value === null) {
500
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
501
+ value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);
502
+ this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
503
+ }
504
+
505
+ if (keys && value > 1000) {
506
+ value = getKey(this.gl, value);
507
+ }
508
+
509
+ return value;
510
+ }
511
+
512
+ getAttachmentParameters(attachment = GL.COLOR_ATTACHMENT0, keys, parameters = this.constructor.ATTACHMENT_PARAMETERS || []) {
513
+ const values = {};
514
+
515
+ for (const pname of parameters) {
516
+ const key = keys ? getKey(this.gl, pname) : pname;
517
+ values[key] = this.getAttachmentParameter(attachment, pname, keys);
518
+ }
519
+
520
+ return values;
521
+ }
522
+
523
+ getParameters(keys = true) {
524
+ const attachments = Object.keys(this.attachments);
525
+ const parameters = {};
526
+
527
+ for (const attachmentName of attachments) {
528
+ const attachment = Number(attachmentName);
529
+ const key = keys ? getKey(this.gl, attachment) : attachment;
530
+ parameters[key] = this.getAttachmentParameters(attachment, keys);
531
+ }
532
+
533
+ return parameters;
534
+ }
535
+
536
+ _createDefaultAttachments(color, depth, stencil, width, height) {
537
+ let defaultAttachments = null;
538
+
539
+ if (color) {
540
+ defaultAttachments = defaultAttachments || {};
541
+ defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {
542
+ id: "".concat(this.id, "-color0"),
543
+ pixels: null,
544
+ format: GL.RGBA,
545
+ type: GL.UNSIGNED_BYTE,
546
+ width,
547
+ height,
548
+ mipmaps: false,
549
+ parameters: {
550
+ [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,
551
+ [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,
552
+ [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
553
+ [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
554
+ }
555
+ });
556
+ this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);
557
+ }
558
+
559
+ if (depth && stencil) {
560
+ defaultAttachments = defaultAttachments || {};
561
+ defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {
562
+ id: "".concat(this.id, "-depth-stencil"),
563
+ format: GL.DEPTH24_STENCIL8,
564
+ width,
565
+ height: 111
566
+ });
567
+ this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);
568
+ } else if (depth) {
569
+ defaultAttachments = defaultAttachments || {};
570
+ defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {
571
+ id: "".concat(this.id, "-depth"),
572
+ format: GL.DEPTH_COMPONENT16,
573
+ width,
574
+ height
575
+ });
576
+ this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);
577
+ } else if (stencil) {
578
+ assert(false);
579
+ }
580
+
581
+ return defaultAttachments;
582
+ }
583
+
584
+ _unattach(attachment) {
585
+ const oldAttachment = this.attachments[attachment];
586
+
587
+ if (!oldAttachment) {
588
+ return;
589
+ }
590
+
591
+ if (oldAttachment instanceof Renderbuffer) {
592
+ this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);
593
+ } else {
594
+ this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);
595
+ }
596
+
597
+ delete this.attachments[attachment];
598
+ }
599
+
600
+ _getAttachmentParameterFallback(pname) {
601
+ const caps = getFeatures(this.gl);
602
+
603
+ switch (pname) {
604
+ case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:
605
+ return !caps.WEBGL2 ? 0 : null;
606
+
607
+ case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE:
608
+ case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
609
+ case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
610
+ case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
611
+ case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
612
+ case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
613
+ return !caps.WEBGL2 ? 8 : null;
614
+
615
+ case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
616
+ return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;
617
+
618
+ case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
619
+ return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;
620
+
621
+ default:
622
+ return null;
623
+ }
624
+ }
625
+
626
+ }
627
+
628
+ _defineProperty(Framebuffer, "FRAMEBUFFER_ATTACHMENT_PARAMETERS", [GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE]);
629
+
630
+ function mapIndexToCubeMapFace(layer) {
631
+ return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
632
+ }
633
+
634
+ function _getFrameBufferStatus(status) {
635
+ const STATUS = Framebuffer.STATUS || {};
636
+ return STATUS[status] || "Framebuffer error ".concat(status);
637
+ }
638
+
639
+ function isFloatColorBufferSupported(gl, options) {
640
+ const {
641
+ colorBufferFloat,
642
+ colorBufferHalfFloat
643
+ } = options;
644
+ let supported = true;
645
+
646
+ if (colorBufferFloat) {
647
+ supported = Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('WEBGL_color_buffer_float') || gl.getExtension('OES_texture_float'));
648
+ }
649
+
650
+ if (colorBufferHalfFloat) {
651
+ supported = supported && Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('EXT_color_buffer_half_float'));
652
+ }
653
+
654
+ return supported;
655
+ }
656
+ //# sourceMappingURL=framebuffer.js.map