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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/LICENSE +8 -1
  2. package/dist/_deprecated/context-api.d.ts +85 -0
  3. package/dist/_deprecated/context-api.d.ts.map +1 -0
  4. package/dist/_deprecated/context-api.js +76 -0
  5. package/dist/_deprecated/context-api.js.map +1 -0
  6. package/dist/{features/webgl-features-table.d.ts → _deprecated/features.d.ts} +4 -7
  7. package/dist/_deprecated/features.d.ts.map +1 -0
  8. package/dist/_deprecated/features.js +111 -0
  9. package/dist/_deprecated/features.js.map +1 -0
  10. package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
  11. package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/set-device-parameters.js +124 -0
  13. package/dist/adapter/converters/set-device-parameters.js.map +1 -0
  14. package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
  15. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
  17. package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
  18. package/dist/adapter/device-helpers/device-features.d.ts +12 -0
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
  20. package/dist/adapter/device-helpers/device-features.js +123 -0
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/device-limits.js +90 -0
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
  28. package/dist/adapter/device-helpers/get-device-info.js +44 -0
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  30. package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
  31. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
  32. package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  33. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  34. package/dist/adapter/webgl-device.d.ts +110 -0
  35. package/dist/adapter/webgl-device.d.ts.map +1 -0
  36. package/dist/adapter/webgl-device.js +207 -0
  37. package/dist/adapter/webgl-device.js.map +1 -0
  38. package/dist/adapter/webgl-shader.d.ts +18 -0
  39. package/dist/adapter/webgl-shader.d.ts.map +1 -0
  40. package/dist/adapter/webgl-shader.js +82 -0
  41. package/dist/adapter/webgl-shader.js.map +1 -0
  42. package/dist/classes/accessor.js +2 -2
  43. package/dist/classes/accessor.js.map +1 -1
  44. package/dist/classes/accessor.ts.disabled +1 -1
  45. package/dist/classes/clear.d.ts +3 -2
  46. package/dist/classes/clear.d.ts.map +1 -1
  47. package/dist/classes/clear.js +7 -4
  48. package/dist/classes/clear.js.map +1 -1
  49. package/dist/classes/copy-and-blit.d.ts +18 -1
  50. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  51. package/dist/classes/copy-and-blit.js +30 -25
  52. package/dist/classes/copy-and-blit.js.map +1 -1
  53. package/dist/classes/framebuffer.d.ts +10 -1
  54. package/dist/classes/framebuffer.d.ts.map +1 -1
  55. package/dist/classes/framebuffer.js +15 -15
  56. package/dist/classes/framebuffer.js.map +1 -1
  57. package/dist/classes/program-configuration.d.ts +14 -17
  58. package/dist/classes/program-configuration.d.ts.map +1 -1
  59. package/dist/classes/program-configuration.js +10 -97
  60. package/dist/classes/program-configuration.js.map +1 -1
  61. package/dist/classes/program.d.ts +25 -20
  62. package/dist/classes/program.d.ts.map +1 -1
  63. package/dist/classes/program.js +39 -28
  64. package/dist/classes/program.js.map +1 -1
  65. package/dist/classes/query.d.ts.map +1 -1
  66. package/dist/classes/query.js +6 -5
  67. package/dist/classes/query.js.map +1 -1
  68. package/dist/classes/renderbuffer-formats.js +1 -1
  69. package/dist/classes/renderbuffer-formats.js.map +1 -1
  70. package/dist/classes/renderbuffer.d.ts.map +1 -1
  71. package/dist/classes/renderbuffer.js +4 -3
  72. package/dist/classes/renderbuffer.js.map +1 -1
  73. package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -13
  74. package/dist/classes/shader.d.ts.map +1 -0
  75. package/dist/classes/{webgl-shader.js → shader.js} +7 -79
  76. package/dist/classes/shader.js.map +1 -0
  77. package/dist/classes/texture-2d.d.ts +4 -3
  78. package/dist/classes/texture-2d.d.ts.map +1 -1
  79. package/dist/classes/texture-2d.js +5 -8
  80. package/dist/classes/texture-2d.js.map +1 -1
  81. package/dist/classes/texture-3d.d.ts +3 -2
  82. package/dist/classes/texture-3d.d.ts.map +1 -1
  83. package/dist/classes/texture-3d.js +15 -6
  84. package/dist/classes/texture-3d.js.map +1 -1
  85. package/dist/classes/texture-cube.d.ts +2 -1
  86. package/dist/classes/texture-cube.d.ts.map +1 -1
  87. package/dist/classes/texture-cube.js +3 -4
  88. package/dist/classes/texture-cube.js.map +1 -1
  89. package/dist/classes/texture-formats.js +1 -1
  90. package/dist/classes/texture-formats.js.map +1 -1
  91. package/dist/classes/texture.d.ts +14 -9
  92. package/dist/classes/texture.d.ts.map +1 -1
  93. package/dist/classes/texture.js +19 -18
  94. package/dist/classes/texture.js.map +1 -1
  95. package/dist/classes/transform-feedback.d.ts.map +1 -1
  96. package/dist/classes/transform-feedback.js +5 -4
  97. package/dist/classes/transform-feedback.js.map +1 -1
  98. package/dist/classes/uniform-buffer-layout.js +1 -1
  99. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  100. package/dist/classes/uniforms.d.ts +0 -1
  101. package/dist/classes/uniforms.d.ts.map +1 -1
  102. package/dist/classes/uniforms.js +1 -2
  103. package/dist/classes/uniforms.js.map +1 -1
  104. package/dist/classes/vertex-array-object.d.ts +7 -6
  105. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  106. package/dist/classes/vertex-array-object.js +11 -12
  107. package/dist/classes/vertex-array-object.js.map +1 -1
  108. package/dist/classes/vertex-array.d.ts +14 -14
  109. package/dist/classes/vertex-array.d.ts.map +1 -1
  110. package/dist/classes/vertex-array.js +3 -4
  111. package/dist/classes/vertex-array.js.map +1 -1
  112. package/dist/classes/webgl-buffer.d.ts +2 -0
  113. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  114. package/dist/classes/webgl-buffer.js +8 -5
  115. package/dist/classes/webgl-buffer.js.map +1 -1
  116. package/dist/classes/webgl-resource.d.ts +6 -4
  117. package/dist/classes/webgl-resource.d.ts.map +1 -1
  118. package/dist/classes/webgl-resource.js +12 -8
  119. package/dist/classes/webgl-resource.js.map +1 -1
  120. package/dist/context/context/context-state.d.ts +18 -0
  121. package/dist/context/context/context-state.d.ts.map +1 -0
  122. package/dist/context/context/context-state.js +26 -0
  123. package/dist/context/context/context-state.js.map +1 -0
  124. package/dist/context/context/create-context.d.ts +40 -0
  125. package/dist/context/context/create-context.d.ts.map +1 -0
  126. package/dist/context/context/create-context.js +37 -0
  127. package/dist/context/context/create-context.js.map +1 -0
  128. package/dist/context/context/device-pixels.d.ts +25 -0
  129. package/dist/context/context/device-pixels.d.ts.map +1 -0
  130. package/dist/context/context/device-pixels.js +98 -0
  131. package/dist/context/context/device-pixels.js.map +1 -0
  132. package/dist/context/context/get-canvas.d.ts +13 -0
  133. package/dist/context/context/get-canvas.d.ts.map +1 -0
  134. package/dist/context/context/get-canvas.js +31 -0
  135. package/dist/context/context/get-canvas.js.map +1 -0
  136. package/dist/context/context/resize-context.d.ts +20 -0
  137. package/dist/context/context/resize-context.d.ts.map +1 -0
  138. package/dist/context/context/resize-context.js +15 -0
  139. package/dist/context/context/resize-context.js.map +1 -0
  140. package/dist/context/context/webgl-checks.d.ts +13 -0
  141. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  142. package/dist/context/context/webgl-checks.js +34 -0
  143. package/dist/context/context/webgl-checks.js.map +1 -0
  144. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  145. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.js +65 -0
  147. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  148. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  149. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  150. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  151. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  152. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  153. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  154. package/dist/context/parameters/webgl-parameters.js +2 -0
  155. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  156. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  157. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  158. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  159. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  160. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  161. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  162. package/dist/context/polyfill/polyfill-context.js +91 -0
  163. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  164. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  165. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  166. package/dist/context/polyfill/polyfill-table.js +160 -0
  167. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  168. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  169. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  170. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  171. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  172. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  173. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  174. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  175. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  176. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  177. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  178. package/dist/context/state-tracker/track-context-state.js +169 -0
  179. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  180. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  181. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  182. package/dist/context/state-tracker/with-parameters.js +36 -0
  183. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  184. package/dist/debug/debug-uniforms.js +1 -1
  185. package/dist/debug/debug-uniforms.js.map +1 -1
  186. package/dist/debug/debug-vertex-array.js +2 -2
  187. package/dist/debug/debug-vertex-array.js.map +1 -1
  188. package/dist/es5/_deprecated/context-api.js +116 -0
  189. package/dist/es5/_deprecated/context-api.js.map +1 -0
  190. package/dist/es5/_deprecated/features.js +118 -0
  191. package/dist/es5/_deprecated/features.js.map +1 -0
  192. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  193. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  194. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  195. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  196. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  197. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  198. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  199. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  200. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  201. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  202. package/dist/es5/adapter/device-helpers/is-old-ie.js +16 -0
  203. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  204. package/dist/es5/adapter/webgl-device.js +279 -0
  205. package/dist/es5/adapter/webgl-device.js.map +1 -0
  206. package/dist/es5/adapter/webgl-shader.js +155 -0
  207. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  208. package/dist/es5/bundle.js +1 -1
  209. package/dist/es5/bundle.js.map +1 -1
  210. package/dist/es5/classes/accessor.js +104 -74
  211. package/dist/es5/classes/accessor.js.map +1 -1
  212. package/dist/es5/classes/accessor.ts.disabled +1 -1
  213. package/dist/es5/classes/clear.js +55 -34
  214. package/dist/es5/classes/clear.js.map +1 -1
  215. package/dist/es5/classes/copy-and-blit.js +175 -156
  216. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  217. package/dist/es5/classes/framebuffer.js +647 -518
  218. package/dist/es5/classes/framebuffer.js.map +1 -1
  219. package/dist/es5/classes/program-configuration.js +78 -128
  220. package/dist/es5/classes/program-configuration.js.map +1 -1
  221. package/dist/es5/classes/program.js +379 -292
  222. package/dist/es5/classes/program.js.map +1 -1
  223. package/dist/es5/classes/query.js +172 -107
  224. package/dist/es5/classes/query.js.map +1 -1
  225. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  226. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  227. package/dist/es5/classes/renderbuffer.js +151 -98
  228. package/dist/es5/classes/renderbuffer.js.map +1 -1
  229. package/dist/es5/classes/shader.js +195 -0
  230. package/dist/es5/classes/shader.js.map +1 -0
  231. package/dist/es5/classes/texture-2d.js +44 -17
  232. package/dist/es5/classes/texture-2d.js.map +1 -1
  233. package/dist/es5/classes/texture-3d.js +107 -48
  234. package/dist/es5/classes/texture-3d.js.map +1 -1
  235. package/dist/es5/classes/texture-cube.js +169 -110
  236. package/dist/es5/classes/texture-cube.js.map +1 -1
  237. package/dist/es5/classes/texture-formats.js +42 -71
  238. package/dist/es5/classes/texture-formats.js.map +1 -1
  239. package/dist/es5/classes/texture.js +780 -665
  240. package/dist/es5/classes/texture.js.map +1 -1
  241. package/dist/es5/classes/transform-feedback.js +206 -150
  242. package/dist/es5/classes/transform-feedback.js.map +1 -1
  243. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  244. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  245. package/dist/es5/classes/uniforms.js +39 -80
  246. package/dist/es5/classes/uniforms.js.map +1 -1
  247. package/dist/es5/classes/vertex-array-object.js +268 -209
  248. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  249. package/dist/es5/classes/vertex-array.js +348 -303
  250. package/dist/es5/classes/vertex-array.js.map +1 -1
  251. package/dist/es5/classes/webgl-buffer.js +374 -303
  252. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  253. package/dist/es5/classes/webgl-resource.js +231 -161
  254. package/dist/es5/classes/webgl-resource.js.map +1 -1
  255. package/dist/es5/context/context/context-state.js +31 -0
  256. package/dist/es5/context/context/context-state.js.map +1 -0
  257. package/dist/es5/context/context/create-context.js +57 -0
  258. package/dist/es5/context/context/create-context.js.map +1 -0
  259. package/dist/es5/context/context/device-pixels.js +115 -0
  260. package/dist/es5/context/context/device-pixels.js.map +1 -0
  261. package/dist/es5/context/context/get-canvas.js +40 -0
  262. package/dist/es5/context/context/get-canvas.js.map +1 -0
  263. package/dist/es5/context/context/resize-context.js +23 -0
  264. package/dist/es5/context/context/resize-context.js.map +1 -0
  265. package/dist/es5/context/context/webgl-checks.js +54 -0
  266. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  267. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  268. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  269. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  270. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  271. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  272. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  273. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  274. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  275. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  276. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  277. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  278. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  279. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  280. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  281. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  282. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  283. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  284. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  285. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  286. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  287. package/dist/es5/debug/debug-program-configuration.js +48 -20
  288. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  289. package/dist/es5/debug/debug-uniforms.js +110 -70
  290. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  291. package/dist/es5/debug/debug-vertex-array.js +49 -54
  292. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  293. package/dist/es5/helpers/get-program-bindings.js +274 -0
  294. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  295. package/dist/es5/helpers/program-bindings.js +2 -0
  296. package/dist/es5/helpers/program-bindings.js.map +1 -0
  297. package/dist/es5/index.js +268 -192
  298. package/dist/es5/index.js.map +1 -1
  299. package/dist/es5/init.js +18 -14
  300. package/dist/es5/init.js.map +1 -1
  301. package/dist/es5/types/accessor.d.ts +29 -0
  302. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  303. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  304. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  305. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  306. package/dist/es5/webgl-utils/format-utils.js +4 -4
  307. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  308. package/dist/es5/webgl-utils/get-error.js +18 -18
  309. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  310. package/dist/es5/webgl-utils/index.js +10 -10
  311. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  312. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  313. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  314. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  316. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  317. package/dist/esm/_deprecated/context-api.js +76 -0
  318. package/dist/esm/_deprecated/context-api.js.map +1 -0
  319. package/dist/esm/_deprecated/features.js +111 -0
  320. package/dist/esm/_deprecated/features.js.map +1 -0
  321. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  322. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  323. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  324. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  325. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  326. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  327. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  328. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  329. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  330. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  331. package/dist/{features/check-old-ie.js → esm/adapter/device-helpers/is-old-ie.js} +3 -3
  332. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  333. package/dist/esm/adapter/webgl-device.js +207 -0
  334. package/dist/esm/adapter/webgl-device.js.map +1 -0
  335. package/dist/esm/adapter/webgl-shader.js +82 -0
  336. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  337. package/dist/esm/classes/accessor.js +2 -2
  338. package/dist/esm/classes/accessor.js.map +1 -1
  339. package/dist/esm/classes/accessor.ts.disabled +1 -1
  340. package/dist/esm/classes/clear.js +7 -4
  341. package/dist/esm/classes/clear.js.map +1 -1
  342. package/dist/esm/classes/copy-and-blit.js +30 -25
  343. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  344. package/dist/esm/classes/framebuffer.js +15 -15
  345. package/dist/esm/classes/framebuffer.js.map +1 -1
  346. package/dist/esm/classes/program-configuration.js +10 -97
  347. package/dist/esm/classes/program-configuration.js.map +1 -1
  348. package/dist/esm/classes/program.js +39 -28
  349. package/dist/esm/classes/program.js.map +1 -1
  350. package/dist/esm/classes/query.js +6 -5
  351. package/dist/esm/classes/query.js.map +1 -1
  352. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  353. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  354. package/dist/esm/classes/renderbuffer.js +4 -3
  355. package/dist/esm/classes/renderbuffer.js.map +1 -1
  356. package/dist/esm/classes/{webgl-shader.js → shader.js} +7 -79
  357. package/dist/esm/classes/shader.js.map +1 -0
  358. package/dist/esm/classes/texture-2d.js +5 -8
  359. package/dist/esm/classes/texture-2d.js.map +1 -1
  360. package/dist/esm/classes/texture-3d.js +15 -6
  361. package/dist/esm/classes/texture-3d.js.map +1 -1
  362. package/dist/esm/classes/texture-cube.js +3 -4
  363. package/dist/esm/classes/texture-cube.js.map +1 -1
  364. package/dist/esm/classes/texture-formats.js +1 -1
  365. package/dist/esm/classes/texture-formats.js.map +1 -1
  366. package/dist/esm/classes/texture.js +19 -18
  367. package/dist/esm/classes/texture.js.map +1 -1
  368. package/dist/esm/classes/transform-feedback.js +5 -4
  369. package/dist/esm/classes/transform-feedback.js.map +1 -1
  370. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  371. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  372. package/dist/esm/classes/uniforms.js +1 -2
  373. package/dist/esm/classes/uniforms.js.map +1 -1
  374. package/dist/esm/classes/vertex-array-object.js +11 -12
  375. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  376. package/dist/esm/classes/vertex-array.js +3 -4
  377. package/dist/esm/classes/vertex-array.js.map +1 -1
  378. package/dist/esm/classes/webgl-buffer.js +8 -5
  379. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  380. package/dist/esm/classes/webgl-resource.js +12 -8
  381. package/dist/esm/classes/webgl-resource.js.map +1 -1
  382. package/dist/esm/context/context/context-state.js +26 -0
  383. package/dist/esm/context/context/context-state.js.map +1 -0
  384. package/dist/esm/context/context/create-context.js +37 -0
  385. package/dist/esm/context/context/create-context.js.map +1 -0
  386. package/dist/esm/context/context/device-pixels.js +98 -0
  387. package/dist/esm/context/context/device-pixels.js.map +1 -0
  388. package/dist/esm/context/context/get-canvas.js +31 -0
  389. package/dist/esm/context/context/get-canvas.js.map +1 -0
  390. package/dist/esm/context/context/resize-context.js +15 -0
  391. package/dist/esm/context/context/resize-context.js.map +1 -0
  392. package/dist/esm/context/context/webgl-checks.js +34 -0
  393. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  394. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  395. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  396. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  397. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  398. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  399. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  400. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  401. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  402. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  403. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  404. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  405. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  406. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  407. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  408. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  409. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  410. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  411. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  412. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  413. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  414. package/dist/esm/debug/debug-uniforms.js +1 -1
  415. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  416. package/dist/esm/debug/debug-vertex-array.js +2 -2
  417. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  418. package/dist/esm/helpers/get-program-bindings.js +228 -0
  419. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  420. package/dist/esm/helpers/program-bindings.js +2 -0
  421. package/dist/esm/helpers/program-bindings.js.map +1 -0
  422. package/dist/esm/index.js +26 -20
  423. package/dist/esm/index.js.map +1 -1
  424. package/dist/esm/init.js +11 -8
  425. package/dist/esm/init.js.map +1 -1
  426. package/dist/esm/types/accessor.d.ts +29 -0
  427. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  428. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  429. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  430. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  431. package/dist/esm/webgl-utils/format-utils.js +1 -1
  432. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  433. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  434. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  435. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  436. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  437. package/dist/helpers/get-program-bindings.d.ts +8 -0
  438. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  439. package/dist/helpers/get-program-bindings.js +228 -0
  440. package/dist/helpers/get-program-bindings.js.map +1 -0
  441. package/dist/helpers/program-bindings.d.ts +41 -0
  442. package/dist/helpers/program-bindings.d.ts.map +1 -0
  443. package/dist/helpers/program-bindings.js +2 -0
  444. package/dist/helpers/program-bindings.js.map +1 -0
  445. package/dist/index.d.ts +41 -20
  446. package/dist/index.d.ts.map +1 -1
  447. package/dist/index.js +26 -20
  448. package/dist/index.js.map +1 -1
  449. package/dist/init.d.ts.map +1 -1
  450. package/dist/init.js +11 -8
  451. package/dist/init.js.map +1 -1
  452. package/dist/types/accessor.d.ts +29 -0
  453. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  454. package/dist/webgl-utils/attribute-utils.js +1 -1
  455. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  456. package/dist/webgl-utils/constants-to-keys.js +1 -1
  457. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  458. package/dist/webgl-utils/format-utils.d.ts +2 -2
  459. package/dist/webgl-utils/format-utils.js +1 -1
  460. package/dist/webgl-utils/format-utils.js.map +1 -1
  461. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  462. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  463. package/dist/webgl-utils/texture-utils.js +2 -2
  464. package/dist/webgl-utils/texture-utils.js.map +1 -1
  465. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  466. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  467. package/dist/webgl-utils/typed-array-utils.js +22 -18
  468. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  469. package/package.json +5 -6
  470. package/src/.DS_Store +0 -0
  471. package/src/_deprecated/context-api.ts +146 -0
  472. package/src/_deprecated/features.ts +159 -0
  473. package/src/adapter/converters/set-device-parameters.ts +182 -0
  474. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  475. package/src/adapter/device-helpers/device-features.ts +227 -0
  476. package/src/adapter/device-helpers/device-limits.ts +150 -0
  477. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  478. package/src/{features/check-old-ie.ts → adapter/device-helpers/is-old-ie.ts} +3 -3
  479. package/src/adapter/webgl-device.ts +399 -0
  480. package/src/adapter/webgl-shader.ts +84 -0
  481. package/src/classes/accessor.js +2 -2
  482. package/src/classes/accessor.ts.disabled +1 -1
  483. package/src/classes/clear.ts +9 -4
  484. package/src/classes/copy-and-blit.ts +49 -52
  485. package/src/classes/framebuffer.ts +38 -35
  486. package/src/classes/program-configuration.ts +28 -81
  487. package/src/classes/program.ts +89 -75
  488. package/src/classes/query.ts +6 -6
  489. package/src/classes/renderbuffer-formats.ts +1 -1
  490. package/src/classes/renderbuffer.ts +5 -4
  491. package/src/classes/{webgl-shader.ts → shader.ts} +7 -78
  492. package/src/classes/texture-2d.ts +6 -11
  493. package/src/classes/texture-3d.ts +16 -11
  494. package/src/classes/texture-cube.ts +7 -7
  495. package/src/classes/texture-formats.ts +1 -1
  496. package/src/classes/texture.ts +39 -40
  497. package/src/classes/transform-feedback.ts +14 -13
  498. package/src/classes/uniform-buffer-layout.ts +1 -1
  499. package/src/classes/uniforms.ts +4 -10
  500. package/src/classes/vertex-array-object.ts +17 -20
  501. package/src/classes/vertex-array.ts +16 -11
  502. package/src/classes/webgl-buffer.ts +7 -5
  503. package/src/classes/webgl-resource.ts +20 -18
  504. package/src/context/context/context-state.ts +39 -0
  505. package/src/context/context/create-context.ts +83 -0
  506. package/src/context/context/device-pixels.ts +147 -0
  507. package/src/context/context/get-canvas.ts +37 -0
  508. package/src/context/context/resize-context.ts +37 -0
  509. package/src/context/context/webgl-checks.ts +49 -0
  510. package/src/context/parameters/unified-parameter-api.ts +128 -0
  511. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  512. package/src/context/parameters/webgl-parameters.ts +197 -0
  513. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  514. package/src/context/polyfill/polyfill-context.ts +98 -0
  515. package/src/context/polyfill/polyfill-table.ts +162 -0
  516. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  517. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  518. package/src/context/state-tracker/track-context-state.ts +250 -0
  519. package/src/context/state-tracker/with-parameters.ts +50 -0
  520. package/src/debug/debug-uniforms.ts +1 -1
  521. package/src/debug/debug-vertex-array.ts +2 -4
  522. package/src/helpers/get-program-bindings.ts +244 -0
  523. package/src/helpers/program-bindings.ts +46 -0
  524. package/src/index.ts +94 -23
  525. package/src/init.ts +12 -9
  526. package/src/types/accessor.d.ts +29 -0
  527. package/src/types.ts +1 -1
  528. package/src/webgl-utils/attribute-utils.ts +1 -1
  529. package/src/webgl-utils/constants-to-keys.ts +1 -1
  530. package/src/webgl-utils/format-utils.ts +1 -1
  531. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  532. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  533. package/dist/classes/webgl-shader.d.ts.map +0 -1
  534. package/dist/classes/webgl-shader.js.map +0 -1
  535. package/dist/context/gl-context.d.ts +0 -15
  536. package/dist/context/gl-context.d.ts.map +0 -1
  537. package/dist/context/gl-context.js +0 -32
  538. package/dist/context/gl-context.js.map +0 -1
  539. package/dist/context/luma-context-data.d.ts +0 -31
  540. package/dist/context/luma-context-data.d.ts.map +0 -1
  541. package/dist/context/luma-context-data.js +0 -5
  542. package/dist/context/luma-context-data.js.map +0 -1
  543. package/dist/es5/classes/webgl-shader.js +0 -213
  544. package/dist/es5/classes/webgl-shader.js.map +0 -1
  545. package/dist/es5/context/gl-context.js +0 -46
  546. package/dist/es5/context/gl-context.js.map +0 -1
  547. package/dist/es5/context/luma-context-data.js +0 -12
  548. package/dist/es5/context/luma-context-data.js.map +0 -1
  549. package/dist/es5/features/check-glsl-extension.js +0 -40
  550. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  551. package/dist/es5/features/check-old-ie.js +0 -15
  552. package/dist/es5/features/check-old-ie.js.map +0 -1
  553. package/dist/es5/features/features.js +0 -85
  554. package/dist/es5/features/features.js.map +0 -1
  555. package/dist/es5/features/index.js +0 -64
  556. package/dist/es5/features/index.js.map +0 -1
  557. package/dist/es5/features/limits.js +0 -72
  558. package/dist/es5/features/limits.js.map +0 -1
  559. package/dist/es5/features/webgl-features-table.js +0 -84
  560. package/dist/es5/features/webgl-features-table.js.map +0 -1
  561. package/dist/es5/features/webgl-limits-table.js +0 -172
  562. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  563. package/dist/es5/utils/array-utils-flat.js +0 -50
  564. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  565. package/dist/es5/utils/assert.js +0 -13
  566. package/dist/es5/utils/assert.js.map +0 -1
  567. package/dist/es5/utils/check-props.js +0 -50
  568. package/dist/es5/utils/check-props.js.map +0 -1
  569. package/dist/es5/utils/format-value.js +0 -57
  570. package/dist/es5/utils/format-value.js.map +0 -1
  571. package/dist/es5/utils/index.js +0 -68
  572. package/dist/es5/utils/index.js.map +0 -1
  573. package/dist/es5/utils/is-old-ie.js +0 -13
  574. package/dist/es5/utils/is-old-ie.js.map +0 -1
  575. package/dist/es5/utils/load-file.js +0 -43
  576. package/dist/es5/utils/load-file.js.map +0 -1
  577. package/dist/es5/utils/stub-methods.js +0 -25
  578. package/dist/es5/utils/stub-methods.js.map +0 -1
  579. package/dist/es5/utils/utils.js +0 -31
  580. package/dist/es5/utils/utils.js.map +0 -1
  581. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  582. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  583. package/dist/esm/classes/webgl-shader.js.map +0 -1
  584. package/dist/esm/context/gl-context.js +0 -32
  585. package/dist/esm/context/gl-context.js.map +0 -1
  586. package/dist/esm/context/luma-context-data.js +0 -5
  587. package/dist/esm/context/luma-context-data.js.map +0 -1
  588. package/dist/esm/features/check-glsl-extension.js +0 -27
  589. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  590. package/dist/esm/features/check-old-ie.js.map +0 -1
  591. package/dist/esm/features/features.js +0 -67
  592. package/dist/esm/features/features.js.map +0 -1
  593. package/dist/esm/features/index.js +0 -5
  594. package/dist/esm/features/index.js.map +0 -1
  595. package/dist/esm/features/limits.js +0 -55
  596. package/dist/esm/features/limits.js.map +0 -1
  597. package/dist/esm/features/webgl-features-table.js +0 -71
  598. package/dist/esm/features/webgl-features-table.js.map +0 -1
  599. package/dist/esm/features/webgl-limits-table.js +0 -161
  600. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  601. package/dist/esm/utils/array-utils-flat.js +0 -39
  602. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  603. package/dist/esm/utils/assert.js +0 -6
  604. package/dist/esm/utils/assert.js.map +0 -1
  605. package/dist/esm/utils/check-props.js +0 -38
  606. package/dist/esm/utils/check-props.js.map +0 -1
  607. package/dist/esm/utils/format-value.js +0 -50
  608. package/dist/esm/utils/format-value.js.map +0 -1
  609. package/dist/esm/utils/index.js +0 -7
  610. package/dist/esm/utils/index.js.map +0 -1
  611. package/dist/esm/utils/is-old-ie.js +0 -5
  612. package/dist/esm/utils/is-old-ie.js.map +0 -1
  613. package/dist/esm/utils/load-file.js +0 -30
  614. package/dist/esm/utils/load-file.js.map +0 -1
  615. package/dist/esm/utils/stub-methods.js +0 -16
  616. package/dist/esm/utils/stub-methods.js.map +0 -1
  617. package/dist/esm/utils/utils.js +0 -20
  618. package/dist/esm/utils/utils.js.map +0 -1
  619. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  620. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  621. package/dist/features/check-glsl-extension.d.ts +0 -2
  622. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  623. package/dist/features/check-glsl-extension.js +0 -27
  624. package/dist/features/check-glsl-extension.js.map +0 -1
  625. package/dist/features/check-old-ie.d.ts +0 -2
  626. package/dist/features/check-old-ie.d.ts.map +0 -1
  627. package/dist/features/check-old-ie.js.map +0 -1
  628. package/dist/features/features.d.ts +0 -6
  629. package/dist/features/features.d.ts.map +0 -1
  630. package/dist/features/features.js +0 -67
  631. package/dist/features/features.js.map +0 -1
  632. package/dist/features/index.d.ts +0 -5
  633. package/dist/features/index.d.ts.map +0 -1
  634. package/dist/features/index.js +0 -5
  635. package/dist/features/index.js.map +0 -1
  636. package/dist/features/limits.d.ts +0 -28
  637. package/dist/features/limits.d.ts.map +0 -1
  638. package/dist/features/limits.js +0 -55
  639. package/dist/features/limits.js.map +0 -1
  640. package/dist/features/webgl-features-table.d.ts.map +0 -1
  641. package/dist/features/webgl-features-table.js +0 -71
  642. package/dist/features/webgl-features-table.js.map +0 -1
  643. package/dist/features/webgl-limits-table.d.ts +0 -161
  644. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  645. package/dist/features/webgl-limits-table.js +0 -161
  646. package/dist/features/webgl-limits-table.js.map +0 -1
  647. package/dist/utils/array-utils-flat.d.ts +0 -9
  648. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  649. package/dist/utils/array-utils-flat.js +0 -39
  650. package/dist/utils/array-utils-flat.js.map +0 -1
  651. package/dist/utils/assert.d.ts +0 -2
  652. package/dist/utils/assert.d.ts.map +0 -1
  653. package/dist/utils/assert.js +0 -6
  654. package/dist/utils/assert.js.map +0 -1
  655. package/dist/utils/check-props.d.ts +0 -2
  656. package/dist/utils/check-props.d.ts.map +0 -1
  657. package/dist/utils/check-props.js +0 -38
  658. package/dist/utils/check-props.js.map +0 -1
  659. package/dist/utils/format-value.d.ts +0 -5
  660. package/dist/utils/format-value.d.ts.map +0 -1
  661. package/dist/utils/format-value.js +0 -50
  662. package/dist/utils/format-value.js.map +0 -1
  663. package/dist/utils/index.d.ts +0 -7
  664. package/dist/utils/index.d.ts.map +0 -1
  665. package/dist/utils/index.js +0 -7
  666. package/dist/utils/index.js.map +0 -1
  667. package/dist/utils/is-old-ie.d.ts +0 -4
  668. package/dist/utils/is-old-ie.d.ts.map +0 -1
  669. package/dist/utils/is-old-ie.js +0 -5
  670. package/dist/utils/is-old-ie.js.map +0 -1
  671. package/dist/utils/load-file.d.ts +0 -4
  672. package/dist/utils/load-file.d.ts.map +0 -1
  673. package/dist/utils/load-file.js +0 -30
  674. package/dist/utils/load-file.js.map +0 -1
  675. package/dist/utils/stub-methods.d.ts +0 -2
  676. package/dist/utils/stub-methods.d.ts.map +0 -1
  677. package/dist/utils/stub-methods.js +0 -16
  678. package/dist/utils/stub-methods.js.map +0 -1
  679. package/dist/utils/utils.d.ts +0 -15
  680. package/dist/utils/utils.d.ts.map +0 -1
  681. package/dist/utils/utils.js +0 -20
  682. package/dist/utils/utils.js.map +0 -1
  683. package/src/context/gl-context.ts +0 -31
  684. package/src/context/luma-context-data.ts +0 -27
  685. package/src/features/check-glsl-extension.ts +0 -34
  686. package/src/features/features.ts +0 -80
  687. package/src/features/index.ts +0 -5
  688. package/src/features/limits.ts +0 -66
  689. package/src/features/webgl-features-table.ts +0 -104
  690. package/src/features/webgl-limits-table.ts +0 -51
  691. package/src/utils/array-utils-flat.ts +0 -56
  692. package/src/utils/assert.ts +0 -7
  693. package/src/utils/check-props.ts +0 -68
  694. package/src/utils/format-value.ts +0 -37
  695. package/src/utils/index.ts +0 -6
  696. package/src/utils/is-old-ie.ts +0 -6
  697. package/src/utils/load-file.ts +0 -40
  698. package/src/utils/stub-methods.ts +0 -20
  699. package/src/utils/utils.ts +0 -35
  700. package/src/webgl-utils/texture-utils.d.ts +0 -11
  701. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -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("../adapter/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'));