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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/classes/accessor.js +2 -2
  6. package/dist/classes/accessor.js.map +1 -1
  7. package/dist/classes/accessor.ts.disabled +1 -1
  8. package/dist/classes/clear.d.ts +3 -2
  9. package/dist/classes/clear.d.ts.map +1 -1
  10. package/dist/classes/clear.js +7 -4
  11. package/dist/classes/clear.js.map +1 -1
  12. package/dist/classes/copy-and-blit.d.ts +18 -1
  13. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  14. package/dist/classes/copy-and-blit.js +30 -25
  15. package/dist/classes/copy-and-blit.js.map +1 -1
  16. package/dist/classes/framebuffer.d.ts +10 -1
  17. package/dist/classes/framebuffer.d.ts.map +1 -1
  18. package/dist/classes/framebuffer.js +15 -15
  19. package/dist/classes/framebuffer.js.map +1 -1
  20. package/dist/classes/program-configuration.d.ts +2 -2
  21. package/dist/classes/program-configuration.d.ts.map +1 -1
  22. package/dist/classes/program-configuration.js +1 -1
  23. package/dist/classes/program-configuration.js.map +1 -1
  24. package/dist/classes/program.d.ts +6 -6
  25. package/dist/classes/program.d.ts.map +1 -1
  26. package/dist/classes/program.js +11 -9
  27. package/dist/classes/program.js.map +1 -1
  28. package/dist/classes/query.d.ts.map +1 -1
  29. package/dist/classes/query.js +6 -5
  30. package/dist/classes/query.js.map +1 -1
  31. package/dist/classes/renderbuffer-formats.js +1 -1
  32. package/dist/classes/renderbuffer-formats.js.map +1 -1
  33. package/dist/classes/renderbuffer.d.ts.map +1 -1
  34. package/dist/classes/renderbuffer.js +4 -3
  35. package/dist/classes/renderbuffer.js.map +1 -1
  36. package/dist/classes/texture-2d.d.ts +4 -3
  37. package/dist/classes/texture-2d.d.ts.map +1 -1
  38. package/dist/classes/texture-2d.js +5 -8
  39. package/dist/classes/texture-2d.js.map +1 -1
  40. package/dist/classes/texture-3d.d.ts +3 -2
  41. package/dist/classes/texture-3d.d.ts.map +1 -1
  42. package/dist/classes/texture-3d.js +15 -6
  43. package/dist/classes/texture-3d.js.map +1 -1
  44. package/dist/classes/texture-cube.d.ts +2 -1
  45. package/dist/classes/texture-cube.d.ts.map +1 -1
  46. package/dist/classes/texture-cube.js +3 -4
  47. package/dist/classes/texture-cube.js.map +1 -1
  48. package/dist/classes/texture-formats.js +1 -1
  49. package/dist/classes/texture-formats.js.map +1 -1
  50. package/dist/classes/texture.d.ts +14 -9
  51. package/dist/classes/texture.d.ts.map +1 -1
  52. package/dist/classes/texture.js +19 -18
  53. package/dist/classes/texture.js.map +1 -1
  54. package/dist/classes/transform-feedback.d.ts.map +1 -1
  55. package/dist/classes/transform-feedback.js +5 -4
  56. package/dist/classes/transform-feedback.js.map +1 -1
  57. package/dist/classes/uniform-buffer-layout.js +1 -1
  58. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  59. package/dist/classes/uniforms.d.ts +0 -1
  60. package/dist/classes/uniforms.d.ts.map +1 -1
  61. package/dist/classes/uniforms.js +1 -2
  62. package/dist/classes/uniforms.js.map +1 -1
  63. package/dist/classes/vertex-array-object.d.ts +1 -1
  64. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  65. package/dist/classes/vertex-array-object.js +8 -9
  66. package/dist/classes/vertex-array-object.js.map +1 -1
  67. package/dist/classes/vertex-array.d.ts +1 -1
  68. package/dist/classes/vertex-array.d.ts.map +1 -1
  69. package/dist/classes/vertex-array.js +1 -2
  70. package/dist/classes/vertex-array.js.map +1 -1
  71. package/dist/classes/webgl-buffer.d.ts +2 -0
  72. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  73. package/dist/classes/webgl-buffer.js +8 -5
  74. package/dist/classes/webgl-buffer.js.map +1 -1
  75. package/dist/classes/webgl-resource.d.ts +6 -4
  76. package/dist/classes/webgl-resource.d.ts.map +1 -1
  77. package/dist/classes/webgl-resource.js +12 -8
  78. package/dist/classes/webgl-resource.js.map +1 -1
  79. package/dist/classes/webgl-shader.d.ts +3 -1
  80. package/dist/classes/webgl-shader.d.ts.map +1 -1
  81. package/dist/classes/webgl-shader.js +7 -4
  82. package/dist/classes/webgl-shader.js.map +1 -1
  83. package/dist/context/context/context-state.d.ts +18 -0
  84. package/dist/context/context/context-state.d.ts.map +1 -0
  85. package/dist/context/context/context-state.js +26 -0
  86. package/dist/context/context/context-state.js.map +1 -0
  87. package/dist/context/context/create-context.d.ts +40 -0
  88. package/dist/context/context/create-context.d.ts.map +1 -0
  89. package/dist/context/context/create-context.js +37 -0
  90. package/dist/context/context/create-context.js.map +1 -0
  91. package/dist/context/context/device-pixels.d.ts +25 -0
  92. package/dist/context/context/device-pixels.d.ts.map +1 -0
  93. package/dist/context/context/device-pixels.js +98 -0
  94. package/dist/context/context/device-pixels.js.map +1 -0
  95. package/dist/context/context/get-canvas.d.ts +13 -0
  96. package/dist/context/context/get-canvas.d.ts.map +1 -0
  97. package/dist/context/context/get-canvas.js +31 -0
  98. package/dist/context/context/get-canvas.js.map +1 -0
  99. package/dist/context/context/resize-context.d.ts +20 -0
  100. package/dist/context/context/resize-context.d.ts.map +1 -0
  101. package/dist/context/context/resize-context.js +15 -0
  102. package/dist/context/context/resize-context.js.map +1 -0
  103. package/dist/context/context/webgl-checks.d.ts +13 -0
  104. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  105. package/dist/context/context/webgl-checks.js +34 -0
  106. package/dist/context/context/webgl-checks.js.map +1 -0
  107. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  109. package/dist/context/parameters/unified-parameter-api.js +65 -0
  110. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  113. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  114. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  116. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  117. package/dist/context/parameters/webgl-parameters.js +2 -0
  118. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  119. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  120. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  121. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  122. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  123. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  124. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  125. package/dist/context/polyfill/polyfill-context.js +91 -0
  126. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  127. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  128. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  129. package/dist/context/polyfill/polyfill-table.js +160 -0
  130. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  132. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  133. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  135. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  136. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  141. package/dist/context/state-tracker/track-context-state.js +169 -0
  142. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  143. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  144. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  145. package/dist/context/state-tracker/with-parameters.js +36 -0
  146. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  147. package/dist/debug/debug-uniforms.js +1 -1
  148. package/dist/debug/debug-uniforms.js.map +1 -1
  149. package/dist/debug/debug-vertex-array.js +2 -2
  150. package/dist/debug/debug-vertex-array.js.map +1 -1
  151. package/dist/device/check-glsl-extension.d.ts +4 -0
  152. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  153. package/dist/device/check-glsl-extension.js +22 -0
  154. package/dist/device/check-glsl-extension.js.map +1 -0
  155. package/dist/device/device-features.d.ts +12 -0
  156. package/dist/device/device-features.d.ts.map +1 -0
  157. package/dist/device/device-features.js +123 -0
  158. package/dist/device/device-features.js.map +1 -0
  159. package/dist/device/device-limits.d.ts +51 -0
  160. package/dist/device/device-limits.d.ts.map +1 -0
  161. package/dist/device/device-limits.js +90 -0
  162. package/dist/device/device-limits.js.map +1 -0
  163. package/dist/device/get-device-info.d.ts +4 -0
  164. package/dist/device/get-device-info.d.ts.map +1 -0
  165. package/dist/device/get-device-info.js +44 -0
  166. package/dist/device/get-device-info.js.map +1 -0
  167. package/dist/device/webgl-device.d.ts +111 -0
  168. package/dist/device/webgl-device.d.ts.map +1 -0
  169. package/dist/device/webgl-device.js +208 -0
  170. package/dist/device/webgl-device.js.map +1 -0
  171. package/dist/es5/api/device2.js +42 -0
  172. package/dist/es5/api/device2.js.map +1 -0
  173. package/dist/es5/bundle.js +1 -1
  174. package/dist/es5/bundle.js.map +1 -1
  175. package/dist/es5/classes/accessor.js +104 -74
  176. package/dist/es5/classes/accessor.js.map +1 -1
  177. package/dist/es5/classes/accessor.ts.disabled +1 -1
  178. package/dist/es5/classes/clear.js +55 -34
  179. package/dist/es5/classes/clear.js.map +1 -1
  180. package/dist/es5/classes/copy-and-blit.js +175 -156
  181. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  182. package/dist/es5/classes/framebuffer.js +647 -518
  183. package/dist/es5/classes/framebuffer.js.map +1 -1
  184. package/dist/es5/classes/program-configuration.js +138 -121
  185. package/dist/es5/classes/program-configuration.js.map +1 -1
  186. package/dist/es5/classes/program.js +368 -292
  187. package/dist/es5/classes/program.js.map +1 -1
  188. package/dist/es5/classes/query.js +172 -107
  189. package/dist/es5/classes/query.js.map +1 -1
  190. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  191. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  192. package/dist/es5/classes/renderbuffer.js +151 -98
  193. package/dist/es5/classes/renderbuffer.js.map +1 -1
  194. package/dist/es5/classes/texture-2d.js +44 -17
  195. package/dist/es5/classes/texture-2d.js.map +1 -1
  196. package/dist/es5/classes/texture-3d.js +107 -48
  197. package/dist/es5/classes/texture-3d.js.map +1 -1
  198. package/dist/es5/classes/texture-cube.js +169 -110
  199. package/dist/es5/classes/texture-cube.js.map +1 -1
  200. package/dist/es5/classes/texture-formats.js +42 -71
  201. package/dist/es5/classes/texture-formats.js.map +1 -1
  202. package/dist/es5/classes/texture.js +780 -665
  203. package/dist/es5/classes/texture.js.map +1 -1
  204. package/dist/es5/classes/transform-feedback.js +206 -150
  205. package/dist/es5/classes/transform-feedback.js.map +1 -1
  206. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  207. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  208. package/dist/es5/classes/uniforms.js +39 -80
  209. package/dist/es5/classes/uniforms.js.map +1 -1
  210. package/dist/es5/classes/vertex-array-object.js +268 -209
  211. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  212. package/dist/es5/classes/vertex-array.js +348 -303
  213. package/dist/es5/classes/vertex-array.js.map +1 -1
  214. package/dist/es5/classes/webgl-buffer.js +374 -303
  215. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  216. package/dist/es5/classes/webgl-resource.js +231 -161
  217. package/dist/es5/classes/webgl-resource.js.map +1 -1
  218. package/dist/es5/classes/webgl-shader.js +230 -134
  219. package/dist/es5/classes/webgl-shader.js.map +1 -1
  220. package/dist/es5/context/context/context-state.js +31 -0
  221. package/dist/es5/context/context/context-state.js.map +1 -0
  222. package/dist/es5/context/context/create-context.js +57 -0
  223. package/dist/es5/context/context/create-context.js.map +1 -0
  224. package/dist/es5/context/context/device-pixels.js +115 -0
  225. package/dist/es5/context/context/device-pixels.js.map +1 -0
  226. package/dist/es5/context/context/get-canvas.js +40 -0
  227. package/dist/es5/context/context/get-canvas.js.map +1 -0
  228. package/dist/es5/context/context/resize-context.js +23 -0
  229. package/dist/es5/context/context/resize-context.js.map +1 -0
  230. package/dist/es5/context/context/webgl-checks.js +54 -0
  231. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  232. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  233. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  234. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  235. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  236. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  237. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  238. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  239. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  240. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  241. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  242. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  243. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  244. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  245. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  246. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  247. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  248. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  249. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  250. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  251. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  252. package/dist/es5/debug/debug-program-configuration.js +48 -20
  253. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  254. package/dist/es5/debug/debug-uniforms.js +110 -70
  255. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  256. package/dist/es5/debug/debug-vertex-array.js +49 -54
  257. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  258. package/dist/es5/device/check-glsl-extension.js +33 -0
  259. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  260. package/dist/es5/device/device-features.js +152 -0
  261. package/dist/es5/device/device-features.js.map +1 -0
  262. package/dist/es5/device/device-limits.js +64 -0
  263. package/dist/es5/device/device-limits.js.map +1 -0
  264. package/dist/es5/device/get-device-info.js +55 -0
  265. package/dist/es5/device/get-device-info.js.map +1 -0
  266. package/dist/es5/device/webgl-device.js +279 -0
  267. package/dist/es5/device/webgl-device.js.map +1 -0
  268. package/dist/es5/index.js +179 -189
  269. package/dist/es5/index.js.map +1 -1
  270. package/dist/es5/init.js +18 -14
  271. package/dist/es5/init.js.map +1 -1
  272. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  273. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  274. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  275. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  276. package/dist/es5/webgl-utils/format-utils.js +4 -4
  277. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  278. package/dist/es5/webgl-utils/get-error.js +18 -18
  279. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  280. package/dist/es5/webgl-utils/index.js +10 -10
  281. package/dist/es5/webgl-utils/is-old-ie.js +16 -0
  282. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  283. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  284. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  285. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  286. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  287. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  288. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  289. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  290. package/dist/esm/api/device2.js +23 -0
  291. package/dist/esm/api/device2.js.map +1 -0
  292. package/dist/esm/classes/accessor.js +2 -2
  293. package/dist/esm/classes/accessor.js.map +1 -1
  294. package/dist/esm/classes/accessor.ts.disabled +1 -1
  295. package/dist/esm/classes/clear.js +7 -4
  296. package/dist/esm/classes/clear.js.map +1 -1
  297. package/dist/esm/classes/copy-and-blit.js +30 -25
  298. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  299. package/dist/esm/classes/framebuffer.js +15 -15
  300. package/dist/esm/classes/framebuffer.js.map +1 -1
  301. package/dist/esm/classes/program-configuration.js +1 -1
  302. package/dist/esm/classes/program-configuration.js.map +1 -1
  303. package/dist/esm/classes/program.js +11 -9
  304. package/dist/esm/classes/program.js.map +1 -1
  305. package/dist/esm/classes/query.js +6 -5
  306. package/dist/esm/classes/query.js.map +1 -1
  307. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  308. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  309. package/dist/esm/classes/renderbuffer.js +4 -3
  310. package/dist/esm/classes/renderbuffer.js.map +1 -1
  311. package/dist/esm/classes/texture-2d.js +5 -8
  312. package/dist/esm/classes/texture-2d.js.map +1 -1
  313. package/dist/esm/classes/texture-3d.js +15 -6
  314. package/dist/esm/classes/texture-3d.js.map +1 -1
  315. package/dist/esm/classes/texture-cube.js +3 -4
  316. package/dist/esm/classes/texture-cube.js.map +1 -1
  317. package/dist/esm/classes/texture-formats.js +1 -1
  318. package/dist/esm/classes/texture-formats.js.map +1 -1
  319. package/dist/esm/classes/texture.js +19 -18
  320. package/dist/esm/classes/texture.js.map +1 -1
  321. package/dist/esm/classes/transform-feedback.js +5 -4
  322. package/dist/esm/classes/transform-feedback.js.map +1 -1
  323. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  324. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  325. package/dist/esm/classes/uniforms.js +1 -2
  326. package/dist/esm/classes/uniforms.js.map +1 -1
  327. package/dist/esm/classes/vertex-array-object.js +8 -9
  328. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  329. package/dist/esm/classes/vertex-array.js +1 -2
  330. package/dist/esm/classes/vertex-array.js.map +1 -1
  331. package/dist/esm/classes/webgl-buffer.js +8 -5
  332. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  333. package/dist/esm/classes/webgl-resource.js +12 -8
  334. package/dist/esm/classes/webgl-resource.js.map +1 -1
  335. package/dist/esm/classes/webgl-shader.js +7 -4
  336. package/dist/esm/classes/webgl-shader.js.map +1 -1
  337. package/dist/esm/context/context/context-state.js +26 -0
  338. package/dist/esm/context/context/context-state.js.map +1 -0
  339. package/dist/esm/context/context/create-context.js +37 -0
  340. package/dist/esm/context/context/create-context.js.map +1 -0
  341. package/dist/esm/context/context/device-pixels.js +98 -0
  342. package/dist/esm/context/context/device-pixels.js.map +1 -0
  343. package/dist/esm/context/context/get-canvas.js +31 -0
  344. package/dist/esm/context/context/get-canvas.js.map +1 -0
  345. package/dist/esm/context/context/resize-context.js +15 -0
  346. package/dist/esm/context/context/resize-context.js.map +1 -0
  347. package/dist/esm/context/context/webgl-checks.js +34 -0
  348. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  349. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  350. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  351. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  352. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  353. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  354. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  355. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  356. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  357. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  358. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  359. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  360. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  361. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  362. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  363. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  364. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  365. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  366. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  367. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  368. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  369. package/dist/esm/debug/debug-uniforms.js +1 -1
  370. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  371. package/dist/esm/debug/debug-vertex-array.js +2 -2
  372. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  373. package/dist/esm/device/check-glsl-extension.js +22 -0
  374. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  375. package/dist/esm/device/device-features.js +123 -0
  376. package/dist/esm/device/device-features.js.map +1 -0
  377. package/dist/esm/device/device-limits.js +90 -0
  378. package/dist/esm/device/device-limits.js.map +1 -0
  379. package/dist/esm/device/get-device-info.js +44 -0
  380. package/dist/esm/device/get-device-info.js.map +1 -0
  381. package/dist/esm/device/webgl-device.js +208 -0
  382. package/dist/esm/device/webgl-device.js.map +1 -0
  383. package/dist/esm/index.js +22 -20
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/init.js +11 -8
  386. package/dist/esm/init.js.map +1 -1
  387. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  388. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  389. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  390. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  391. package/dist/esm/webgl-utils/format-utils.js +1 -1
  392. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  393. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  394. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  395. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  396. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  397. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  398. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  399. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  400. package/dist/index.d.ts +36 -20
  401. package/dist/index.d.ts.map +1 -1
  402. package/dist/index.js +22 -20
  403. package/dist/index.js.map +1 -1
  404. package/dist/init.d.ts.map +1 -1
  405. package/dist/init.js +11 -8
  406. package/dist/init.js.map +1 -1
  407. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  408. package/dist/webgl-utils/attribute-utils.js +1 -1
  409. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  410. package/dist/webgl-utils/constants-to-keys.js +1 -1
  411. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  412. package/dist/webgl-utils/format-utils.d.ts +2 -2
  413. package/dist/webgl-utils/format-utils.js +1 -1
  414. package/dist/webgl-utils/format-utils.js.map +1 -1
  415. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  416. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  417. package/dist/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  418. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  419. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  420. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  421. package/dist/webgl-utils/texture-utils.js +2 -2
  422. package/dist/webgl-utils/texture-utils.js.map +1 -1
  423. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  424. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  425. package/dist/webgl-utils/typed-array-utils.js +22 -18
  426. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  427. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  428. package/package.json +5 -6
  429. package/src/.DS_Store +0 -0
  430. package/src/api/device2.ts +71 -0
  431. package/src/classes/accessor.js +2 -2
  432. package/src/classes/accessor.ts.disabled +1 -1
  433. package/src/classes/clear.ts +9 -4
  434. package/src/classes/copy-and-blit.ts +49 -52
  435. package/src/classes/framebuffer.ts +38 -35
  436. package/src/classes/program-configuration.ts +6 -6
  437. package/src/classes/program.ts +21 -15
  438. package/src/classes/query.ts +6 -6
  439. package/src/classes/renderbuffer-formats.ts +1 -1
  440. package/src/classes/renderbuffer.ts +5 -4
  441. package/src/classes/texture-2d.ts +6 -11
  442. package/src/classes/texture-3d.ts +16 -11
  443. package/src/classes/texture-cube.ts +7 -7
  444. package/src/classes/texture-formats.ts +1 -1
  445. package/src/classes/texture.ts +39 -40
  446. package/src/classes/transform-feedback.ts +14 -13
  447. package/src/classes/uniform-buffer-layout.ts +1 -1
  448. package/src/classes/uniforms.ts +4 -10
  449. package/src/classes/vertex-array-object.ts +10 -14
  450. package/src/classes/vertex-array.ts +2 -3
  451. package/src/classes/webgl-buffer.ts +7 -5
  452. package/src/classes/webgl-resource.ts +20 -18
  453. package/src/classes/webgl-shader.ts +6 -4
  454. package/src/context/context/context-state.ts +39 -0
  455. package/src/context/context/create-context.ts +83 -0
  456. package/src/context/context/device-pixels.ts +147 -0
  457. package/src/context/context/get-canvas.ts +37 -0
  458. package/src/context/context/resize-context.ts +37 -0
  459. package/src/context/context/webgl-checks.ts +49 -0
  460. package/src/context/parameters/unified-parameter-api.ts +127 -0
  461. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  462. package/src/context/parameters/webgl-parameters.ts +197 -0
  463. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  464. package/src/context/polyfill/polyfill-context.ts +98 -0
  465. package/src/context/polyfill/polyfill-table.ts +162 -0
  466. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  467. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  468. package/src/context/state-tracker/track-context-state.ts +250 -0
  469. package/src/context/state-tracker/with-parameters.ts +50 -0
  470. package/src/debug/debug-uniforms.ts +1 -1
  471. package/src/debug/debug-vertex-array.ts +2 -4
  472. package/src/device/check-glsl-extension.ts +44 -0
  473. package/src/device/device-features.ts +227 -0
  474. package/src/device/device-limits.ts +150 -0
  475. package/src/device/get-device-info.ts +49 -0
  476. package/src/device/webgl-device.ts +406 -0
  477. package/src/index.ts +76 -22
  478. package/src/init.ts +12 -9
  479. package/src/types.ts +1 -1
  480. package/src/webgl-utils/attribute-utils.ts +1 -1
  481. package/src/webgl-utils/constants-to-keys.ts +1 -1
  482. package/src/webgl-utils/format-utils.ts +1 -1
  483. package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
  484. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  485. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  486. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  487. package/dist/context/gl-context.d.ts +0 -15
  488. package/dist/context/gl-context.d.ts.map +0 -1
  489. package/dist/context/gl-context.js +0 -32
  490. package/dist/context/gl-context.js.map +0 -1
  491. package/dist/context/luma-context-data.d.ts +0 -31
  492. package/dist/context/luma-context-data.d.ts.map +0 -1
  493. package/dist/context/luma-context-data.js +0 -5
  494. package/dist/context/luma-context-data.js.map +0 -1
  495. package/dist/es5/context/gl-context.js +0 -46
  496. package/dist/es5/context/gl-context.js.map +0 -1
  497. package/dist/es5/context/luma-context-data.js +0 -12
  498. package/dist/es5/context/luma-context-data.js.map +0 -1
  499. package/dist/es5/features/check-glsl-extension.js +0 -40
  500. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  501. package/dist/es5/features/check-old-ie.js +0 -15
  502. package/dist/es5/features/check-old-ie.js.map +0 -1
  503. package/dist/es5/features/features.js +0 -85
  504. package/dist/es5/features/features.js.map +0 -1
  505. package/dist/es5/features/index.js +0 -64
  506. package/dist/es5/features/index.js.map +0 -1
  507. package/dist/es5/features/limits.js +0 -72
  508. package/dist/es5/features/limits.js.map +0 -1
  509. package/dist/es5/features/webgl-features-table.js +0 -84
  510. package/dist/es5/features/webgl-features-table.js.map +0 -1
  511. package/dist/es5/features/webgl-limits-table.js +0 -172
  512. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  513. package/dist/es5/utils/array-utils-flat.js +0 -50
  514. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  515. package/dist/es5/utils/assert.js +0 -13
  516. package/dist/es5/utils/assert.js.map +0 -1
  517. package/dist/es5/utils/check-props.js +0 -50
  518. package/dist/es5/utils/check-props.js.map +0 -1
  519. package/dist/es5/utils/format-value.js +0 -57
  520. package/dist/es5/utils/format-value.js.map +0 -1
  521. package/dist/es5/utils/index.js +0 -68
  522. package/dist/es5/utils/index.js.map +0 -1
  523. package/dist/es5/utils/is-old-ie.js +0 -13
  524. package/dist/es5/utils/is-old-ie.js.map +0 -1
  525. package/dist/es5/utils/load-file.js +0 -43
  526. package/dist/es5/utils/load-file.js.map +0 -1
  527. package/dist/es5/utils/stub-methods.js +0 -25
  528. package/dist/es5/utils/stub-methods.js.map +0 -1
  529. package/dist/es5/utils/utils.js +0 -31
  530. package/dist/es5/utils/utils.js.map +0 -1
  531. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  532. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  533. package/dist/esm/context/gl-context.js +0 -32
  534. package/dist/esm/context/gl-context.js.map +0 -1
  535. package/dist/esm/context/luma-context-data.js +0 -5
  536. package/dist/esm/context/luma-context-data.js.map +0 -1
  537. package/dist/esm/features/check-glsl-extension.js +0 -27
  538. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  539. package/dist/esm/features/check-old-ie.js.map +0 -1
  540. package/dist/esm/features/features.js +0 -67
  541. package/dist/esm/features/features.js.map +0 -1
  542. package/dist/esm/features/index.js +0 -5
  543. package/dist/esm/features/index.js.map +0 -1
  544. package/dist/esm/features/limits.js +0 -55
  545. package/dist/esm/features/limits.js.map +0 -1
  546. package/dist/esm/features/webgl-features-table.js +0 -71
  547. package/dist/esm/features/webgl-features-table.js.map +0 -1
  548. package/dist/esm/features/webgl-limits-table.js +0 -161
  549. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  550. package/dist/esm/utils/array-utils-flat.js +0 -39
  551. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  552. package/dist/esm/utils/assert.js +0 -6
  553. package/dist/esm/utils/assert.js.map +0 -1
  554. package/dist/esm/utils/check-props.js +0 -38
  555. package/dist/esm/utils/check-props.js.map +0 -1
  556. package/dist/esm/utils/format-value.js +0 -50
  557. package/dist/esm/utils/format-value.js.map +0 -1
  558. package/dist/esm/utils/index.js +0 -7
  559. package/dist/esm/utils/index.js.map +0 -1
  560. package/dist/esm/utils/is-old-ie.js +0 -5
  561. package/dist/esm/utils/is-old-ie.js.map +0 -1
  562. package/dist/esm/utils/load-file.js +0 -30
  563. package/dist/esm/utils/load-file.js.map +0 -1
  564. package/dist/esm/utils/stub-methods.js +0 -16
  565. package/dist/esm/utils/stub-methods.js.map +0 -1
  566. package/dist/esm/utils/utils.js +0 -20
  567. package/dist/esm/utils/utils.js.map +0 -1
  568. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  569. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  570. package/dist/features/check-glsl-extension.d.ts +0 -2
  571. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  572. package/dist/features/check-glsl-extension.js +0 -27
  573. package/dist/features/check-glsl-extension.js.map +0 -1
  574. package/dist/features/check-old-ie.d.ts +0 -2
  575. package/dist/features/check-old-ie.d.ts.map +0 -1
  576. package/dist/features/check-old-ie.js.map +0 -1
  577. package/dist/features/features.d.ts +0 -6
  578. package/dist/features/features.d.ts.map +0 -1
  579. package/dist/features/features.js +0 -67
  580. package/dist/features/features.js.map +0 -1
  581. package/dist/features/index.d.ts +0 -5
  582. package/dist/features/index.d.ts.map +0 -1
  583. package/dist/features/index.js +0 -5
  584. package/dist/features/index.js.map +0 -1
  585. package/dist/features/limits.d.ts +0 -28
  586. package/dist/features/limits.d.ts.map +0 -1
  587. package/dist/features/limits.js +0 -55
  588. package/dist/features/limits.js.map +0 -1
  589. package/dist/features/webgl-features-table.d.ts +0 -30
  590. package/dist/features/webgl-features-table.d.ts.map +0 -1
  591. package/dist/features/webgl-features-table.js +0 -71
  592. package/dist/features/webgl-features-table.js.map +0 -1
  593. package/dist/features/webgl-limits-table.d.ts +0 -161
  594. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  595. package/dist/features/webgl-limits-table.js +0 -161
  596. package/dist/features/webgl-limits-table.js.map +0 -1
  597. package/dist/utils/array-utils-flat.d.ts +0 -9
  598. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  599. package/dist/utils/array-utils-flat.js +0 -39
  600. package/dist/utils/array-utils-flat.js.map +0 -1
  601. package/dist/utils/assert.d.ts +0 -2
  602. package/dist/utils/assert.d.ts.map +0 -1
  603. package/dist/utils/assert.js +0 -6
  604. package/dist/utils/assert.js.map +0 -1
  605. package/dist/utils/check-props.d.ts +0 -2
  606. package/dist/utils/check-props.d.ts.map +0 -1
  607. package/dist/utils/check-props.js +0 -38
  608. package/dist/utils/check-props.js.map +0 -1
  609. package/dist/utils/format-value.d.ts +0 -5
  610. package/dist/utils/format-value.d.ts.map +0 -1
  611. package/dist/utils/format-value.js +0 -50
  612. package/dist/utils/format-value.js.map +0 -1
  613. package/dist/utils/index.d.ts +0 -7
  614. package/dist/utils/index.d.ts.map +0 -1
  615. package/dist/utils/index.js +0 -7
  616. package/dist/utils/index.js.map +0 -1
  617. package/dist/utils/is-old-ie.d.ts +0 -4
  618. package/dist/utils/is-old-ie.d.ts.map +0 -1
  619. package/dist/utils/is-old-ie.js +0 -5
  620. package/dist/utils/is-old-ie.js.map +0 -1
  621. package/dist/utils/load-file.d.ts +0 -4
  622. package/dist/utils/load-file.d.ts.map +0 -1
  623. package/dist/utils/load-file.js +0 -30
  624. package/dist/utils/load-file.js.map +0 -1
  625. package/dist/utils/stub-methods.d.ts +0 -2
  626. package/dist/utils/stub-methods.d.ts.map +0 -1
  627. package/dist/utils/stub-methods.js +0 -16
  628. package/dist/utils/stub-methods.js.map +0 -1
  629. package/dist/utils/utils.d.ts +0 -15
  630. package/dist/utils/utils.d.ts.map +0 -1
  631. package/dist/utils/utils.js +0 -20
  632. package/dist/utils/utils.js.map +0 -1
  633. package/src/context/gl-context.ts +0 -31
  634. package/src/context/luma-context-data.ts +0 -27
  635. package/src/features/check-glsl-extension.ts +0 -34
  636. package/src/features/features.ts +0 -80
  637. package/src/features/index.ts +0 -5
  638. package/src/features/limits.ts +0 -66
  639. package/src/features/webgl-features-table.ts +0 -104
  640. package/src/features/webgl-limits-table.ts +0 -51
  641. package/src/utils/array-utils-flat.ts +0 -56
  642. package/src/utils/assert.ts +0 -7
  643. package/src/utils/check-props.ts +0 -68
  644. package/src/utils/format-value.ts +0 -37
  645. package/src/utils/index.ts +0 -6
  646. package/src/utils/is-old-ie.ts +0 -6
  647. package/src/utils/load-file.ts +0 -40
  648. package/src/utils/stub-methods.ts +0 -20
  649. package/src/utils/utils.ts +0 -35
  650. package/src/webgl-utils/texture-utils.d.ts +0 -11
  651. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -7,644 +7,775 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.ImmutableFramebuffer = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
11
 
12
- var _constants = _interopRequireDefault(require("@luma.gl/constants"));
12
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
13
 
14
- var _gltools = require("@luma.gl/gltools");
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
 
16
- var _webglResource = _interopRequireDefault(require("./webgl-resource"));
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
- var _texture2d = _interopRequireDefault(require("./texture-2d"));
18
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
19
 
20
- var _renderbuffer = _interopRequireDefault(require("./renderbuffer"));
20
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
21
 
22
- var _clear = require("./clear");
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
23
 
24
- var _copyAndBlit = require("./copy-and-blit");
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
25
 
26
- var _lumaContextData = require("../context/luma-context-data");
26
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
27
 
28
- var _features = require("../features");
28
+ var _api = require("@luma.gl/api");
29
29
 
30
- var _webglUtils = require("../webgl-utils");
30
+ var _constants = _interopRequireDefault(require("@luma.gl/constants"));
31
31
 
32
- var _utils = require("../utils");
32
+ var _webglDevice = _interopRequireDefault(require("../device/webgl-device"));
33
33
 
34
- const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
34
+ var _webglChecks = require("../context/context/webgl-checks");
35
35
 
36
- class ImmutableFramebuffer extends _webglResource.default {
37
- constructor(gl, props) {
38
- super(gl, props, {});
36
+ var _constantsToKeys = require("../webgl-utils/constants-to-keys");
39
37
 
40
- this._initialize({
41
- attachments: (props === null || props === void 0 ? void 0 : props.attachments) || {},
42
- readBuffer: props === null || props === void 0 ? void 0 : props.readBuffer,
43
- drawBuffers: props === null || props === void 0 ? void 0 : props.drawBuffers
44
- });
45
- }
38
+ var _webglResource = _interopRequireDefault(require("./webgl-resource"));
46
39
 
47
- checkStatus() {
48
- const {
49
- gl
50
- } = this;
51
- const status = this.getStatus();
40
+ var _texture2d = _interopRequireDefault(require("./texture-2d"));
52
41
 
53
- if (status !== gl.FRAMEBUFFER_COMPLETE) {
54
- throw new Error(_getFrameBufferStatus(status));
55
- }
42
+ var _renderbuffer = _interopRequireDefault(require("./renderbuffer"));
56
43
 
57
- return this;
58
- }
44
+ var _clear2 = require("./clear");
59
45
 
60
- getStatus() {
61
- const {
62
- gl
63
- } = this;
64
- const prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
65
- const status = gl.checkFramebufferStatus(_constants.default.FRAMEBUFFER);
66
- gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
67
- return status;
68
- }
46
+ var _copyAndBlit = require("./copy-and-blit");
69
47
 
70
- show() {
71
- if (typeof window !== 'undefined') {
72
- window.open((0, _copyAndBlit.copyToDataUrl)(this), 'luma-debug-texture');
73
- }
48
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
74
49
 
75
- return this;
76
- }
50
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
77
51
 
78
- log(logLevel = 0, message = '') {
79
- if (logLevel > _gltools.log.level || typeof window === 'undefined') {
80
- return this;
81
- }
52
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
82
53
 
83
- message = message || "Framebuffer ".concat(this.id);
84
- const image = (0, _copyAndBlit.copyToDataUrl)(this, {
85
- targetMaxHeight: 100
86
- });
87
-
88
- _gltools.log.image({
89
- logLevel,
90
- message,
91
- image
92
- }, message)();
93
-
94
- return this;
95
- }
54
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
96
55
 
97
- bind({
98
- target = _constants.default.FRAMEBUFFER
99
- } = {}) {
100
- this.gl.bindFramebuffer(target, this.handle);
101
- return this;
102
- }
56
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
103
57
 
104
- unbind({
105
- target = _constants.default.FRAMEBUFFER
106
- } = {}) {
107
- this.gl.bindFramebuffer(target, null);
108
- return this;
109
- }
58
+ var ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
110
59
 
111
- _initialize(options) {
112
- const {
113
- attachments = {},
114
- readBuffer,
115
- drawBuffers
116
- } = options;
60
+ var ImmutableFramebuffer = function (_Resource) {
61
+ (0, _inherits2.default)(ImmutableFramebuffer, _Resource);
117
62
 
118
- this._attach(attachments);
63
+ var _super = _createSuper(ImmutableFramebuffer);
119
64
 
120
- const prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
65
+ function ImmutableFramebuffer(gl, props) {
66
+ var _this;
121
67
 
122
- if (readBuffer) {
123
- this._setReadBuffer(readBuffer);
124
- }
68
+ (0, _classCallCheck2.default)(this, ImmutableFramebuffer);
69
+ _this = _super.call(this, _webglDevice.default.attach(gl), props, {});
125
70
 
126
- if (drawBuffers) {
127
- this._setDrawBuffers(drawBuffers);
128
- }
71
+ _this._initialize({
72
+ attachments: (props === null || props === void 0 ? void 0 : props.attachments) || {},
73
+ readBuffer: props === null || props === void 0 ? void 0 : props.readBuffer,
74
+ drawBuffers: props === null || props === void 0 ? void 0 : props.drawBuffers
75
+ });
129
76
 
130
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
131
- return this;
77
+ return _this;
132
78
  }
133
79
 
134
- _attach(attachments) {
135
- const prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
80
+ (0, _createClass2.default)(ImmutableFramebuffer, [{
81
+ key: "checkStatus",
82
+ value: function checkStatus() {
83
+ var gl = this.gl;
84
+ var status = this.getStatus();
136
85
 
137
- for (const key in attachments) {
138
- (0, _utils.assert)(key !== undefined, 'Misspelled framebuffer binding point?');
139
- const attachmentPoint = Number(key);
140
- const attachment = attachments[attachmentPoint];
86
+ if (status !== gl.FRAMEBUFFER_COMPLETE) {
87
+ throw new Error(_getFrameBufferStatus(status));
88
+ }
141
89
 
142
- this._attachOne(attachmentPoint, attachment);
90
+ return this;
143
91
  }
92
+ }, {
93
+ key: "getStatus",
94
+ value: function getStatus() {
95
+ var gl = this.gl;
96
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
97
+ var status = gl.checkFramebufferStatus(_constants.default.FRAMEBUFFER);
98
+ gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
99
+ return status;
100
+ }
101
+ }, {
102
+ key: "show",
103
+ value: function show() {
104
+ if (typeof window !== 'undefined') {
105
+ window.open((0, _copyAndBlit.copyToDataUrl)(this), 'luma-debug-texture');
106
+ }
144
107
 
145
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
146
- }
108
+ return this;
109
+ }
110
+ }, {
111
+ key: "log",
112
+ value: function log() {
113
+ var logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
114
+ var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
147
115
 
148
- _attachOne(attachmentPoint, attachment) {
149
- if (attachment instanceof _renderbuffer.default) {
150
- this._attachRenderbuffer(attachmentPoint, attachment);
116
+ if (logLevel > _api.log.level || typeof window === 'undefined') {
117
+ return this;
118
+ }
151
119
 
152
- return attachment;
153
- } else if (Array.isArray(attachment)) {
154
- const [texture, layer = 0, level = 0] = attachment;
120
+ message = message || "Framebuffer ".concat(this.id);
121
+ var image = (0, _copyAndBlit.copyToDataUrl)(this, {
122
+ targetMaxHeight: 100
123
+ });
155
124
 
156
- this._attachTexture(attachmentPoint, texture, layer, level);
125
+ _api.log.image({
126
+ logLevel: logLevel,
127
+ message: message,
128
+ image: image
129
+ })();
157
130
 
158
- return texture;
159
- } else if (attachment instanceof _texture2d.default) {
160
- this._attachTexture(attachmentPoint, attachment, 0, 0);
131
+ return this;
132
+ }
133
+ }, {
134
+ key: "bind",
135
+ value: function bind() {
136
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
137
+ _ref$target = _ref.target,
138
+ target = _ref$target === void 0 ? _constants.default.FRAMEBUFFER : _ref$target;
161
139
 
162
- return attachment;
140
+ this.gl.bindFramebuffer(target, this.handle);
141
+ return this;
163
142
  }
164
- }
143
+ }, {
144
+ key: "unbind",
145
+ value: function unbind() {
146
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
147
+ _ref2$target = _ref2.target,
148
+ target = _ref2$target === void 0 ? _constants.default.FRAMEBUFFER : _ref2$target;
165
149
 
166
- _attachRenderbuffer(attachment, renderbuffer) {
167
- this.gl.framebufferRenderbuffer(_constants.default.FRAMEBUFFER, attachment, _constants.default.RENDERBUFFER, renderbuffer.handle);
168
- }
150
+ this.gl.bindFramebuffer(target, null);
151
+ return this;
152
+ }
153
+ }, {
154
+ key: "_initialize",
155
+ value: function _initialize(options) {
156
+ var _options$attachments = options.attachments,
157
+ attachments = _options$attachments === void 0 ? {} : _options$attachments,
158
+ readBuffer = options.readBuffer,
159
+ drawBuffers = options.drawBuffers;
169
160
 
170
- _attachTexture(attachment, texture, layer, level) {
171
- const {
172
- gl
173
- } = this;
174
- gl.bindTexture(texture.target, texture.handle);
161
+ this._attach(attachments);
175
162
 
176
- switch (texture.target) {
177
- case _constants.default.TEXTURE_2D_ARRAY:
178
- case _constants.default.TEXTURE_3D:
179
- const gl2 = (0, _gltools.assertWebGL2Context)(gl);
180
- gl2.framebufferTextureLayer(_constants.default.FRAMEBUFFER, attachment, texture.target, level, layer);
181
- break;
163
+ var prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
182
164
 
183
- case _constants.default.TEXTURE_CUBE_MAP:
184
- const face = mapIndexToCubeMapFace(layer);
185
- gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, face, texture.handle, level);
186
- break;
165
+ if (readBuffer) {
166
+ this._setReadBuffer(readBuffer);
167
+ }
187
168
 
188
- case _constants.default.TEXTURE_2D:
189
- gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, _constants.default.TEXTURE_2D, texture.handle, level);
190
- break;
169
+ if (drawBuffers) {
170
+ this._setDrawBuffers(drawBuffers);
171
+ }
191
172
 
192
- default:
193
- (0, _utils.assert)(false, 'Illegal texture type');
173
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
174
+ return this;
194
175
  }
176
+ }, {
177
+ key: "_attach",
178
+ value: function _attach(attachments) {
179
+ var prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
195
180
 
196
- gl.bindTexture(texture.target, null);
197
- }
181
+ for (var key in attachments) {
182
+ (0, _api.assert)(key !== undefined, 'Misspelled framebuffer binding point?');
183
+ var attachmentPoint = Number(key);
184
+ var attachment = attachments[attachmentPoint];
198
185
 
199
- _setReadBuffer(readBuffer) {
200
- const gl2 = (0, _gltools.getWebGL2Context)(this.gl);
186
+ this._attachOne(attachmentPoint, attachment);
187
+ }
201
188
 
202
- if (gl2) {
203
- gl2.readBuffer(readBuffer);
204
- } else {
205
- (0, _utils.assert)(readBuffer === _constants.default.COLOR_ATTACHMENT0 || readBuffer === _constants.default.BACK, ERR_MULTIPLE_RENDERTARGETS);
189
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
206
190
  }
207
- }
191
+ }, {
192
+ key: "_attachOne",
193
+ value: function _attachOne(attachmentPoint, attachment) {
194
+ if (attachment instanceof _renderbuffer.default) {
195
+ this._attachRenderbuffer(attachmentPoint, attachment);
208
196
 
209
- _setDrawBuffers(drawBuffers) {
210
- const {
211
- gl
212
- } = this;
213
- const gl2 = (0, _gltools.assertWebGL2Context)(gl);
197
+ return attachment;
198
+ } else if (Array.isArray(attachment)) {
199
+ var _attachment = (0, _slicedToArray2.default)(attachment, 3),
200
+ texture = _attachment[0],
201
+ _attachment$ = _attachment[1],
202
+ layer = _attachment$ === void 0 ? 0 : _attachment$,
203
+ _attachment$2 = _attachment[2],
204
+ level = _attachment$2 === void 0 ? 0 : _attachment$2;
214
205
 
215
- if (gl2) {
216
- gl2.drawBuffers(drawBuffers);
217
- } else {
218
- const ext = gl.getExtension('WEBGL_draw_buffers');
206
+ this._attachTexture(attachmentPoint, texture, layer, level);
219
207
 
220
- if (ext) {
221
- ext.drawBuffersWEBGL(drawBuffers);
222
- } else {
223
- (0, _utils.assert)(drawBuffers.length === 1 && (drawBuffers[0] === _constants.default.COLOR_ATTACHMENT0 || drawBuffers[0] === _constants.default.BACK), ERR_MULTIPLE_RENDERTARGETS);
208
+ return texture;
209
+ } else if (attachment instanceof _texture2d.default) {
210
+ this._attachTexture(attachmentPoint, attachment, 0, 0);
211
+
212
+ return attachment;
224
213
  }
225
214
  }
226
- }
215
+ }, {
216
+ key: "_attachRenderbuffer",
217
+ value: function _attachRenderbuffer(attachment, renderbuffer) {
218
+ this.gl.framebufferRenderbuffer(_constants.default.FRAMEBUFFER, attachment, _constants.default.RENDERBUFFER, renderbuffer.handle);
219
+ }
220
+ }, {
221
+ key: "_attachTexture",
222
+ value: function _attachTexture(attachment, texture, layer, level) {
223
+ var gl = this.gl;
224
+ gl.bindTexture(texture.target, texture.handle);
225
+
226
+ switch (texture.target) {
227
+ case _constants.default.TEXTURE_2D_ARRAY:
228
+ case _constants.default.TEXTURE_3D:
229
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
230
+ gl2.framebufferTextureLayer(_constants.default.FRAMEBUFFER, attachment, texture.target, level, layer);
231
+ break;
232
+
233
+ case _constants.default.TEXTURE_CUBE_MAP:
234
+ var face = mapIndexToCubeMapFace(layer);
235
+ gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, face, texture.handle, level);
236
+ break;
237
+
238
+ case _constants.default.TEXTURE_2D:
239
+ gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, _constants.default.TEXTURE_2D, texture.handle, level);
240
+ break;
241
+
242
+ default:
243
+ (0, _api.assert)(false, 'Illegal texture type');
244
+ }
227
245
 
228
- _createHandle() {
229
- return this.gl.createFramebuffer();
230
- }
246
+ gl.bindTexture(texture.target, null);
247
+ }
248
+ }, {
249
+ key: "_setReadBuffer",
250
+ value: function _setReadBuffer(readBuffer) {
251
+ var gl2 = (0, _webglChecks.getWebGL2Context)(this.gl);
231
252
 
232
- _deleteHandle() {
233
- this.gl.deleteFramebuffer(this.handle);
234
- }
253
+ if (gl2) {
254
+ gl2.readBuffer(readBuffer);
255
+ } else {
256
+ (0, _api.assert)(readBuffer === _constants.default.COLOR_ATTACHMENT0 || readBuffer === _constants.default.BACK, ERR_MULTIPLE_RENDERTARGETS);
257
+ }
258
+ }
259
+ }, {
260
+ key: "_setDrawBuffers",
261
+ value: function _setDrawBuffers(drawBuffers) {
262
+ var gl = this.gl;
263
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
235
264
 
236
- _bindHandle(handle) {
237
- return this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
238
- }
265
+ if (gl2) {
266
+ gl2.drawBuffers(drawBuffers);
267
+ } else {
268
+ var ext = gl.getExtension('WEBGL_draw_buffers');
239
269
 
240
- }
270
+ if (ext) {
271
+ ext.drawBuffersWEBGL(drawBuffers);
272
+ } else {
273
+ (0, _api.assert)(drawBuffers.length === 1 && (drawBuffers[0] === _constants.default.COLOR_ATTACHMENT0 || drawBuffers[0] === _constants.default.BACK), ERR_MULTIPLE_RENDERTARGETS);
274
+ }
275
+ }
276
+ }
277
+ }, {
278
+ key: "_createHandle",
279
+ value: function _createHandle() {
280
+ return this.gl.createFramebuffer();
281
+ }
282
+ }, {
283
+ key: "_deleteHandle",
284
+ value: function _deleteHandle() {
285
+ this.gl.deleteFramebuffer(this.handle);
286
+ }
287
+ }, {
288
+ key: "_bindHandle",
289
+ value: function _bindHandle(handle) {
290
+ return this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, handle);
291
+ }
292
+ }]);
293
+ return ImmutableFramebuffer;
294
+ }(_webglResource.default);
241
295
 
242
296
  exports.ImmutableFramebuffer = ImmutableFramebuffer;
243
297
 
244
- class Framebuffer extends ImmutableFramebuffer {
245
- static isSupported(gl, options) {
246
- return isFloatColorBufferSupported(gl, options);
247
- }
248
-
249
- static getDefaultFramebuffer(gl) {
250
- const lumaContextData = (0, _lumaContextData.getLumaContextData)(gl);
251
- lumaContextData.defaultFramebuffer = lumaContextData.defaultFramebuffer || new Framebuffer(gl, {
252
- id: 'default-framebuffer',
253
- handle: null,
254
- attachments: {}
255
- });
256
- return lumaContextData.defaultFramebuffer;
257
- }
258
-
259
- get MAX_COLOR_ATTACHMENTS() {
260
- const gl2 = (0, _gltools.assertWebGL2Context)(this.gl);
261
- return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);
262
- }
263
-
264
- get MAX_DRAW_BUFFERS() {
265
- const gl2 = (0, _gltools.assertWebGL2Context)(this.gl);
266
- return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
267
- }
268
-
269
- constructor(gl, props) {
270
- super(gl, props);
271
- (0, _defineProperty2.default)(this, "width", null);
272
- (0, _defineProperty2.default)(this, "height", null);
273
- (0, _defineProperty2.default)(this, "attachments", {});
274
- (0, _defineProperty2.default)(this, "readBuffer", _constants.default.COLOR_ATTACHMENT0);
275
- (0, _defineProperty2.default)(this, "drawBuffers", [_constants.default.COLOR_ATTACHMENT0]);
276
- (0, _defineProperty2.default)(this, "ownResources", []);
277
- this.initialize(props);
278
- Object.seal(this);
279
- }
280
-
281
- get color() {
282
- return this.attachments[_constants.default.COLOR_ATTACHMENT0] || null;
283
- }
284
-
285
- get texture() {
286
- return this.attachments[_constants.default.COLOR_ATTACHMENT0] || null;
287
- }
288
-
289
- get depth() {
290
- return this.attachments[_constants.default.DEPTH_ATTACHMENT] || this.attachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] || null;
291
- }
298
+ var Framebuffer = function (_ImmutableFramebuffer) {
299
+ (0, _inherits2.default)(Framebuffer, _ImmutableFramebuffer);
300
+
301
+ var _super2 = _createSuper(Framebuffer);
302
+
303
+ function Framebuffer(gl, props) {
304
+ var _this2;
305
+
306
+ (0, _classCallCheck2.default)(this, Framebuffer);
307
+ _this2 = _super2.call(this, gl, props);
308
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "width", null);
309
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "height", null);
310
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "attachments", {});
311
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "readBuffer", _constants.default.COLOR_ATTACHMENT0);
312
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "drawBuffers", [_constants.default.COLOR_ATTACHMENT0]);
313
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "ownResources", []);
314
+
315
+ _this2.initialize(props);
316
+
317
+ Object.seal((0, _assertThisInitialized2.default)(_this2));
318
+ return _this2;
319
+ }
320
+
321
+ (0, _createClass2.default)(Framebuffer, [{
322
+ key: "MAX_COLOR_ATTACHMENTS",
323
+ get: function get() {
324
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(this.gl);
325
+ return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);
326
+ }
327
+ }, {
328
+ key: "MAX_DRAW_BUFFERS",
329
+ get: function get() {
330
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(this.gl);
331
+ return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);
332
+ }
333
+ }, {
334
+ key: "color",
335
+ get: function get() {
336
+ return this.attachments[_constants.default.COLOR_ATTACHMENT0] || null;
337
+ }
338
+ }, {
339
+ key: "texture",
340
+ get: function get() {
341
+ return this.attachments[_constants.default.COLOR_ATTACHMENT0] || null;
342
+ }
343
+ }, {
344
+ key: "depth",
345
+ get: function get() {
346
+ return this.attachments[_constants.default.DEPTH_ATTACHMENT] || this.attachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] || null;
347
+ }
348
+ }, {
349
+ key: "stencil",
350
+ get: function get() {
351
+ return this.attachments[_constants.default.STENCIL_ATTACHMENT] || this.attachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] || null;
352
+ }
353
+ }, {
354
+ key: "initialize",
355
+ value: function initialize(props) {
356
+ var _ref3 = props || {},
357
+ _ref3$attachments = _ref3.attachments,
358
+ attachments = _ref3$attachments === void 0 ? null : _ref3$attachments;
359
+
360
+ var _ref4 = props || {},
361
+ _ref4$width = _ref4.width,
362
+ width = _ref4$width === void 0 ? 1 : _ref4$width,
363
+ _ref4$height = _ref4.height,
364
+ height = _ref4$height === void 0 ? 1 : _ref4$height,
365
+ _ref4$color = _ref4.color,
366
+ color = _ref4$color === void 0 ? true : _ref4$color,
367
+ _ref4$depth = _ref4.depth,
368
+ depth = _ref4$depth === void 0 ? true : _ref4$depth,
369
+ _ref4$stencil = _ref4.stencil,
370
+ stencil = _ref4$stencil === void 0 ? false : _ref4$stencil,
371
+ _ref4$check = _ref4.check,
372
+ check = _ref4$check === void 0 ? true : _ref4$check,
373
+ _ref4$readBuffer = _ref4.readBuffer,
374
+ readBuffer = _ref4$readBuffer === void 0 ? undefined : _ref4$readBuffer,
375
+ _ref4$drawBuffers = _ref4.drawBuffers,
376
+ drawBuffers = _ref4$drawBuffers === void 0 ? undefined : _ref4$drawBuffers;
377
+
378
+ (0, _api.assert)(width >= 0 && height >= 0, 'Width and height need to be integers');
379
+ this.width = width;
380
+ this.height = height;
381
+
382
+ if (attachments) {
383
+ for (var attachment in attachments) {
384
+ var target = attachments[attachment];
385
+ var object = Array.isArray(target) ? target[0] : target;
386
+ object.resize({
387
+ width: width,
388
+ height: height
389
+ });
390
+ }
391
+ } else {
392
+ attachments = this._createDefaultAttachments(color, depth, stencil, width, height);
393
+ }
292
394
 
293
- get stencil() {
294
- return this.attachments[_constants.default.STENCIL_ATTACHMENT] || this.attachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] || null;
295
- }
395
+ this.update({
396
+ clearAttachments: true,
397
+ attachments: attachments,
398
+ readBuffer: readBuffer,
399
+ drawBuffers: drawBuffers
400
+ });
296
401
 
297
- initialize(props) {
298
- let {
299
- attachments = null
300
- } = props || {};
301
- const {
302
- width = 1,
303
- height = 1,
304
- color = true,
305
- depth = true,
306
- stencil = false,
307
- check = true,
308
- readBuffer = undefined,
309
- drawBuffers = undefined
310
- } = props || {};
311
- (0, _utils.assert)(width >= 0 && height >= 0, 'Width and height need to be integers');
312
- this.width = width;
313
- this.height = height;
314
-
315
- if (attachments) {
316
- for (const attachment in attachments) {
317
- const target = attachments[attachment];
318
- const object = Array.isArray(target) ? target[0] : target;
319
- object.resize({
320
- width,
321
- height
322
- });
402
+ if (attachments && check) {
403
+ this.checkStatus();
323
404
  }
324
- } else {
325
- attachments = this._createDefaultAttachments(color, depth, stencil, width, height);
326
405
  }
406
+ }, {
407
+ key: "delete",
408
+ value: function _delete() {
409
+ var _iterator = _createForOfIteratorHelper(this.ownResources),
410
+ _step;
327
411
 
328
- this.update({
329
- clearAttachments: true,
330
- attachments,
331
- readBuffer,
332
- drawBuffers
333
- });
412
+ try {
413
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
414
+ var resource = _step.value;
415
+ resource.delete();
416
+ }
417
+ } catch (err) {
418
+ _iterator.e(err);
419
+ } finally {
420
+ _iterator.f();
421
+ }
334
422
 
335
- if (attachments && check) {
336
- this.checkStatus();
423
+ (0, _get2.default)((0, _getPrototypeOf2.default)(Framebuffer.prototype), "delete", this).call(this);
424
+ return this;
337
425
  }
338
- }
426
+ }, {
427
+ key: "update",
428
+ value: function update(options) {
429
+ var _options$attachments2 = options.attachments,
430
+ attachments = _options$attachments2 === void 0 ? {} : _options$attachments2,
431
+ readBuffer = options.readBuffer,
432
+ drawBuffers = options.drawBuffers,
433
+ _options$clearAttachm = options.clearAttachments,
434
+ clearAttachments = _options$clearAttachm === void 0 ? false : _options$clearAttachm,
435
+ _options$resizeAttach = options.resizeAttachments,
436
+ resizeAttachments = _options$resizeAttach === void 0 ? true : _options$resizeAttach;
437
+ this.attach(attachments, {
438
+ clearAttachments: clearAttachments,
439
+ resizeAttachments: resizeAttachments
440
+ });
441
+ var gl = this.gl;
442
+ var prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
339
443
 
340
- delete() {
341
- for (const resource of this.ownResources) {
342
- resource.delete();
343
- }
444
+ if (readBuffer) {
445
+ this._setReadBuffer(readBuffer);
344
446
 
345
- super.delete();
346
- return this;
347
- }
447
+ this.readBuffer = readBuffer;
448
+ }
348
449
 
349
- update(options) {
350
- const {
351
- attachments = {},
352
- readBuffer,
353
- drawBuffers,
354
- clearAttachments = false,
355
- resizeAttachments = true
356
- } = options;
357
- this.attach(attachments, {
358
- clearAttachments,
359
- resizeAttachments
360
- });
361
- const {
362
- gl
363
- } = this;
364
- const prevHandle = gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
450
+ if (drawBuffers) {
451
+ this._setDrawBuffers(drawBuffers);
365
452
 
366
- if (readBuffer) {
367
- this._setReadBuffer(readBuffer);
453
+ this.drawBuffers = drawBuffers;
454
+ }
368
455
 
369
- this.readBuffer = readBuffer;
456
+ gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
457
+ return this;
370
458
  }
459
+ }, {
460
+ key: "resize",
461
+ value: function resize(size) {
462
+ var _ref5 = size || {},
463
+ width = _ref5.width,
464
+ height = _ref5.height;
465
+
466
+ if (this.handle === null) {
467
+ (0, _api.assert)(width === undefined && height === undefined);
468
+ this.width = this.gl.drawingBufferWidth;
469
+ this.height = this.gl.drawingBufferHeight;
470
+ return this;
471
+ }
371
472
 
372
- if (drawBuffers) {
373
- this._setDrawBuffers(drawBuffers);
473
+ if (width === undefined) {
474
+ width = this.gl.drawingBufferWidth;
475
+ }
374
476
 
375
- this.drawBuffers = drawBuffers;
376
- }
477
+ if (height === undefined) {
478
+ height = this.gl.drawingBufferHeight;
479
+ }
377
480
 
378
- gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
379
- return this;
380
- }
481
+ if (width !== this.width && height !== this.height) {
482
+ _api.log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
483
+ }
381
484
 
382
- resize(size) {
383
- let {
384
- width,
385
- height
386
- } = size || {};
485
+ for (var attachmentPoint in this.attachments) {
486
+ this.attachments[attachmentPoint].resize({
487
+ width: width,
488
+ height: height
489
+ });
490
+ }
387
491
 
388
- if (this.handle === null) {
389
- (0, _utils.assert)(width === undefined && height === undefined);
390
- this.width = this.gl.drawingBufferWidth;
391
- this.height = this.gl.drawingBufferHeight;
492
+ this.width = width;
493
+ this.height = height;
392
494
  return this;
393
495
  }
496
+ }, {
497
+ key: "attach",
498
+ value: function attach(attachments) {
499
+ var _this3 = this;
394
500
 
395
- if (width === undefined) {
396
- width = this.gl.drawingBufferWidth;
397
- }
501
+ var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
502
+ _ref6$clearAttachment = _ref6.clearAttachments,
503
+ clearAttachments = _ref6$clearAttachment === void 0 ? false : _ref6$clearAttachment,
504
+ _ref6$resizeAttachmen = _ref6.resizeAttachments,
505
+ resizeAttachments = _ref6$resizeAttachmen === void 0 ? true : _ref6$resizeAttachmen;
398
506
 
399
- if (height === undefined) {
400
- height = this.gl.drawingBufferHeight;
401
- }
507
+ var newAttachments = {};
402
508
 
403
- if (width !== this.width && height !== this.height) {
404
- _gltools.log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
405
- }
509
+ if (clearAttachments) {
510
+ Object.keys(this.attachments).forEach(function (key) {
511
+ newAttachments[key] = null;
512
+ });
513
+ }
406
514
 
407
- for (const attachmentPoint in this.attachments) {
408
- this.attachments[attachmentPoint].resize({
409
- width,
410
- height
411
- });
412
- }
515
+ Object.assign(newAttachments, attachments);
516
+ var prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
413
517
 
414
- this.width = width;
415
- this.height = height;
416
- return this;
417
- }
518
+ for (var key in newAttachments) {
519
+ (0, _api.assert)(key !== undefined, 'Misspelled framebuffer binding point?');
520
+ var attachment = Number(key);
521
+ var descriptor = newAttachments[attachment];
522
+ var object = descriptor;
523
+
524
+ if (!object) {
525
+ this._unattach(attachment);
526
+ } else {
527
+ object = this._attachOne(attachment, object);
528
+ this.attachments[attachment] = object;
529
+ }
418
530
 
419
- attach(attachments, {
420
- clearAttachments = false,
421
- resizeAttachments = true
422
- } = {}) {
423
- const newAttachments = {};
531
+ if (resizeAttachments && object) {
532
+ object.resize({
533
+ width: this.width,
534
+ height: this.height
535
+ });
536
+ }
537
+ }
424
538
 
425
- if (clearAttachments) {
426
- Object.keys(this.attachments).forEach(key => {
427
- newAttachments[key] = null;
539
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
540
+ Object.assign(this.attachments, attachments);
541
+ Object.keys(this.attachments).filter(function (key) {
542
+ return !_this3.attachments[key];
543
+ }).forEach(function (key) {
544
+ delete _this3.attachments[key];
428
545
  });
429
546
  }
430
-
431
- Object.assign(newAttachments, attachments);
432
- const prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
433
-
434
- for (const key in newAttachments) {
435
- (0, _utils.assert)(key !== undefined, 'Misspelled framebuffer binding point?');
436
- const attachment = Number(key);
437
- const descriptor = newAttachments[attachment];
438
- let object = descriptor;
439
-
440
- if (!object) {
441
- this._unattach(attachment);
442
- } else {
443
- object = this._attachOne(attachment, object);
444
- this.attachments[attachment] = object;
547
+ }, {
548
+ key: "clear",
549
+ value: function clear(options) {
550
+ var _this4 = this;
551
+
552
+ var color = options.color,
553
+ depth = options.depth,
554
+ stencil = options.stencil,
555
+ _options$drawBuffers = options.drawBuffers,
556
+ drawBuffers = _options$drawBuffers === void 0 ? [] : _options$drawBuffers;
557
+ var prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
558
+
559
+ if (color || depth || stencil) {
560
+ (0, _clear2.clear)(this.gl, {
561
+ color: color,
562
+ depth: depth,
563
+ stencil: stencil
564
+ });
445
565
  }
446
566
 
447
- if (resizeAttachments && object) {
448
- object.resize({
449
- width: this.width,
450
- height: this.height
567
+ drawBuffers.forEach(function (value, drawBuffer) {
568
+ (0, _clear2.clearBuffer)(_this4.gl, {
569
+ drawBuffer: drawBuffer,
570
+ value: value
451
571
  });
452
- }
572
+ });
573
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
574
+ return this;
453
575
  }
576
+ }, {
577
+ key: "blit",
578
+ value: function blit() {
579
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
580
+
581
+ _api.log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();
582
+
583
+ return null;
584
+ }
585
+ }, {
586
+ key: "invalidate",
587
+ value: function invalidate(options) {
588
+ var _options$attachments3 = options.attachments,
589
+ attachments = _options$attachments3 === void 0 ? [] : _options$attachments3,
590
+ _options$x = options.x,
591
+ x = _options$x === void 0 ? 0 : _options$x,
592
+ _options$y = options.y,
593
+ y = _options$y === void 0 ? 0 : _options$y,
594
+ width = options.width,
595
+ height = options.height;
596
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(this.gl);
597
+ var prevHandle = gl2.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, this.handle);
598
+ var invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
599
+
600
+ if (invalidateAll) {
601
+ gl2.invalidateFramebuffer(_constants.default.READ_FRAMEBUFFER, attachments);
602
+ } else {
603
+ gl2.invalidateFramebuffer(_constants.default.READ_FRAMEBUFFER, attachments, x, y, width, height);
604
+ }
454
605
 
455
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
456
- Object.assign(this.attachments, attachments);
457
- Object.keys(this.attachments).filter(key => !this.attachments[key]).forEach(key => {
458
- delete this.attachments[key];
459
- });
460
- }
461
-
462
- clear(options) {
463
- const {
464
- color,
465
- depth,
466
- stencil,
467
- drawBuffers = []
468
- } = options;
469
- const prevHandle = this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
470
-
471
- if (color || depth || stencil) {
472
- (0, _clear.clear)(this.gl, {
473
- color,
474
- depth,
475
- stencil
476
- });
606
+ gl2.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, prevHandle);
607
+ return this;
477
608
  }
609
+ }, {
610
+ key: "getAttachmentParameter",
611
+ value: function getAttachmentParameter(attachment, pname, keys) {
612
+ var value = this._getAttachmentParameterFallback(pname);
478
613
 
479
- drawBuffers.forEach((value, drawBuffer) => {
480
- (0, _clear.clearBuffer)(this.gl, {
481
- drawBuffer,
482
- value
483
- });
484
- });
485
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, prevHandle || null);
486
- return this;
487
- }
614
+ if (value === null) {
615
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
616
+ value = this.gl.getFramebufferAttachmentParameter(_constants.default.FRAMEBUFFER, attachment, pname);
617
+ this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, null);
618
+ }
488
619
 
489
- blit(opts = {}) {
490
- _gltools.log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();
620
+ if (keys && value > 1000) {
621
+ value = (0, _constantsToKeys.getKey)(this.gl, value);
622
+ }
491
623
 
492
- return null;
493
- }
624
+ return value;
625
+ }
626
+ }, {
627
+ key: "getAttachmentParameters",
628
+ value: function getAttachmentParameters() {
629
+ var attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.default.COLOR_ATTACHMENT0;
630
+ var keys = arguments.length > 1 ? arguments[1] : undefined;
631
+ var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];
632
+ var values = {};
494
633
 
495
- invalidate(options) {
496
- const {
497
- attachments = [],
498
- x = 0,
499
- y = 0,
500
- width,
501
- height
502
- } = options;
503
- const gl2 = (0, _gltools.assertWebGL2Context)(this.gl);
504
- const prevHandle = gl2.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, this.handle);
505
- const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;
506
-
507
- if (invalidateAll) {
508
- gl2.invalidateFramebuffer(_constants.default.READ_FRAMEBUFFER, attachments);
509
- } else {
510
- gl2.invalidateFramebuffer(_constants.default.READ_FRAMEBUFFER, attachments, x, y, width, height);
511
- }
512
-
513
- gl2.bindFramebuffer(_constants.default.READ_FRAMEBUFFER, prevHandle);
514
- return this;
515
- }
634
+ var _iterator2 = _createForOfIteratorHelper(parameters),
635
+ _step2;
516
636
 
517
- getAttachmentParameter(attachment, pname, keys) {
518
- let value = this._getAttachmentParameterFallback(pname);
637
+ try {
638
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
639
+ var pname = _step2.value;
640
+ var key = keys ? (0, _constantsToKeys.getKey)(this.gl, pname) : pname;
641
+ values[key] = this.getAttachmentParameter(attachment, pname, keys);
642
+ }
643
+ } catch (err) {
644
+ _iterator2.e(err);
645
+ } finally {
646
+ _iterator2.f();
647
+ }
519
648
 
520
- if (value === null) {
521
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, this.handle);
522
- value = this.gl.getFramebufferAttachmentParameter(_constants.default.FRAMEBUFFER, attachment, pname);
523
- this.gl.bindFramebuffer(_constants.default.FRAMEBUFFER, null);
649
+ return values;
524
650
  }
651
+ }, {
652
+ key: "getParameters",
653
+ value: function getParameters() {
654
+ var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
655
+ var attachments = Object.keys(this.attachments);
656
+ var parameters = {};
525
657
 
526
- if (keys && value > 1000) {
527
- value = (0, _webglUtils.getKey)(this.gl, value);
528
- }
658
+ for (var _i = 0, _attachments = attachments; _i < _attachments.length; _i++) {
659
+ var attachmentName = _attachments[_i];
660
+ var attachment = Number(attachmentName);
661
+ var key = keys ? (0, _constantsToKeys.getKey)(this.gl, attachment) : attachment;
662
+ parameters[key] = this.getAttachmentParameters(attachment, keys);
663
+ }
529
664
 
530
- return value;
531
- }
665
+ return parameters;
666
+ }
667
+ }, {
668
+ key: "_createDefaultAttachments",
669
+ value: function _createDefaultAttachments(color, depth, stencil, width, height) {
670
+ var defaultAttachments = null;
671
+
672
+ if (color) {
673
+ var _parameters;
674
+
675
+ defaultAttachments = defaultAttachments || {};
676
+ defaultAttachments[_constants.default.COLOR_ATTACHMENT0] = new _texture2d.default(this.gl, {
677
+ id: "".concat(this.id, "-color0"),
678
+ pixels: null,
679
+ format: _constants.default.RGBA,
680
+ type: _constants.default.UNSIGNED_BYTE,
681
+ width: width,
682
+ height: height,
683
+ mipmaps: false,
684
+ parameters: (_parameters = {}, (0, _defineProperty2.default)(_parameters, _constants.default.TEXTURE_MIN_FILTER, _constants.default.LINEAR), (0, _defineProperty2.default)(_parameters, _constants.default.TEXTURE_MAG_FILTER, _constants.default.LINEAR), (0, _defineProperty2.default)(_parameters, _constants.default.TEXTURE_WRAP_S, _constants.default.CLAMP_TO_EDGE), (0, _defineProperty2.default)(_parameters, _constants.default.TEXTURE_WRAP_T, _constants.default.CLAMP_TO_EDGE), _parameters)
685
+ });
686
+ this.ownResources.push(defaultAttachments[_constants.default.COLOR_ATTACHMENT0]);
687
+ }
532
688
 
533
- getAttachmentParameters(attachment = _constants.default.COLOR_ATTACHMENT0, keys, parameters = this.constructor.ATTACHMENT_PARAMETERS || []) {
534
- const values = {};
689
+ if (depth && stencil) {
690
+ defaultAttachments = defaultAttachments || {};
691
+ defaultAttachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] = new _renderbuffer.default(this.gl, {
692
+ id: "".concat(this.id, "-depth-stencil"),
693
+ format: _constants.default.DEPTH24_STENCIL8,
694
+ width: width,
695
+ height: 111
696
+ });
697
+ this.ownResources.push(defaultAttachments[_constants.default.DEPTH_STENCIL_ATTACHMENT]);
698
+ } else if (depth) {
699
+ defaultAttachments = defaultAttachments || {};
700
+ defaultAttachments[_constants.default.DEPTH_ATTACHMENT] = new _renderbuffer.default(this.gl, {
701
+ id: "".concat(this.id, "-depth"),
702
+ format: _constants.default.DEPTH_COMPONENT16,
703
+ width: width,
704
+ height: height
705
+ });
706
+ this.ownResources.push(defaultAttachments[_constants.default.DEPTH_ATTACHMENT]);
707
+ } else if (stencil) {
708
+ (0, _api.assert)(false);
709
+ }
535
710
 
536
- for (const pname of parameters) {
537
- const key = keys ? (0, _webglUtils.getKey)(this.gl, pname) : pname;
538
- values[key] = this.getAttachmentParameter(attachment, pname, keys);
711
+ return defaultAttachments;
539
712
  }
713
+ }, {
714
+ key: "_unattach",
715
+ value: function _unattach(attachment) {
716
+ var oldAttachment = this.attachments[attachment];
540
717
 
541
- return values;
542
- }
718
+ if (!oldAttachment) {
719
+ return;
720
+ }
543
721
 
544
- getParameters(keys = true) {
545
- const attachments = Object.keys(this.attachments);
546
- const parameters = {};
722
+ if (oldAttachment instanceof _renderbuffer.default) {
723
+ this.gl.framebufferRenderbuffer(_constants.default.FRAMEBUFFER, attachment, _constants.default.RENDERBUFFER, null);
724
+ } else {
725
+ this.gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, _constants.default.TEXTURE_2D, null, 0);
726
+ }
547
727
 
548
- for (const attachmentName of attachments) {
549
- const attachment = Number(attachmentName);
550
- const key = keys ? (0, _webglUtils.getKey)(this.gl, attachment) : attachment;
551
- parameters[key] = this.getAttachmentParameters(attachment, keys);
728
+ delete this.attachments[attachment];
552
729
  }
730
+ }, {
731
+ key: "_getAttachmentParameterFallback",
732
+ value: function _getAttachmentParameterFallback(pname) {
733
+ var webglDevice = _webglDevice.default.fromContext(this.gl);
553
734
 
554
- return parameters;
555
- }
735
+ var features = webglDevice.features;
556
736
 
557
- _createDefaultAttachments(color, depth, stencil, width, height) {
558
- let defaultAttachments = null;
559
-
560
- if (color) {
561
- defaultAttachments = defaultAttachments || {};
562
- defaultAttachments[_constants.default.COLOR_ATTACHMENT0] = new _texture2d.default(this.gl, {
563
- id: "".concat(this.id, "-color0"),
564
- pixels: null,
565
- format: _constants.default.RGBA,
566
- type: _constants.default.UNSIGNED_BYTE,
567
- width,
568
- height,
569
- mipmaps: false,
570
- parameters: {
571
- [_constants.default.TEXTURE_MIN_FILTER]: _constants.default.LINEAR,
572
- [_constants.default.TEXTURE_MAG_FILTER]: _constants.default.LINEAR,
573
- [_constants.default.TEXTURE_WRAP_S]: _constants.default.CLAMP_TO_EDGE,
574
- [_constants.default.TEXTURE_WRAP_T]: _constants.default.CLAMP_TO_EDGE
575
- }
576
- });
577
- this.ownResources.push(defaultAttachments[_constants.default.COLOR_ATTACHMENT0]);
578
- }
737
+ switch (pname) {
738
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:
739
+ return !features.has('webgl2') ? 0 : null;
579
740
 
580
- if (depth && stencil) {
581
- defaultAttachments = defaultAttachments || {};
582
- defaultAttachments[_constants.default.DEPTH_STENCIL_ATTACHMENT] = new _renderbuffer.default(this.gl, {
583
- id: "".concat(this.id, "-depth-stencil"),
584
- format: _constants.default.DEPTH24_STENCIL8,
585
- width,
586
- height: 111
587
- });
588
- this.ownResources.push(defaultAttachments[_constants.default.DEPTH_STENCIL_ATTACHMENT]);
589
- } else if (depth) {
590
- defaultAttachments = defaultAttachments || {};
591
- defaultAttachments[_constants.default.DEPTH_ATTACHMENT] = new _renderbuffer.default(this.gl, {
592
- id: "".concat(this.id, "-depth"),
593
- format: _constants.default.DEPTH_COMPONENT16,
594
- width,
595
- height
596
- });
597
- this.ownResources.push(defaultAttachments[_constants.default.DEPTH_ATTACHMENT]);
598
- } else if (stencil) {
599
- (0, _utils.assert)(false);
600
- }
741
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_RED_SIZE:
742
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
743
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
744
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
745
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
746
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
747
+ return !features.has('webgl2') ? 8 : null;
601
748
 
602
- return defaultAttachments;
603
- }
749
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
750
+ return !features.has('webgl2') ? _constants.default.UNSIGNED_INT : null;
604
751
 
605
- _unattach(attachment) {
606
- const oldAttachment = this.attachments[attachment];
752
+ case _constants.default.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
753
+ return !features.has('webgl2') && !features.has('webgl-color-encoding-srgb') ? _constants.default.LINEAR : null;
607
754
 
608
- if (!oldAttachment) {
609
- return;
755
+ default:
756
+ return null;
757
+ }
610
758
  }
611
-
612
- if (oldAttachment instanceof _renderbuffer.default) {
613
- this.gl.framebufferRenderbuffer(_constants.default.FRAMEBUFFER, attachment, _constants.default.RENDERBUFFER, null);
614
- } else {
615
- this.gl.framebufferTexture2D(_constants.default.FRAMEBUFFER, attachment, _constants.default.TEXTURE_2D, null, 0);
759
+ }], [{
760
+ key: "isSupported",
761
+ value: function isSupported(gl, options) {
762
+ return isFloatColorBufferSupported(gl, options);
616
763
  }
764
+ }, {
765
+ key: "getDefaultFramebuffer",
766
+ value: function getDefaultFramebuffer(gl) {
767
+ var webglDevice = _webglDevice.default.fromContext(gl);
617
768
 
618
- delete this.attachments[attachment];
619
- }
620
-
621
- _getAttachmentParameterFallback(pname) {
622
- const caps = (0, _features.getFeatures)(this.gl);
623
-
624
- switch (pname) {
625
- case _constants.default.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:
626
- return !caps.WEBGL2 ? 0 : null;
627
-
628
- case _constants.default.FRAMEBUFFER_ATTACHMENT_RED_SIZE:
629
- case _constants.default.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
630
- case _constants.default.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
631
- case _constants.default.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
632
- case _constants.default.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
633
- case _constants.default.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
634
- return !caps.WEBGL2 ? 8 : null;
635
-
636
- case _constants.default.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:
637
- return !caps.WEBGL2 ? _constants.default.UNSIGNED_INT : null;
638
-
639
- case _constants.default.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
640
- return !caps.WEBGL2 && !caps.EXT_sRGB ? _constants.default.LINEAR : null;
641
-
642
- default:
643
- return null;
769
+ webglDevice.defaultFramebuffer = webglDevice.defaultFramebuffer || new Framebuffer(gl, {
770
+ id: 'default-framebuffer',
771
+ handle: null,
772
+ attachments: {}
773
+ });
774
+ return webglDevice.defaultFramebuffer;
644
775
  }
645
- }
646
-
647
- }
776
+ }]);
777
+ return Framebuffer;
778
+ }(ImmutableFramebuffer);
648
779
 
649
780
  exports.default = Framebuffer;
650
781
  (0, _defineProperty2.default)(Framebuffer, "FRAMEBUFFER_ATTACHMENT_PARAMETERS", [_constants.default.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, _constants.default.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, _constants.default.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, _constants.default.FRAMEBUFFER_ATTACHMENT_RED_SIZE, _constants.default.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, _constants.default.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, _constants.default.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, _constants.default.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, _constants.default.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE]);
@@ -654,16 +785,14 @@ function mapIndexToCubeMapFace(layer) {
654
785
  }
655
786
 
656
787
  function _getFrameBufferStatus(status) {
657
- const STATUS = Framebuffer.STATUS || {};
788
+ var STATUS = Framebuffer.STATUS || {};
658
789
  return STATUS[status] || "Framebuffer error ".concat(status);
659
790
  }
660
791
 
661
792
  function isFloatColorBufferSupported(gl, options) {
662
- const {
663
- colorBufferFloat,
664
- colorBufferHalfFloat
665
- } = options;
666
- let supported = true;
793
+ var colorBufferFloat = options.colorBufferFloat,
794
+ colorBufferHalfFloat = options.colorBufferHalfFloat;
795
+ var supported = true;
667
796
 
668
797
  if (colorBufferFloat) {
669
798
  supported = Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('WEBGL_color_buffer_float') || gl.getExtension('OES_texture_float'));