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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (651) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/classes/accessor.js +2 -2
  6. package/dist/classes/accessor.js.map +1 -1
  7. package/dist/classes/accessor.ts.disabled +1 -1
  8. package/dist/classes/clear.d.ts +3 -2
  9. package/dist/classes/clear.d.ts.map +1 -1
  10. package/dist/classes/clear.js +7 -4
  11. package/dist/classes/clear.js.map +1 -1
  12. package/dist/classes/copy-and-blit.d.ts +18 -1
  13. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  14. package/dist/classes/copy-and-blit.js +30 -25
  15. package/dist/classes/copy-and-blit.js.map +1 -1
  16. package/dist/classes/framebuffer.d.ts +10 -1
  17. package/dist/classes/framebuffer.d.ts.map +1 -1
  18. package/dist/classes/framebuffer.js +15 -15
  19. package/dist/classes/framebuffer.js.map +1 -1
  20. package/dist/classes/program-configuration.d.ts +2 -2
  21. package/dist/classes/program-configuration.d.ts.map +1 -1
  22. package/dist/classes/program-configuration.js +1 -1
  23. package/dist/classes/program-configuration.js.map +1 -1
  24. package/dist/classes/program.d.ts +6 -6
  25. package/dist/classes/program.d.ts.map +1 -1
  26. package/dist/classes/program.js +11 -9
  27. package/dist/classes/program.js.map +1 -1
  28. package/dist/classes/query.d.ts.map +1 -1
  29. package/dist/classes/query.js +6 -5
  30. package/dist/classes/query.js.map +1 -1
  31. package/dist/classes/renderbuffer-formats.js +1 -1
  32. package/dist/classes/renderbuffer-formats.js.map +1 -1
  33. package/dist/classes/renderbuffer.d.ts.map +1 -1
  34. package/dist/classes/renderbuffer.js +4 -3
  35. package/dist/classes/renderbuffer.js.map +1 -1
  36. package/dist/classes/texture-2d.d.ts +4 -3
  37. package/dist/classes/texture-2d.d.ts.map +1 -1
  38. package/dist/classes/texture-2d.js +5 -8
  39. package/dist/classes/texture-2d.js.map +1 -1
  40. package/dist/classes/texture-3d.d.ts +3 -2
  41. package/dist/classes/texture-3d.d.ts.map +1 -1
  42. package/dist/classes/texture-3d.js +15 -6
  43. package/dist/classes/texture-3d.js.map +1 -1
  44. package/dist/classes/texture-cube.d.ts +2 -1
  45. package/dist/classes/texture-cube.d.ts.map +1 -1
  46. package/dist/classes/texture-cube.js +3 -4
  47. package/dist/classes/texture-cube.js.map +1 -1
  48. package/dist/classes/texture-formats.js +1 -1
  49. package/dist/classes/texture-formats.js.map +1 -1
  50. package/dist/classes/texture.d.ts +14 -9
  51. package/dist/classes/texture.d.ts.map +1 -1
  52. package/dist/classes/texture.js +19 -18
  53. package/dist/classes/texture.js.map +1 -1
  54. package/dist/classes/transform-feedback.d.ts.map +1 -1
  55. package/dist/classes/transform-feedback.js +5 -4
  56. package/dist/classes/transform-feedback.js.map +1 -1
  57. package/dist/classes/uniform-buffer-layout.js +1 -1
  58. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  59. package/dist/classes/uniforms.d.ts +0 -1
  60. package/dist/classes/uniforms.d.ts.map +1 -1
  61. package/dist/classes/uniforms.js +1 -2
  62. package/dist/classes/uniforms.js.map +1 -1
  63. package/dist/classes/vertex-array-object.d.ts +1 -1
  64. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  65. package/dist/classes/vertex-array-object.js +8 -9
  66. package/dist/classes/vertex-array-object.js.map +1 -1
  67. package/dist/classes/vertex-array.d.ts +1 -1
  68. package/dist/classes/vertex-array.d.ts.map +1 -1
  69. package/dist/classes/vertex-array.js +1 -2
  70. package/dist/classes/vertex-array.js.map +1 -1
  71. package/dist/classes/webgl-buffer.d.ts +2 -0
  72. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  73. package/dist/classes/webgl-buffer.js +8 -5
  74. package/dist/classes/webgl-buffer.js.map +1 -1
  75. package/dist/classes/webgl-resource.d.ts +6 -4
  76. package/dist/classes/webgl-resource.d.ts.map +1 -1
  77. package/dist/classes/webgl-resource.js +12 -8
  78. package/dist/classes/webgl-resource.js.map +1 -1
  79. package/dist/classes/webgl-shader.d.ts +3 -1
  80. package/dist/classes/webgl-shader.d.ts.map +1 -1
  81. package/dist/classes/webgl-shader.js +7 -4
  82. package/dist/classes/webgl-shader.js.map +1 -1
  83. package/dist/context/context/context-state.d.ts +18 -0
  84. package/dist/context/context/context-state.d.ts.map +1 -0
  85. package/dist/context/context/context-state.js +26 -0
  86. package/dist/context/context/context-state.js.map +1 -0
  87. package/dist/context/context/create-context.d.ts +40 -0
  88. package/dist/context/context/create-context.d.ts.map +1 -0
  89. package/dist/context/context/create-context.js +37 -0
  90. package/dist/context/context/create-context.js.map +1 -0
  91. package/dist/context/context/device-pixels.d.ts +25 -0
  92. package/dist/context/context/device-pixels.d.ts.map +1 -0
  93. package/dist/context/context/device-pixels.js +98 -0
  94. package/dist/context/context/device-pixels.js.map +1 -0
  95. package/dist/context/context/get-canvas.d.ts +13 -0
  96. package/dist/context/context/get-canvas.d.ts.map +1 -0
  97. package/dist/context/context/get-canvas.js +31 -0
  98. package/dist/context/context/get-canvas.js.map +1 -0
  99. package/dist/context/context/resize-context.d.ts +20 -0
  100. package/dist/context/context/resize-context.d.ts.map +1 -0
  101. package/dist/context/context/resize-context.js +15 -0
  102. package/dist/context/context/resize-context.js.map +1 -0
  103. package/dist/context/context/webgl-checks.d.ts +13 -0
  104. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  105. package/dist/context/context/webgl-checks.js +34 -0
  106. package/dist/context/context/webgl-checks.js.map +1 -0
  107. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  109. package/dist/context/parameters/unified-parameter-api.js +65 -0
  110. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  113. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  114. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  116. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  117. package/dist/context/parameters/webgl-parameters.js +2 -0
  118. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  119. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  120. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  121. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  122. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  123. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  124. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  125. package/dist/context/polyfill/polyfill-context.js +91 -0
  126. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  127. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  128. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  129. package/dist/context/polyfill/polyfill-table.js +160 -0
  130. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  132. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  133. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  135. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  136. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  141. package/dist/context/state-tracker/track-context-state.js +169 -0
  142. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  143. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  144. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  145. package/dist/context/state-tracker/with-parameters.js +36 -0
  146. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  147. package/dist/debug/debug-uniforms.js +1 -1
  148. package/dist/debug/debug-uniforms.js.map +1 -1
  149. package/dist/debug/debug-vertex-array.js +2 -2
  150. package/dist/debug/debug-vertex-array.js.map +1 -1
  151. package/dist/device/check-glsl-extension.d.ts +4 -0
  152. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  153. package/dist/device/check-glsl-extension.js +22 -0
  154. package/dist/device/check-glsl-extension.js.map +1 -0
  155. package/dist/device/device-features.d.ts +12 -0
  156. package/dist/device/device-features.d.ts.map +1 -0
  157. package/dist/device/device-features.js +123 -0
  158. package/dist/device/device-features.js.map +1 -0
  159. package/dist/device/device-limits.d.ts +51 -0
  160. package/dist/device/device-limits.d.ts.map +1 -0
  161. package/dist/device/device-limits.js +90 -0
  162. package/dist/device/device-limits.js.map +1 -0
  163. package/dist/device/get-device-info.d.ts +4 -0
  164. package/dist/device/get-device-info.d.ts.map +1 -0
  165. package/dist/device/get-device-info.js +44 -0
  166. package/dist/device/get-device-info.js.map +1 -0
  167. package/dist/device/webgl-device.d.ts +111 -0
  168. package/dist/device/webgl-device.d.ts.map +1 -0
  169. package/dist/device/webgl-device.js +208 -0
  170. package/dist/device/webgl-device.js.map +1 -0
  171. package/dist/es5/api/device2.js +42 -0
  172. package/dist/es5/api/device2.js.map +1 -0
  173. package/dist/es5/bundle.js +1 -1
  174. package/dist/es5/bundle.js.map +1 -1
  175. package/dist/es5/classes/accessor.js +104 -74
  176. package/dist/es5/classes/accessor.js.map +1 -1
  177. package/dist/es5/classes/accessor.ts.disabled +1 -1
  178. package/dist/es5/classes/clear.js +55 -34
  179. package/dist/es5/classes/clear.js.map +1 -1
  180. package/dist/es5/classes/copy-and-blit.js +175 -156
  181. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  182. package/dist/es5/classes/framebuffer.js +647 -518
  183. package/dist/es5/classes/framebuffer.js.map +1 -1
  184. package/dist/es5/classes/program-configuration.js +138 -121
  185. package/dist/es5/classes/program-configuration.js.map +1 -1
  186. package/dist/es5/classes/program.js +368 -292
  187. package/dist/es5/classes/program.js.map +1 -1
  188. package/dist/es5/classes/query.js +172 -107
  189. package/dist/es5/classes/query.js.map +1 -1
  190. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  191. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  192. package/dist/es5/classes/renderbuffer.js +151 -98
  193. package/dist/es5/classes/renderbuffer.js.map +1 -1
  194. package/dist/es5/classes/texture-2d.js +44 -17
  195. package/dist/es5/classes/texture-2d.js.map +1 -1
  196. package/dist/es5/classes/texture-3d.js +107 -48
  197. package/dist/es5/classes/texture-3d.js.map +1 -1
  198. package/dist/es5/classes/texture-cube.js +169 -110
  199. package/dist/es5/classes/texture-cube.js.map +1 -1
  200. package/dist/es5/classes/texture-formats.js +42 -71
  201. package/dist/es5/classes/texture-formats.js.map +1 -1
  202. package/dist/es5/classes/texture.js +780 -665
  203. package/dist/es5/classes/texture.js.map +1 -1
  204. package/dist/es5/classes/transform-feedback.js +206 -150
  205. package/dist/es5/classes/transform-feedback.js.map +1 -1
  206. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  207. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  208. package/dist/es5/classes/uniforms.js +39 -80
  209. package/dist/es5/classes/uniforms.js.map +1 -1
  210. package/dist/es5/classes/vertex-array-object.js +268 -209
  211. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  212. package/dist/es5/classes/vertex-array.js +348 -303
  213. package/dist/es5/classes/vertex-array.js.map +1 -1
  214. package/dist/es5/classes/webgl-buffer.js +374 -303
  215. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  216. package/dist/es5/classes/webgl-resource.js +231 -161
  217. package/dist/es5/classes/webgl-resource.js.map +1 -1
  218. package/dist/es5/classes/webgl-shader.js +230 -134
  219. package/dist/es5/classes/webgl-shader.js.map +1 -1
  220. package/dist/es5/context/context/context-state.js +31 -0
  221. package/dist/es5/context/context/context-state.js.map +1 -0
  222. package/dist/es5/context/context/create-context.js +57 -0
  223. package/dist/es5/context/context/create-context.js.map +1 -0
  224. package/dist/es5/context/context/device-pixels.js +115 -0
  225. package/dist/es5/context/context/device-pixels.js.map +1 -0
  226. package/dist/es5/context/context/get-canvas.js +40 -0
  227. package/dist/es5/context/context/get-canvas.js.map +1 -0
  228. package/dist/es5/context/context/resize-context.js +23 -0
  229. package/dist/es5/context/context/resize-context.js.map +1 -0
  230. package/dist/es5/context/context/webgl-checks.js +54 -0
  231. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  232. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  233. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  234. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  235. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  236. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  237. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  238. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  239. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  240. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  241. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  242. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  243. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  244. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  245. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  246. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  247. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  248. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  249. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  250. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  251. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  252. package/dist/es5/debug/debug-program-configuration.js +48 -20
  253. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  254. package/dist/es5/debug/debug-uniforms.js +110 -70
  255. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  256. package/dist/es5/debug/debug-vertex-array.js +49 -54
  257. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  258. package/dist/es5/device/check-glsl-extension.js +33 -0
  259. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  260. package/dist/es5/device/device-features.js +152 -0
  261. package/dist/es5/device/device-features.js.map +1 -0
  262. package/dist/es5/device/device-limits.js +64 -0
  263. package/dist/es5/device/device-limits.js.map +1 -0
  264. package/dist/es5/device/get-device-info.js +55 -0
  265. package/dist/es5/device/get-device-info.js.map +1 -0
  266. package/dist/es5/device/webgl-device.js +279 -0
  267. package/dist/es5/device/webgl-device.js.map +1 -0
  268. package/dist/es5/index.js +179 -189
  269. package/dist/es5/index.js.map +1 -1
  270. package/dist/es5/init.js +18 -14
  271. package/dist/es5/init.js.map +1 -1
  272. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  273. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  274. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  275. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  276. package/dist/es5/webgl-utils/format-utils.js +4 -4
  277. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  278. package/dist/es5/webgl-utils/get-error.js +18 -18
  279. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  280. package/dist/es5/webgl-utils/index.js +10 -10
  281. package/dist/es5/webgl-utils/is-old-ie.js +16 -0
  282. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  283. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  284. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  285. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  286. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  287. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  288. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  289. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  290. package/dist/esm/api/device2.js +23 -0
  291. package/dist/esm/api/device2.js.map +1 -0
  292. package/dist/esm/classes/accessor.js +2 -2
  293. package/dist/esm/classes/accessor.js.map +1 -1
  294. package/dist/esm/classes/accessor.ts.disabled +1 -1
  295. package/dist/esm/classes/clear.js +7 -4
  296. package/dist/esm/classes/clear.js.map +1 -1
  297. package/dist/esm/classes/copy-and-blit.js +30 -25
  298. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  299. package/dist/esm/classes/framebuffer.js +15 -15
  300. package/dist/esm/classes/framebuffer.js.map +1 -1
  301. package/dist/esm/classes/program-configuration.js +1 -1
  302. package/dist/esm/classes/program-configuration.js.map +1 -1
  303. package/dist/esm/classes/program.js +11 -9
  304. package/dist/esm/classes/program.js.map +1 -1
  305. package/dist/esm/classes/query.js +6 -5
  306. package/dist/esm/classes/query.js.map +1 -1
  307. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  308. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  309. package/dist/esm/classes/renderbuffer.js +4 -3
  310. package/dist/esm/classes/renderbuffer.js.map +1 -1
  311. package/dist/esm/classes/texture-2d.js +5 -8
  312. package/dist/esm/classes/texture-2d.js.map +1 -1
  313. package/dist/esm/classes/texture-3d.js +15 -6
  314. package/dist/esm/classes/texture-3d.js.map +1 -1
  315. package/dist/esm/classes/texture-cube.js +3 -4
  316. package/dist/esm/classes/texture-cube.js.map +1 -1
  317. package/dist/esm/classes/texture-formats.js +1 -1
  318. package/dist/esm/classes/texture-formats.js.map +1 -1
  319. package/dist/esm/classes/texture.js +19 -18
  320. package/dist/esm/classes/texture.js.map +1 -1
  321. package/dist/esm/classes/transform-feedback.js +5 -4
  322. package/dist/esm/classes/transform-feedback.js.map +1 -1
  323. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  324. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  325. package/dist/esm/classes/uniforms.js +1 -2
  326. package/dist/esm/classes/uniforms.js.map +1 -1
  327. package/dist/esm/classes/vertex-array-object.js +8 -9
  328. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  329. package/dist/esm/classes/vertex-array.js +1 -2
  330. package/dist/esm/classes/vertex-array.js.map +1 -1
  331. package/dist/esm/classes/webgl-buffer.js +8 -5
  332. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  333. package/dist/esm/classes/webgl-resource.js +12 -8
  334. package/dist/esm/classes/webgl-resource.js.map +1 -1
  335. package/dist/esm/classes/webgl-shader.js +7 -4
  336. package/dist/esm/classes/webgl-shader.js.map +1 -1
  337. package/dist/esm/context/context/context-state.js +26 -0
  338. package/dist/esm/context/context/context-state.js.map +1 -0
  339. package/dist/esm/context/context/create-context.js +37 -0
  340. package/dist/esm/context/context/create-context.js.map +1 -0
  341. package/dist/esm/context/context/device-pixels.js +98 -0
  342. package/dist/esm/context/context/device-pixels.js.map +1 -0
  343. package/dist/esm/context/context/get-canvas.js +31 -0
  344. package/dist/esm/context/context/get-canvas.js.map +1 -0
  345. package/dist/esm/context/context/resize-context.js +15 -0
  346. package/dist/esm/context/context/resize-context.js.map +1 -0
  347. package/dist/esm/context/context/webgl-checks.js +34 -0
  348. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  349. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  350. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  351. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  352. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  353. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  354. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  355. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  356. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  357. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  358. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  359. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  360. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  361. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  362. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  363. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  364. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  365. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  366. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  367. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  368. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  369. package/dist/esm/debug/debug-uniforms.js +1 -1
  370. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  371. package/dist/esm/debug/debug-vertex-array.js +2 -2
  372. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  373. package/dist/esm/device/check-glsl-extension.js +22 -0
  374. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  375. package/dist/esm/device/device-features.js +123 -0
  376. package/dist/esm/device/device-features.js.map +1 -0
  377. package/dist/esm/device/device-limits.js +90 -0
  378. package/dist/esm/device/device-limits.js.map +1 -0
  379. package/dist/esm/device/get-device-info.js +44 -0
  380. package/dist/esm/device/get-device-info.js.map +1 -0
  381. package/dist/esm/device/webgl-device.js +208 -0
  382. package/dist/esm/device/webgl-device.js.map +1 -0
  383. package/dist/esm/index.js +22 -20
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/init.js +11 -8
  386. package/dist/esm/init.js.map +1 -1
  387. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  388. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  389. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  390. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  391. package/dist/esm/webgl-utils/format-utils.js +1 -1
  392. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  393. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  394. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  395. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  396. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  397. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  398. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  399. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  400. package/dist/index.d.ts +36 -20
  401. package/dist/index.d.ts.map +1 -1
  402. package/dist/index.js +22 -20
  403. package/dist/index.js.map +1 -1
  404. package/dist/init.d.ts.map +1 -1
  405. package/dist/init.js +11 -8
  406. package/dist/init.js.map +1 -1
  407. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  408. package/dist/webgl-utils/attribute-utils.js +1 -1
  409. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  410. package/dist/webgl-utils/constants-to-keys.js +1 -1
  411. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  412. package/dist/webgl-utils/format-utils.d.ts +2 -2
  413. package/dist/webgl-utils/format-utils.js +1 -1
  414. package/dist/webgl-utils/format-utils.js.map +1 -1
  415. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  416. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  417. package/dist/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  418. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  419. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  420. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  421. package/dist/webgl-utils/texture-utils.js +2 -2
  422. package/dist/webgl-utils/texture-utils.js.map +1 -1
  423. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  424. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  425. package/dist/webgl-utils/typed-array-utils.js +22 -18
  426. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  427. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  428. package/package.json +5 -6
  429. package/src/.DS_Store +0 -0
  430. package/src/api/device2.ts +71 -0
  431. package/src/classes/accessor.js +2 -2
  432. package/src/classes/accessor.ts.disabled +1 -1
  433. package/src/classes/clear.ts +9 -4
  434. package/src/classes/copy-and-blit.ts +49 -52
  435. package/src/classes/framebuffer.ts +38 -35
  436. package/src/classes/program-configuration.ts +6 -6
  437. package/src/classes/program.ts +21 -15
  438. package/src/classes/query.ts +6 -6
  439. package/src/classes/renderbuffer-formats.ts +1 -1
  440. package/src/classes/renderbuffer.ts +5 -4
  441. package/src/classes/texture-2d.ts +6 -11
  442. package/src/classes/texture-3d.ts +16 -11
  443. package/src/classes/texture-cube.ts +7 -7
  444. package/src/classes/texture-formats.ts +1 -1
  445. package/src/classes/texture.ts +39 -40
  446. package/src/classes/transform-feedback.ts +14 -13
  447. package/src/classes/uniform-buffer-layout.ts +1 -1
  448. package/src/classes/uniforms.ts +4 -10
  449. package/src/classes/vertex-array-object.ts +10 -14
  450. package/src/classes/vertex-array.ts +2 -3
  451. package/src/classes/webgl-buffer.ts +7 -5
  452. package/src/classes/webgl-resource.ts +20 -18
  453. package/src/classes/webgl-shader.ts +6 -4
  454. package/src/context/context/context-state.ts +39 -0
  455. package/src/context/context/create-context.ts +83 -0
  456. package/src/context/context/device-pixels.ts +147 -0
  457. package/src/context/context/get-canvas.ts +37 -0
  458. package/src/context/context/resize-context.ts +37 -0
  459. package/src/context/context/webgl-checks.ts +49 -0
  460. package/src/context/parameters/unified-parameter-api.ts +127 -0
  461. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  462. package/src/context/parameters/webgl-parameters.ts +197 -0
  463. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  464. package/src/context/polyfill/polyfill-context.ts +98 -0
  465. package/src/context/polyfill/polyfill-table.ts +162 -0
  466. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  467. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  468. package/src/context/state-tracker/track-context-state.ts +250 -0
  469. package/src/context/state-tracker/with-parameters.ts +50 -0
  470. package/src/debug/debug-uniforms.ts +1 -1
  471. package/src/debug/debug-vertex-array.ts +2 -4
  472. package/src/device/check-glsl-extension.ts +44 -0
  473. package/src/device/device-features.ts +227 -0
  474. package/src/device/device-limits.ts +150 -0
  475. package/src/device/get-device-info.ts +49 -0
  476. package/src/device/webgl-device.ts +406 -0
  477. package/src/index.ts +76 -22
  478. package/src/init.ts +12 -9
  479. package/src/types.ts +1 -1
  480. package/src/webgl-utils/attribute-utils.ts +1 -1
  481. package/src/webgl-utils/constants-to-keys.ts +1 -1
  482. package/src/webgl-utils/format-utils.ts +1 -1
  483. package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
  484. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  485. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  486. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  487. package/dist/context/gl-context.d.ts +0 -15
  488. package/dist/context/gl-context.d.ts.map +0 -1
  489. package/dist/context/gl-context.js +0 -32
  490. package/dist/context/gl-context.js.map +0 -1
  491. package/dist/context/luma-context-data.d.ts +0 -31
  492. package/dist/context/luma-context-data.d.ts.map +0 -1
  493. package/dist/context/luma-context-data.js +0 -5
  494. package/dist/context/luma-context-data.js.map +0 -1
  495. package/dist/es5/context/gl-context.js +0 -46
  496. package/dist/es5/context/gl-context.js.map +0 -1
  497. package/dist/es5/context/luma-context-data.js +0 -12
  498. package/dist/es5/context/luma-context-data.js.map +0 -1
  499. package/dist/es5/features/check-glsl-extension.js +0 -40
  500. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  501. package/dist/es5/features/check-old-ie.js +0 -15
  502. package/dist/es5/features/check-old-ie.js.map +0 -1
  503. package/dist/es5/features/features.js +0 -85
  504. package/dist/es5/features/features.js.map +0 -1
  505. package/dist/es5/features/index.js +0 -64
  506. package/dist/es5/features/index.js.map +0 -1
  507. package/dist/es5/features/limits.js +0 -72
  508. package/dist/es5/features/limits.js.map +0 -1
  509. package/dist/es5/features/webgl-features-table.js +0 -84
  510. package/dist/es5/features/webgl-features-table.js.map +0 -1
  511. package/dist/es5/features/webgl-limits-table.js +0 -172
  512. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  513. package/dist/es5/utils/array-utils-flat.js +0 -50
  514. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  515. package/dist/es5/utils/assert.js +0 -13
  516. package/dist/es5/utils/assert.js.map +0 -1
  517. package/dist/es5/utils/check-props.js +0 -50
  518. package/dist/es5/utils/check-props.js.map +0 -1
  519. package/dist/es5/utils/format-value.js +0 -57
  520. package/dist/es5/utils/format-value.js.map +0 -1
  521. package/dist/es5/utils/index.js +0 -68
  522. package/dist/es5/utils/index.js.map +0 -1
  523. package/dist/es5/utils/is-old-ie.js +0 -13
  524. package/dist/es5/utils/is-old-ie.js.map +0 -1
  525. package/dist/es5/utils/load-file.js +0 -43
  526. package/dist/es5/utils/load-file.js.map +0 -1
  527. package/dist/es5/utils/stub-methods.js +0 -25
  528. package/dist/es5/utils/stub-methods.js.map +0 -1
  529. package/dist/es5/utils/utils.js +0 -31
  530. package/dist/es5/utils/utils.js.map +0 -1
  531. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  532. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  533. package/dist/esm/context/gl-context.js +0 -32
  534. package/dist/esm/context/gl-context.js.map +0 -1
  535. package/dist/esm/context/luma-context-data.js +0 -5
  536. package/dist/esm/context/luma-context-data.js.map +0 -1
  537. package/dist/esm/features/check-glsl-extension.js +0 -27
  538. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  539. package/dist/esm/features/check-old-ie.js.map +0 -1
  540. package/dist/esm/features/features.js +0 -67
  541. package/dist/esm/features/features.js.map +0 -1
  542. package/dist/esm/features/index.js +0 -5
  543. package/dist/esm/features/index.js.map +0 -1
  544. package/dist/esm/features/limits.js +0 -55
  545. package/dist/esm/features/limits.js.map +0 -1
  546. package/dist/esm/features/webgl-features-table.js +0 -71
  547. package/dist/esm/features/webgl-features-table.js.map +0 -1
  548. package/dist/esm/features/webgl-limits-table.js +0 -161
  549. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  550. package/dist/esm/utils/array-utils-flat.js +0 -39
  551. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  552. package/dist/esm/utils/assert.js +0 -6
  553. package/dist/esm/utils/assert.js.map +0 -1
  554. package/dist/esm/utils/check-props.js +0 -38
  555. package/dist/esm/utils/check-props.js.map +0 -1
  556. package/dist/esm/utils/format-value.js +0 -50
  557. package/dist/esm/utils/format-value.js.map +0 -1
  558. package/dist/esm/utils/index.js +0 -7
  559. package/dist/esm/utils/index.js.map +0 -1
  560. package/dist/esm/utils/is-old-ie.js +0 -5
  561. package/dist/esm/utils/is-old-ie.js.map +0 -1
  562. package/dist/esm/utils/load-file.js +0 -30
  563. package/dist/esm/utils/load-file.js.map +0 -1
  564. package/dist/esm/utils/stub-methods.js +0 -16
  565. package/dist/esm/utils/stub-methods.js.map +0 -1
  566. package/dist/esm/utils/utils.js +0 -20
  567. package/dist/esm/utils/utils.js.map +0 -1
  568. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  569. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  570. package/dist/features/check-glsl-extension.d.ts +0 -2
  571. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  572. package/dist/features/check-glsl-extension.js +0 -27
  573. package/dist/features/check-glsl-extension.js.map +0 -1
  574. package/dist/features/check-old-ie.d.ts +0 -2
  575. package/dist/features/check-old-ie.d.ts.map +0 -1
  576. package/dist/features/check-old-ie.js.map +0 -1
  577. package/dist/features/features.d.ts +0 -6
  578. package/dist/features/features.d.ts.map +0 -1
  579. package/dist/features/features.js +0 -67
  580. package/dist/features/features.js.map +0 -1
  581. package/dist/features/index.d.ts +0 -5
  582. package/dist/features/index.d.ts.map +0 -1
  583. package/dist/features/index.js +0 -5
  584. package/dist/features/index.js.map +0 -1
  585. package/dist/features/limits.d.ts +0 -28
  586. package/dist/features/limits.d.ts.map +0 -1
  587. package/dist/features/limits.js +0 -55
  588. package/dist/features/limits.js.map +0 -1
  589. package/dist/features/webgl-features-table.d.ts +0 -30
  590. package/dist/features/webgl-features-table.d.ts.map +0 -1
  591. package/dist/features/webgl-features-table.js +0 -71
  592. package/dist/features/webgl-features-table.js.map +0 -1
  593. package/dist/features/webgl-limits-table.d.ts +0 -161
  594. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  595. package/dist/features/webgl-limits-table.js +0 -161
  596. package/dist/features/webgl-limits-table.js.map +0 -1
  597. package/dist/utils/array-utils-flat.d.ts +0 -9
  598. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  599. package/dist/utils/array-utils-flat.js +0 -39
  600. package/dist/utils/array-utils-flat.js.map +0 -1
  601. package/dist/utils/assert.d.ts +0 -2
  602. package/dist/utils/assert.d.ts.map +0 -1
  603. package/dist/utils/assert.js +0 -6
  604. package/dist/utils/assert.js.map +0 -1
  605. package/dist/utils/check-props.d.ts +0 -2
  606. package/dist/utils/check-props.d.ts.map +0 -1
  607. package/dist/utils/check-props.js +0 -38
  608. package/dist/utils/check-props.js.map +0 -1
  609. package/dist/utils/format-value.d.ts +0 -5
  610. package/dist/utils/format-value.d.ts.map +0 -1
  611. package/dist/utils/format-value.js +0 -50
  612. package/dist/utils/format-value.js.map +0 -1
  613. package/dist/utils/index.d.ts +0 -7
  614. package/dist/utils/index.d.ts.map +0 -1
  615. package/dist/utils/index.js +0 -7
  616. package/dist/utils/index.js.map +0 -1
  617. package/dist/utils/is-old-ie.d.ts +0 -4
  618. package/dist/utils/is-old-ie.d.ts.map +0 -1
  619. package/dist/utils/is-old-ie.js +0 -5
  620. package/dist/utils/is-old-ie.js.map +0 -1
  621. package/dist/utils/load-file.d.ts +0 -4
  622. package/dist/utils/load-file.d.ts.map +0 -1
  623. package/dist/utils/load-file.js +0 -30
  624. package/dist/utils/load-file.js.map +0 -1
  625. package/dist/utils/stub-methods.d.ts +0 -2
  626. package/dist/utils/stub-methods.d.ts.map +0 -1
  627. package/dist/utils/stub-methods.js +0 -16
  628. package/dist/utils/stub-methods.js.map +0 -1
  629. package/dist/utils/utils.d.ts +0 -15
  630. package/dist/utils/utils.d.ts.map +0 -1
  631. package/dist/utils/utils.js +0 -20
  632. package/dist/utils/utils.js.map +0 -1
  633. package/src/context/gl-context.ts +0 -31
  634. package/src/context/luma-context-data.ts +0 -27
  635. package/src/features/check-glsl-extension.ts +0 -34
  636. package/src/features/features.ts +0 -80
  637. package/src/features/index.ts +0 -5
  638. package/src/features/limits.ts +0 -66
  639. package/src/features/webgl-features-table.ts +0 -104
  640. package/src/features/webgl-limits-table.ts +0 -51
  641. package/src/utils/array-utils-flat.ts +0 -56
  642. package/src/utils/assert.ts +0 -7
  643. package/src/utils/check-props.ts +0 -68
  644. package/src/utils/format-value.ts +0 -37
  645. package/src/utils/index.ts +0 -6
  646. package/src/utils/is-old-ie.ts +0 -6
  647. package/src/utils/load-file.ts +0 -40
  648. package/src/utils/stub-methods.ts +0 -20
  649. package/src/utils/utils.ts +0 -35
  650. package/src/webgl-utils/texture-utils.d.ts +0 -11
  651. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -5,791 +5,906 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- Object.defineProperty(exports, "TextureProps", {
9
- enumerable: true,
10
- get: function () {
11
- return _api.TextureProps;
12
- }
13
- });
14
8
  exports.default = void 0;
15
9
 
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
11
 
18
- var _constants = _interopRequireDefault(require("@luma.gl/constants"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
13
 
20
- var _gltools = require("@luma.gl/gltools");
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
15
 
22
- var _env = require("probe.gl/env");
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
23
17
 
24
- var _webglUtils = require("../webgl-utils");
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
19
 
26
- var _api = require("@luma.gl/api");
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
27
21
 
28
- var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
29
23
 
30
- var _textureFormats = require("./texture-formats");
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
25
 
32
- var _utils = require("../utils");
26
+ var _api = require("@luma.gl/api");
33
27
 
34
- const NPOT_MIN_FILTERS = [_constants.default.LINEAR, _constants.default.NEAREST];
28
+ var _constants = _interopRequireDefault(require("@luma.gl/constants"));
35
29
 
36
- const WebGLBuffer = _env.global.WebGLBuffer || function WebGLBuffer() {};
30
+ var _webglChecks = require("../context/context/webgl-checks");
37
31
 
38
- class WEBGLTexture extends _api.Texture {
39
- static isSupported(gl, options) {
40
- const {
41
- format,
42
- linearFiltering
43
- } = options;
44
- let supported = true;
32
+ var _withParameters = require("../context/state-tracker/with-parameters");
45
33
 
46
- if (format) {
47
- supported = supported && (0, _textureFormats.isFormatSupported)(gl, format);
48
- supported = supported && (!linearFiltering || (0, _textureFormats.isLinearFilteringSupported)(gl, format));
49
- }
34
+ var _constantsToKeys = require("../webgl-utils/constants-to-keys");
50
35
 
51
- return supported;
52
- }
36
+ var _webglDevice = _interopRequireDefault(require("../device/webgl-device"));
53
37
 
54
- constructor(gl, props) {
55
- super(gl, props);
56
- (0, _defineProperty2.default)(this, "MAX_ATTRIBUTES", void 0);
57
- (0, _defineProperty2.default)(this, "gl", void 0);
58
- (0, _defineProperty2.default)(this, "gl2", void 0);
59
- (0, _defineProperty2.default)(this, "handle", void 0);
60
- (0, _defineProperty2.default)(this, "data", void 0);
61
- (0, _defineProperty2.default)(this, "width", void 0);
62
- (0, _defineProperty2.default)(this, "height", void 0);
63
- (0, _defineProperty2.default)(this, "depth", void 0);
64
- (0, _defineProperty2.default)(this, "format", undefined);
65
- (0, _defineProperty2.default)(this, "type", undefined);
66
- (0, _defineProperty2.default)(this, "dataFormat", undefined);
67
- (0, _defineProperty2.default)(this, "border", undefined);
68
- (0, _defineProperty2.default)(this, "mipmaps", undefined);
69
- (0, _defineProperty2.default)(this, "target", void 0);
70
- (0, _defineProperty2.default)(this, "textureUnit", undefined);
71
- (0, _defineProperty2.default)(this, "loaded", false);
72
- (0, _defineProperty2.default)(this, "_video", void 0);
73
- const {
74
- id = (0, _utils.uid)('texture'),
75
- handle,
76
- target
77
- } = props;
78
- this.target = target;
79
- this.textureUnit = undefined;
80
- this.loaded = false;
81
- this.width = undefined;
82
- this.height = undefined;
83
- this.depth = undefined;
84
- this.format = undefined;
85
- this.type = undefined;
86
- this.dataFormat = undefined;
87
- this.border = undefined;
88
- this.textureUnit = undefined;
89
- this.mipmaps = undefined;
90
- this.gl = gl;
91
- this.gl2 = (0, _gltools.getWebGL2Context)(gl);
92
- this.handle = this.props.handle || this.gl.createTexture();
93
- }
38
+ var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
94
39
 
95
- destroy() {
96
- if (this.handle) {
97
- this.gl.deleteTexture(this.handle);
98
- this.removeStats();
99
- this.trackDeallocatedMemory('Texture');
100
- this.handle = null;
101
- }
102
- }
40
+ var _textureFormats = require("./texture-formats");
103
41
 
104
- toString() {
105
- return "Texture(".concat(this.id, ",").concat(this.width, "x").concat(this.height, ")");
42
+ 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; } } }; }
43
+
44
+ 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); }
45
+
46
+ 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; }
47
+
48
+ 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); }; }
49
+
50
+ 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; } }
51
+
52
+ var NPOT_MIN_FILTERS = [_constants.default.LINEAR, _constants.default.NEAREST];
53
+
54
+ var WEBGLTexture = function (_Texture) {
55
+ (0, _inherits2.default)(WEBGLTexture, _Texture);
56
+
57
+ var _super = _createSuper(WEBGLTexture);
58
+
59
+ function WEBGLTexture(device, props) {
60
+ var _this;
61
+
62
+ (0, _classCallCheck2.default)(this, WEBGLTexture);
63
+ _this = _super.call(this, _webglDevice.default.attach(device), props);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "MAX_ATTRIBUTES", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "gl", void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "gl2", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "data", void 0);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "width", void 0);
71
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "height", void 0);
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "depth", void 0);
73
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "format", undefined);
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", undefined);
75
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dataFormat", undefined);
76
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "border", undefined);
77
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mipmaps", undefined);
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "target", void 0);
79
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "textureUnit", undefined);
80
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loaded", false);
81
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_video", void 0);
82
+ var _props$id = props.id,
83
+ id = _props$id === void 0 ? (0, _api.uid)('texture') : _props$id,
84
+ handle = props.handle,
85
+ target = props.target;
86
+ _this.target = target;
87
+ _this.textureUnit = undefined;
88
+ _this.loaded = false;
89
+ _this.width = undefined;
90
+ _this.height = undefined;
91
+ _this.depth = undefined;
92
+ _this.format = undefined;
93
+ _this.type = undefined;
94
+ _this.dataFormat = undefined;
95
+ _this.border = undefined;
96
+ _this.textureUnit = undefined;
97
+ _this.mipmaps = undefined;
98
+ _this.device = _webglDevice.default.attach(device);
99
+ _this.gl = _this.device.gl;
100
+ _this.gl2 = _this.device.gl2;
101
+ _this.handle = _this.props.handle || _this.gl.createTexture();
102
+ return _this;
106
103
  }
107
104
 
108
- initialize(props = {}) {
109
- let data = props.data;
110
-
111
- if (data instanceof Promise) {
112
- data.then(resolvedImageData => this.initialize(Object.assign({}, props, {
113
- pixels: resolvedImageData,
114
- data: resolvedImageData
115
- })));
116
- return this;
105
+ (0, _createClass2.default)(WEBGLTexture, [{
106
+ key: "destroy",
107
+ value: function destroy() {
108
+ if (this.handle) {
109
+ this.gl.deleteTexture(this.handle);
110
+ this.removeStats();
111
+ this.trackDeallocatedMemory('Texture');
112
+ this.handle = null;
113
+ }
117
114
  }
115
+ }, {
116
+ key: "toString",
117
+ value: function toString() {
118
+ return "Texture(".concat(this.id, ",").concat(this.width, "x").concat(this.height, ")");
119
+ }
120
+ }, {
121
+ key: "initialize",
122
+ value: function initialize() {
123
+ var _this2 = this;
124
+
125
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
126
+ var data = props.data;
127
+
128
+ if (data instanceof Promise) {
129
+ data.then(function (resolvedImageData) {
130
+ return _this2.initialize(Object.assign({}, props, {
131
+ pixels: resolvedImageData,
132
+ data: resolvedImageData
133
+ }));
134
+ });
135
+ return this;
136
+ }
118
137
 
119
- const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;
120
-
121
- if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {
122
- this._video = null;
123
- data.addEventListener('loadeddata', () => this.initialize(props));
124
- return this;
125
- }
138
+ var isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;
126
139
 
127
- const {
128
- pixels = null,
129
- format = _constants.default.RGBA,
130
- border = 0,
131
- recreate = false,
132
- parameters = {},
133
- pixelStore = {},
134
- textureUnit = undefined
135
- } = props;
136
-
137
- if (!data) {
138
- data = pixels;
139
- }
140
+ if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {
141
+ this._video = null;
142
+ data.addEventListener('loadeddata', function () {
143
+ return _this2.initialize(props);
144
+ });
145
+ return this;
146
+ }
140
147
 
141
- let {
142
- width,
143
- height,
144
- dataFormat,
145
- type,
146
- compressed = false,
147
- mipmaps = true
148
- } = props;
149
- const {
150
- depth = 0
151
- } = props;
152
- ({
153
- width,
154
- height,
155
- compressed,
156
- dataFormat,
157
- type
158
- } = this._deduceParameters({
159
- format,
160
- type,
161
- dataFormat,
162
- compressed,
163
- data,
164
- width,
165
- height
166
- }));
167
- this.width = width;
168
- this.height = height;
169
- this.depth = depth;
170
- this.format = format;
171
- this.type = type;
172
- this.dataFormat = dataFormat;
173
- this.border = border;
174
- this.textureUnit = textureUnit;
175
-
176
- if (Number.isFinite(this.textureUnit)) {
177
- this.gl.activeTexture(_constants.default.TEXTURE0 + this.textureUnit);
178
- this.gl.bindTexture(this.target, this.handle);
179
- }
148
+ var _props$pixels = props.pixels,
149
+ pixels = _props$pixels === void 0 ? null : _props$pixels,
150
+ _props$format = props.format,
151
+ format = _props$format === void 0 ? _constants.default.RGBA : _props$format,
152
+ _props$border = props.border,
153
+ border = _props$border === void 0 ? 0 : _props$border,
154
+ _props$recreate = props.recreate,
155
+ recreate = _props$recreate === void 0 ? false : _props$recreate,
156
+ _props$parameters = props.parameters,
157
+ parameters = _props$parameters === void 0 ? {} : _props$parameters,
158
+ _props$pixelStore = props.pixelStore,
159
+ pixelStore = _props$pixelStore === void 0 ? {} : _props$pixelStore,
160
+ _props$textureUnit = props.textureUnit,
161
+ textureUnit = _props$textureUnit === void 0 ? undefined : _props$textureUnit;
162
+
163
+ if (!data) {
164
+ data = pixels;
165
+ }
180
166
 
181
- if (mipmaps && this._isNPOT()) {
182
- _gltools.log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaping"))();
167
+ var width = props.width,
168
+ height = props.height,
169
+ dataFormat = props.dataFormat,
170
+ type = props.type,
171
+ _props$compressed = props.compressed,
172
+ compressed = _props$compressed === void 0 ? false : _props$compressed,
173
+ _props$mipmaps = props.mipmaps,
174
+ mipmaps = _props$mipmaps === void 0 ? true : _props$mipmaps;
175
+ var _props$depth = props.depth,
176
+ depth = _props$depth === void 0 ? 0 : _props$depth;
177
+
178
+ var _this$_deduceParamete = this._deduceParameters({
179
+ format: format,
180
+ type: type,
181
+ dataFormat: dataFormat,
182
+ compressed: compressed,
183
+ data: data,
184
+ width: width,
185
+ height: height
186
+ });
183
187
 
184
- mipmaps = false;
188
+ width = _this$_deduceParamete.width;
189
+ height = _this$_deduceParamete.height;
190
+ compressed = _this$_deduceParamete.compressed;
191
+ dataFormat = _this$_deduceParamete.dataFormat;
192
+ type = _this$_deduceParamete.type;
193
+ this.width = width;
194
+ this.height = height;
195
+ this.depth = depth;
196
+ this.format = format;
197
+ this.type = type;
198
+ this.dataFormat = dataFormat;
199
+ this.border = border;
200
+ this.textureUnit = textureUnit;
185
201
 
186
- this._updateForNPOT(parameters);
187
- }
202
+ if (Number.isFinite(this.textureUnit)) {
203
+ this.gl.activeTexture(_constants.default.TEXTURE0 + this.textureUnit);
204
+ this.gl.bindTexture(this.target, this.handle);
205
+ }
188
206
 
189
- this.mipmaps = mipmaps;
190
- this.setImageData({
191
- data,
192
- width,
193
- height,
194
- depth,
195
- format,
196
- type,
197
- dataFormat,
198
- border,
199
- mipmaps,
200
- parameters: pixelStore,
201
- compressed
202
- });
203
-
204
- if (mipmaps) {
205
- this.generateMipmap();
206
- }
207
+ if (mipmaps && this._isNPOT()) {
208
+ _api.log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaping"))();
207
209
 
208
- this.setParameters(parameters);
210
+ mipmaps = false;
209
211
 
210
- if (recreate) {
211
- this.data = data;
212
- }
212
+ this._updateForNPOT(parameters);
213
+ }
213
214
 
214
- if (isVideo) {
215
- this._video = {
216
- video: data,
217
- parameters,
218
- lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1
219
- };
220
- }
215
+ this.mipmaps = mipmaps;
216
+ this.setImageData({
217
+ data: data,
218
+ width: width,
219
+ height: height,
220
+ depth: depth,
221
+ format: format,
222
+ type: type,
223
+ dataFormat: dataFormat,
224
+ border: border,
225
+ mipmaps: mipmaps,
226
+ parameters: pixelStore,
227
+ compressed: compressed
228
+ });
221
229
 
222
- return this;
223
- }
230
+ if (mipmaps) {
231
+ this.generateMipmap();
232
+ }
224
233
 
225
- update() {
226
- if (this._video) {
227
- const {
228
- video,
229
- parameters,
230
- lastTime
231
- } = this._video;
234
+ this.setParameters(parameters);
232
235
 
233
- if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {
234
- return;
236
+ if (recreate) {
237
+ this.data = data;
235
238
  }
236
239
 
237
- this.setSubImageData({
238
- data: video,
239
- parameters
240
- });
241
-
242
- if (this.mipmaps) {
243
- this.generateMipmap();
240
+ if (isVideo) {
241
+ this._video = {
242
+ video: data,
243
+ parameters: parameters,
244
+ lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1
245
+ };
244
246
  }
245
247
 
246
- this._video.lastTime = video.currentTime;
248
+ return this;
247
249
  }
248
- }
250
+ }, {
251
+ key: "update",
252
+ value: function update() {
253
+ if (this._video) {
254
+ var _this$_video = this._video,
255
+ video = _this$_video.video,
256
+ parameters = _this$_video.parameters,
257
+ lastTime = _this$_video.lastTime;
258
+
259
+ if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {
260
+ return;
261
+ }
249
262
 
250
- resize({
251
- height,
252
- width,
253
- mipmaps = false
254
- }) {
255
- if (width !== this.width || height !== this.height) {
256
- return this.initialize({
257
- width,
258
- height,
259
- format: this.format,
260
- type: this.type,
261
- dataFormat: this.dataFormat,
262
- border: this.border,
263
- mipmaps
264
- });
265
- }
263
+ this.setSubImageData({
264
+ data: video,
265
+ parameters: parameters
266
+ });
266
267
 
267
- return this;
268
- }
268
+ if (this.mipmaps) {
269
+ this.generateMipmap();
270
+ }
269
271
 
270
- generateMipmap(params = {}) {
271
- if (this._isNPOT()) {
272
- _gltools.log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaping"))();
272
+ this._video.lastTime = video.currentTime;
273
+ }
274
+ }
275
+ }, {
276
+ key: "resize",
277
+ value: function resize(_ref) {
278
+ var height = _ref.height,
279
+ width = _ref.width,
280
+ _ref$mipmaps = _ref.mipmaps,
281
+ mipmaps = _ref$mipmaps === void 0 ? false : _ref$mipmaps;
282
+
283
+ if (width !== this.width || height !== this.height) {
284
+ return this.initialize({
285
+ width: width,
286
+ height: height,
287
+ format: this.format,
288
+ type: this.type,
289
+ dataFormat: this.dataFormat,
290
+ border: this.border,
291
+ mipmaps: mipmaps
292
+ });
293
+ }
273
294
 
274
295
  return this;
275
296
  }
297
+ }, {
298
+ key: "generateMipmap",
299
+ value: function generateMipmap() {
300
+ var _this3 = this;
276
301
 
277
- this.mipmaps = true;
278
- this.gl.bindTexture(this.target, this.handle);
279
- (0, _gltools.withParameters)(this.gl, params, () => {
280
- this.gl.generateMipmap(this.target);
281
- });
282
- this.gl.bindTexture(this.target, null);
283
- return this;
284
- }
302
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
285
303
 
286
- setImageData(options) {
287
- this.trackDeallocatedMemory('Texture');
288
- const {
289
- target = this.target,
290
- pixels = null,
291
- level = 0,
292
- format = this.format,
293
- border = this.border,
294
- offset = 0,
295
- parameters = {}
296
- } = options;
297
- let {
298
- data = null,
299
- type = this.type,
300
- width = this.width,
301
- height = this.height,
302
- dataFormat = this.dataFormat,
303
- compressed = false
304
- } = options;
305
-
306
- if (!data) {
307
- data = pixels;
308
- }
304
+ if (this._isNPOT()) {
305
+ _api.log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaping"))();
309
306
 
310
- ({
311
- type,
312
- dataFormat,
313
- compressed,
314
- width,
315
- height
316
- } = this._deduceParameters({
317
- format,
318
- type,
319
- dataFormat,
320
- compressed,
321
- data,
322
- width,
323
- height
324
- }));
325
- const {
326
- gl
327
- } = this;
328
- gl.bindTexture(this.target, this.handle);
329
- let dataType = null;
330
- ({
331
- data,
332
- dataType
333
- } = this._getDataType({
334
- data,
335
- compressed
336
- }));
337
- let gl2;
338
- (0, _gltools.withParameters)(this.gl, parameters, () => {
339
- switch (dataType) {
340
- case 'null':
341
- gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);
342
- break;
307
+ return this;
308
+ }
343
309
 
344
- case 'typed-array':
345
- gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);
346
- break;
310
+ this.mipmaps = true;
311
+ this.gl.bindTexture(this.target, this.handle);
312
+ (0, _withParameters.withParameters)(this.gl, params, function () {
313
+ _this3.gl.generateMipmap(_this3.target);
314
+ });
315
+ this.gl.bindTexture(this.target, null);
316
+ return this;
317
+ }
318
+ }, {
319
+ key: "setImageData",
320
+ value: function setImageData(options) {
321
+ this.trackDeallocatedMemory('Texture');
322
+ var _options$target = options.target,
323
+ target = _options$target === void 0 ? this.target : _options$target,
324
+ _options$pixels = options.pixels,
325
+ pixels = _options$pixels === void 0 ? null : _options$pixels,
326
+ _options$level = options.level,
327
+ level = _options$level === void 0 ? 0 : _options$level,
328
+ _options$format = options.format,
329
+ format = _options$format === void 0 ? this.format : _options$format,
330
+ _options$border = options.border,
331
+ border = _options$border === void 0 ? this.border : _options$border,
332
+ _options$offset = options.offset,
333
+ offset = _options$offset === void 0 ? 0 : _options$offset,
334
+ _options$parameters = options.parameters,
335
+ parameters = _options$parameters === void 0 ? {} : _options$parameters;
336
+ var _options$data = options.data,
337
+ data = _options$data === void 0 ? null : _options$data,
338
+ _options$type = options.type,
339
+ type = _options$type === void 0 ? this.type : _options$type,
340
+ _options$width = options.width,
341
+ width = _options$width === void 0 ? this.width : _options$width,
342
+ _options$height = options.height,
343
+ height = _options$height === void 0 ? this.height : _options$height,
344
+ _options$dataFormat = options.dataFormat,
345
+ dataFormat = _options$dataFormat === void 0 ? this.dataFormat : _options$dataFormat,
346
+ _options$compressed = options.compressed,
347
+ compressed = _options$compressed === void 0 ? false : _options$compressed;
348
+
349
+ if (!data) {
350
+ data = pixels;
351
+ }
347
352
 
348
- case 'buffer':
349
- gl2 = (0, _gltools.assertWebGL2Context)(gl);
350
- gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, data.handle || data);
351
- gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);
352
- gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, null);
353
- break;
353
+ var _this$_deduceParamete2 = this._deduceParameters({
354
+ format: format,
355
+ type: type,
356
+ dataFormat: dataFormat,
357
+ compressed: compressed,
358
+ data: data,
359
+ width: width,
360
+ height: height
361
+ });
354
362
 
355
- case 'browser-object':
356
- if ((0, _gltools.isWebGL2)(gl)) {
363
+ type = _this$_deduceParamete2.type;
364
+ dataFormat = _this$_deduceParamete2.dataFormat;
365
+ compressed = _this$_deduceParamete2.compressed;
366
+ width = _this$_deduceParamete2.width;
367
+ height = _this$_deduceParamete2.height;
368
+ var gl = this.gl;
369
+ gl.bindTexture(this.target, this.handle);
370
+ var dataType = null;
371
+
372
+ var _this$_getDataType = this._getDataType({
373
+ data: data,
374
+ compressed: compressed
375
+ });
376
+
377
+ data = _this$_getDataType.data;
378
+ dataType = _this$_getDataType.dataType;
379
+ var gl2;
380
+ (0, _withParameters.withParameters)(this.gl, parameters, function () {
381
+ switch (dataType) {
382
+ case 'null':
357
383
  gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);
358
- } else {
359
- gl.texImage2D(target, level, format, dataFormat, type, data);
360
- }
384
+ break;
385
+
386
+ case 'typed-array':
387
+ gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);
388
+ break;
389
+
390
+ case 'buffer':
391
+ gl2 = (0, _webglChecks.assertWebGL2Context)(gl);
392
+ gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, data.handle || data);
393
+ gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);
394
+ gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, null);
395
+ break;
396
+
397
+ case 'browser-object':
398
+ if ((0, _webglChecks.isWebGL2)(gl)) {
399
+ gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);
400
+ } else {
401
+ gl.texImage2D(target, level, format, dataFormat, type, data);
402
+ }
403
+
404
+ break;
405
+
406
+ case 'compressed':
407
+ var _iterator = _createForOfIteratorHelper(data.entries()),
408
+ _step;
409
+
410
+ try {
411
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
412
+ var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
413
+ levelIndex = _step$value[0],
414
+ levelData = _step$value[1];
415
+
416
+ gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);
417
+ }
418
+ } catch (err) {
419
+ _iterator.e(err);
420
+ } finally {
421
+ _iterator.f();
422
+ }
423
+
424
+ break;
425
+
426
+ default:
427
+ (0, _api.assert)(false, 'Unknown image data type');
428
+ }
429
+ });
361
430
 
362
- break;
431
+ if (data && data.byteLength) {
432
+ this.trackAllocatedMemory(data.byteLength, 'Texture');
433
+ } else {
434
+ var channels = _textureFormats.DATA_FORMAT_CHANNELS[this.dataFormat] || 4;
435
+ var channelSize = _textureFormats.TYPE_SIZES[this.type] || 1;
436
+ this.trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');
437
+ }
363
438
 
364
- case 'compressed':
365
- for (const [levelIndex, levelData] of data.entries()) {
366
- gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);
367
- }
439
+ this.loaded = true;
440
+ return this;
441
+ }
442
+ }, {
443
+ key: "setSubImageData",
444
+ value: function setSubImageData(_ref2) {
445
+ var _this4 = this;
446
+
447
+ var _ref2$target = _ref2.target,
448
+ target = _ref2$target === void 0 ? this.target : _ref2$target,
449
+ _ref2$pixels = _ref2.pixels,
450
+ pixels = _ref2$pixels === void 0 ? null : _ref2$pixels,
451
+ _ref2$data = _ref2.data,
452
+ data = _ref2$data === void 0 ? null : _ref2$data,
453
+ _ref2$x = _ref2.x,
454
+ x = _ref2$x === void 0 ? 0 : _ref2$x,
455
+ _ref2$y = _ref2.y,
456
+ y = _ref2$y === void 0 ? 0 : _ref2$y,
457
+ _ref2$width = _ref2.width,
458
+ width = _ref2$width === void 0 ? this.width : _ref2$width,
459
+ _ref2$height = _ref2.height,
460
+ height = _ref2$height === void 0 ? this.height : _ref2$height,
461
+ _ref2$level = _ref2.level,
462
+ level = _ref2$level === void 0 ? 0 : _ref2$level,
463
+ _ref2$format = _ref2.format,
464
+ format = _ref2$format === void 0 ? this.format : _ref2$format,
465
+ _ref2$type = _ref2.type,
466
+ type = _ref2$type === void 0 ? this.type : _ref2$type,
467
+ _ref2$dataFormat = _ref2.dataFormat,
468
+ dataFormat = _ref2$dataFormat === void 0 ? this.dataFormat : _ref2$dataFormat,
469
+ _ref2$compressed = _ref2.compressed,
470
+ compressed = _ref2$compressed === void 0 ? false : _ref2$compressed,
471
+ _ref2$offset = _ref2.offset,
472
+ offset = _ref2$offset === void 0 ? 0 : _ref2$offset,
473
+ _ref2$border = _ref2.border,
474
+ border = _ref2$border === void 0 ? this.border : _ref2$border,
475
+ _ref2$parameters = _ref2.parameters,
476
+ parameters = _ref2$parameters === void 0 ? {} : _ref2$parameters;
477
+
478
+ var _this$_deduceParamete3 = this._deduceParameters({
479
+ format: format,
480
+ type: type,
481
+ dataFormat: dataFormat,
482
+ compressed: compressed,
483
+ data: data,
484
+ width: width,
485
+ height: height
486
+ });
368
487
 
369
- break;
488
+ type = _this$_deduceParamete3.type;
489
+ dataFormat = _this$_deduceParamete3.dataFormat;
490
+ compressed = _this$_deduceParamete3.compressed;
491
+ width = _this$_deduceParamete3.width;
492
+ height = _this$_deduceParamete3.height;
493
+ (0, _api.assert)(this.depth === 0, 'texSubImage not supported for 3D textures');
370
494
 
371
- default:
372
- (0, _utils.assert)(false, 'Unknown image data type');
495
+ if (!data) {
496
+ data = pixels;
373
497
  }
374
- });
375
498
 
376
- if (data && data.byteLength) {
377
- this.trackAllocatedMemory(data.byteLength, 'Texture');
378
- } else {
379
- const channels = _textureFormats.DATA_FORMAT_CHANNELS[this.dataFormat] || 4;
380
- const channelSize = _textureFormats.TYPE_SIZES[this.type] || 1;
381
- this.trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');
382
- }
499
+ if (data && data.data) {
500
+ var ndarray = data;
501
+ data = ndarray.data;
502
+ width = ndarray.shape[0];
503
+ height = ndarray.shape[1];
504
+ }
383
505
 
384
- this.loaded = true;
385
- return this;
386
- }
506
+ if (data instanceof _webglBuffer.default) {
507
+ data = data.handle;
508
+ }
387
509
 
388
- setSubImageData({
389
- target = this.target,
390
- pixels = null,
391
- data = null,
392
- x = 0,
393
- y = 0,
394
- width = this.width,
395
- height = this.height,
396
- level = 0,
397
- format = this.format,
398
- type = this.type,
399
- dataFormat = this.dataFormat,
400
- compressed = false,
401
- offset = 0,
402
- border = this.border,
403
- parameters = {}
404
- }) {
405
- ({
406
- type,
407
- dataFormat,
408
- compressed,
409
- width,
410
- height
411
- } = this._deduceParameters({
412
- format,
413
- type,
414
- dataFormat,
415
- compressed,
416
- data,
417
- width,
418
- height
419
- }));
420
- (0, _utils.assert)(this.depth === 0, 'texSubImage not supported for 3D textures');
421
-
422
- if (!data) {
423
- data = pixels;
424
- }
510
+ this.gl.bindTexture(this.target, this.handle);
511
+ (0, _withParameters.withParameters)(this.gl, parameters, function () {
512
+ if (compressed) {
513
+ _this4.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
514
+ } else if (data === null) {
515
+ _this4.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
516
+ } else if (ArrayBuffer.isView(data)) {
517
+ _this4.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
518
+ } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
519
+ var gl2 = (0, _webglChecks.assertWebGL2Context)(_this4.gl);
520
+ gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, data);
521
+ gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
522
+ gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, null);
523
+ } else if ((0, _webglChecks.isWebGL2)(_this4.gl)) {
524
+ var _gl = (0, _webglChecks.assertWebGL2Context)(_this4.gl);
425
525
 
426
- if (data && data.data) {
427
- const ndarray = data;
428
- data = ndarray.data;
429
- width = ndarray.shape[0];
430
- height = ndarray.shape[1];
526
+ _gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
527
+ } else {
528
+ _this4.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
529
+ }
530
+ });
531
+ this.gl.bindTexture(this.target, null);
431
532
  }
533
+ }, {
534
+ key: "copyFramebuffer",
535
+ value: function copyFramebuffer() {
536
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
432
537
 
433
- if (data instanceof _webglBuffer.default) {
434
- data = data.handle;
538
+ _api.log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();
539
+
540
+ return null;
541
+ }
542
+ }, {
543
+ key: "getActiveUnit",
544
+ value: function getActiveUnit() {
545
+ return this.gl.getParameter(_constants.default.ACTIVE_TEXTURE) - _constants.default.TEXTURE0;
435
546
  }
547
+ }, {
548
+ key: "bind",
549
+ value: function bind() {
550
+ var textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;
551
+ var gl = this.gl;
436
552
 
437
- this.gl.bindTexture(this.target, this.handle);
438
- (0, _gltools.withParameters)(this.gl, parameters, () => {
439
- if (compressed) {
440
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
441
- } else if (data === null) {
442
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
443
- } else if (ArrayBuffer.isView(data)) {
444
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
445
- } else if (data instanceof WebGLBuffer) {
446
- const gl2 = (0, _gltools.assertWebGL2Context)(this.gl);
447
- gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, data);
448
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
449
- gl2.bindBuffer(_constants.default.PIXEL_UNPACK_BUFFER, null);
450
- } else if ((0, _gltools.isWebGL2)(this.gl)) {
451
- const gl2 = (0, _gltools.assertWebGL2Context)(this.gl);
452
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
453
- } else {
454
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
553
+ if (textureUnit !== undefined) {
554
+ this.textureUnit = textureUnit;
555
+ gl.activeTexture(gl.TEXTURE0 + textureUnit);
455
556
  }
456
- });
457
- this.gl.bindTexture(this.target, null);
458
- }
459
-
460
- copyFramebuffer(opts = {}) {
461
- _gltools.log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();
462
-
463
- return null;
464
- }
465
-
466
- getActiveUnit() {
467
- return this.gl.getParameter(_constants.default.ACTIVE_TEXTURE) - _constants.default.TEXTURE0;
468
- }
469
-
470
- bind(textureUnit = this.textureUnit) {
471
- const {
472
- gl
473
- } = this;
474
557
 
475
- if (textureUnit !== undefined) {
476
- this.textureUnit = textureUnit;
477
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
558
+ gl.bindTexture(this.target, this.handle);
559
+ return textureUnit;
478
560
  }
561
+ }, {
562
+ key: "unbind",
563
+ value: function unbind() {
564
+ var textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;
565
+ var gl = this.gl;
479
566
 
480
- gl.bindTexture(this.target, this.handle);
481
- return textureUnit;
482
- }
483
-
484
- unbind(textureUnit = this.textureUnit) {
485
- const {
486
- gl
487
- } = this;
567
+ if (textureUnit !== undefined) {
568
+ this.textureUnit = textureUnit;
569
+ gl.activeTexture(gl.TEXTURE0 + textureUnit);
570
+ }
488
571
 
489
- if (textureUnit !== undefined) {
490
- this.textureUnit = textureUnit;
491
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
572
+ gl.bindTexture(this.target, null);
573
+ return textureUnit;
492
574
  }
575
+ }, {
576
+ key: "_getDataType",
577
+ value: function _getDataType(_ref3) {
578
+ var data = _ref3.data,
579
+ _ref3$compressed = _ref3.compressed,
580
+ compressed = _ref3$compressed === void 0 ? false : _ref3$compressed;
493
581
 
494
- gl.bindTexture(this.target, null);
495
- return textureUnit;
496
- }
582
+ if (compressed) {
583
+ return {
584
+ data: data,
585
+ dataType: 'compressed'
586
+ };
587
+ }
497
588
 
498
- _getDataType({
499
- data,
500
- compressed = false
501
- }) {
502
- if (compressed) {
503
- return {
504
- data,
505
- dataType: 'compressed'
506
- };
507
- }
589
+ if (data === null) {
590
+ return {
591
+ data: data,
592
+ dataType: 'null'
593
+ };
594
+ }
508
595
 
509
- if (data === null) {
510
- return {
511
- data,
512
- dataType: 'null'
513
- };
514
- }
596
+ if (ArrayBuffer.isView(data)) {
597
+ return {
598
+ data: data,
599
+ dataType: 'typed-array'
600
+ };
601
+ }
515
602
 
516
- if (ArrayBuffer.isView(data)) {
517
- return {
518
- data,
519
- dataType: 'typed-array'
520
- };
521
- }
603
+ if (data instanceof _webglBuffer.default) {
604
+ return {
605
+ data: data.handle,
606
+ dataType: 'buffer'
607
+ };
608
+ }
609
+
610
+ if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
611
+ return {
612
+ data: data,
613
+ dataType: 'buffer'
614
+ };
615
+ }
522
616
 
523
- if (data instanceof _webglBuffer.default) {
524
617
  return {
525
- data: data.handle,
526
- dataType: 'buffer'
618
+ data: data,
619
+ dataType: 'browser-object'
527
620
  };
528
621
  }
529
-
530
- if (data instanceof WebGLBuffer) {
622
+ }, {
623
+ key: "_deduceParameters",
624
+ value: function _deduceParameters(opts) {
625
+ var format = opts.format,
626
+ data = opts.data;
627
+ var width = opts.width,
628
+ height = opts.height,
629
+ dataFormat = opts.dataFormat,
630
+ type = opts.type,
631
+ compressed = opts.compressed;
632
+ var textureFormat = _textureFormats.TEXTURE_FORMATS[format];
633
+ dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;
634
+ type = type || textureFormat && textureFormat.types[0];
635
+ compressed = compressed || textureFormat && textureFormat.compressed;
636
+
637
+ var _this$_deduceImageSiz = this._deduceImageSize(data, width, height);
638
+
639
+ width = _this$_deduceImageSiz.width;
640
+ height = _this$_deduceImageSiz.height;
531
641
  return {
532
- data,
533
- dataType: 'buffer'
642
+ dataFormat: dataFormat,
643
+ type: type,
644
+ compressed: compressed,
645
+ width: width,
646
+ height: height,
647
+ format: format,
648
+ data: data
534
649
  };
535
650
  }
651
+ }, {
652
+ key: "_deduceImageSize",
653
+ value: function _deduceImageSize(data, width, height) {
654
+ var size;
655
+
656
+ if (typeof ImageData !== 'undefined' && data instanceof ImageData) {
657
+ size = {
658
+ width: data.width,
659
+ height: data.height
660
+ };
661
+ } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {
662
+ size = {
663
+ width: data.naturalWidth,
664
+ height: data.naturalHeight
665
+ };
666
+ } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {
667
+ size = {
668
+ width: data.width,
669
+ height: data.height
670
+ };
671
+ } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {
672
+ size = {
673
+ width: data.width,
674
+ height: data.height
675
+ };
676
+ } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {
677
+ size = {
678
+ width: data.videoWidth,
679
+ height: data.videoHeight
680
+ };
681
+ } else if (!data) {
682
+ size = {
683
+ width: width >= 0 ? width : 1,
684
+ height: height >= 0 ? height : 1
685
+ };
686
+ } else {
687
+ size = {
688
+ width: width,
689
+ height: height
690
+ };
691
+ }
536
692
 
537
- return {
538
- data,
539
- dataType: 'browser-object'
540
- };
541
- }
542
-
543
- _deduceParameters(opts) {
544
- const {
545
- format,
546
- data
547
- } = opts;
548
- let {
549
- width,
550
- height,
551
- dataFormat,
552
- type,
553
- compressed
554
- } = opts;
555
- const textureFormat = _textureFormats.TEXTURE_FORMATS[format];
556
- dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;
557
- type = type || textureFormat && textureFormat.types[0];
558
- compressed = compressed || textureFormat && textureFormat.compressed;
559
- ({
560
- width,
561
- height
562
- } = this._deduceImageSize(data, width, height));
563
- return {
564
- dataFormat,
565
- type,
566
- compressed,
567
- width,
568
- height,
569
- format,
570
- data
571
- };
572
- }
693
+ (0, _api.assert)(size, 'Could not deduced texture size');
694
+ (0, _api.assert)(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');
695
+ (0, _api.assert)(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');
696
+ return size;
697
+ }
698
+ }, {
699
+ key: "getParameter",
700
+ value: function getParameter(pname) {
701
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
702
+ pname = (0, _constantsToKeys.getKeyValue)(this.gl, pname);
703
+ (0, _api.assert)(pname);
704
+ var parameters = this.constructor.PARAMETERS || {};
705
+ var parameter = parameters[pname];
706
+
707
+ if (parameter) {
708
+ var isWebgl2 = (0, _webglChecks.isWebGL2)(this.gl);
709
+ var parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
710
+
711
+ if (!parameterAvailable) {
712
+ var webgl1Default = parameter.webgl1;
713
+ var webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
714
+ var defaultValue = isWebgl2 ? webgl2Default : webgl1Default;
715
+ return defaultValue;
716
+ }
717
+ }
573
718
 
574
- _deduceImageSize(data, width, height) {
575
- let size;
719
+ return this._getParameter(pname, props);
720
+ }
721
+ }, {
722
+ key: "getParameters",
723
+ value: function getParameters() {
724
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
725
+ var parameters = options.parameters,
726
+ keys = options.keys;
727
+ var PARAMETERS = this.constructor.PARAMETERS || {};
728
+ var isWebgl2 = (0, _webglChecks.isWebGL2)(this.gl);
729
+ var values = {};
730
+ var parameterKeys = parameters || Object.keys(PARAMETERS);
731
+
732
+ var _iterator2 = _createForOfIteratorHelper(parameterKeys),
733
+ _step2;
734
+
735
+ try {
736
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
737
+ var pname = _step2.value;
738
+ var parameter = PARAMETERS[pname];
739
+ var parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
740
+
741
+ if (parameterAvailable) {
742
+ var key = keys ? (0, _constantsToKeys.getKey)(this.gl, pname) : pname;
743
+ values[key] = this.getParameter(pname, options);
744
+
745
+ if (keys && parameter.type === 'GLenum') {
746
+ values[key] = (0, _constantsToKeys.getKey)(this.gl, values[key]);
747
+ }
748
+ }
749
+ }
750
+ } catch (err) {
751
+ _iterator2.e(err);
752
+ } finally {
753
+ _iterator2.f();
754
+ }
576
755
 
577
- if (typeof ImageData !== 'undefined' && data instanceof ImageData) {
578
- size = {
579
- width: data.width,
580
- height: data.height
581
- };
582
- } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {
583
- size = {
584
- width: data.naturalWidth,
585
- height: data.naturalHeight
586
- };
587
- } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {
588
- size = {
589
- width: data.width,
590
- height: data.height
591
- };
592
- } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {
593
- size = {
594
- width: data.width,
595
- height: data.height
596
- };
597
- } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {
598
- size = {
599
- width: data.videoWidth,
600
- height: data.videoHeight
601
- };
602
- } else if (!data) {
603
- size = {
604
- width: width >= 0 ? width : 1,
605
- height: height >= 0 ? height : 1
606
- };
607
- } else {
608
- size = {
609
- width,
610
- height
611
- };
756
+ return values;
612
757
  }
758
+ }, {
759
+ key: "setParameter",
760
+ value: function setParameter(pname, value) {
761
+ pname = (0, _constantsToKeys.getKeyValue)(this.gl, pname);
762
+ (0, _api.assert)(pname);
763
+ var parameters = this.constructor.PARAMETERS || {};
764
+ var parameter = parameters[pname];
613
765
 
614
- (0, _utils.assert)(size, 'Could not deduced texture size');
615
- (0, _utils.assert)(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');
616
- (0, _utils.assert)(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');
617
- return size;
618
- }
766
+ if (parameter) {
767
+ var isWebgl2 = (0, _webglChecks.isWebGL2)(this.gl);
768
+ var parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
619
769
 
620
- getParameter(pname, props = {}) {
621
- pname = (0, _webglUtils.getKeyValue)(this.gl, pname);
622
- (0, _utils.assert)(pname);
623
- const parameters = this.constructor.PARAMETERS || {};
624
- const parameter = parameters[pname];
625
-
626
- if (parameter) {
627
- const isWebgl2 = (0, _gltools.isWebGL2)(this.gl);
628
- const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
629
-
630
- if (!parameterAvailable) {
631
- const webgl1Default = parameter.webgl1;
632
- const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
633
- const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;
634
- return defaultValue;
635
- }
636
- }
637
-
638
- return this._getParameter(pname, props);
639
- }
770
+ if (!parameterAvailable) {
771
+ throw new Error('Parameter not available on this platform');
772
+ }
640
773
 
641
- getParameters(options = {}) {
642
- const {
643
- parameters,
644
- keys
645
- } = options;
646
- const PARAMETERS = this.constructor.PARAMETERS || {};
647
- const isWebgl2 = (0, _gltools.isWebGL2)(this.gl);
648
- const values = {};
649
- const parameterKeys = parameters || Object.keys(PARAMETERS);
650
-
651
- for (const pname of parameterKeys) {
652
- const parameter = PARAMETERS[pname];
653
- const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
654
-
655
- if (parameterAvailable) {
656
- const key = keys ? (0, _webglUtils.getKey)(this.gl, pname) : pname;
657
- values[key] = this.getParameter(pname, options);
658
-
659
- if (keys && parameter.type === 'GLenum') {
660
- values[key] = (0, _webglUtils.getKey)(this.gl, values[key]);
774
+ if (parameter.type === 'GLenum') {
775
+ value = (0, _constantsToKeys.getKeyValue)(value);
661
776
  }
662
777
  }
663
- }
664
778
 
665
- return values;
666
- }
779
+ this._setParameter(pname, value);
667
780
 
668
- setParameter(pname, value) {
669
- pname = (0, _webglUtils.getKeyValue)(this.gl, pname);
670
- (0, _utils.assert)(pname);
671
- const parameters = this.constructor.PARAMETERS || {};
672
- const parameter = parameters[pname];
673
-
674
- if (parameter) {
675
- const isWebgl2 = (0, _gltools.isWebGL2)(this.gl);
676
- const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
677
-
678
- if (!parameterAvailable) {
679
- throw new Error('Parameter not available on this platform');
781
+ return this;
782
+ }
783
+ }, {
784
+ key: "setParameters",
785
+ value: function setParameters(parameters) {
786
+ for (var pname in parameters) {
787
+ this.setParameter(pname, parameters[pname]);
680
788
  }
681
789
 
682
- if (parameter.type === 'GLenum') {
683
- value = (0, _webglUtils.getKeyValue)(value);
684
- }
790
+ return this;
685
791
  }
792
+ }, {
793
+ key: "_getParameter",
794
+ value: function _getParameter(pname, props) {
795
+ switch (pname) {
796
+ case _constants.default.TEXTURE_WIDTH:
797
+ return this.width;
686
798
 
687
- this._setParameter(pname, value);
688
-
689
- return this;
690
- }
799
+ case _constants.default.TEXTURE_HEIGHT:
800
+ return this.height;
691
801
 
692
- setParameters(parameters) {
693
- for (const pname in parameters) {
694
- this.setParameter(pname, parameters[pname]);
802
+ default:
803
+ this.gl.bindTexture(this.target, this.handle);
804
+ var value = this.gl.getTexParameter(this.target, pname);
805
+ this.gl.bindTexture(this.target, null);
806
+ return value;
807
+ }
695
808
  }
809
+ }, {
810
+ key: "_setParameter",
811
+ value: function _setParameter(pname, param) {
812
+ this.gl.bindTexture(this.target, this.handle);
813
+ param = this._getNPOTParam(pname, param);
696
814
 
697
- return this;
698
- }
815
+ switch (pname) {
816
+ case _constants.default.TEXTURE_MIN_LOD:
817
+ case _constants.default.TEXTURE_MAX_LOD:
818
+ this.gl.texParameterf(this.target, pname, param);
819
+ break;
699
820
 
700
- _getParameter(pname, props) {
701
- switch (pname) {
702
- case _constants.default.TEXTURE_WIDTH:
703
- return this.width;
821
+ case _constants.default.TEXTURE_WIDTH:
822
+ case _constants.default.TEXTURE_HEIGHT:
823
+ (0, _api.assert)(false);
824
+ break;
704
825
 
705
- case _constants.default.TEXTURE_HEIGHT:
706
- return this.height;
826
+ default:
827
+ this.gl.texParameteri(this.target, pname, param);
828
+ break;
829
+ }
707
830
 
708
- default:
709
- this.gl.bindTexture(this.target, this.handle);
710
- const value = this.gl.getTexParameter(this.target, pname);
711
- this.gl.bindTexture(this.target, null);
712
- return value;
831
+ this.gl.bindTexture(this.target, null);
832
+ return this;
713
833
  }
714
- }
715
-
716
- _setParameter(pname, param) {
717
- this.gl.bindTexture(this.target, this.handle);
718
- param = this._getNPOTParam(pname, param);
719
-
720
- switch (pname) {
721
- case _constants.default.TEXTURE_MIN_LOD:
722
- case _constants.default.TEXTURE_MAX_LOD:
723
- this.gl.texParameterf(this.target, pname, param);
724
- break;
834
+ }, {
835
+ key: "_isNPOT",
836
+ value: function _isNPOT() {
837
+ if ((0, _webglChecks.isWebGL2)(this.gl)) {
838
+ return false;
839
+ }
725
840
 
726
- case _constants.default.TEXTURE_WIDTH:
727
- case _constants.default.TEXTURE_HEIGHT:
728
- (0, _utils.assert)(false);
729
- break;
841
+ if (!this.width || !this.height) {
842
+ return false;
843
+ }
730
844
 
731
- default:
732
- this.gl.texParameteri(this.target, pname, param);
733
- break;
845
+ return !(0, _api.isPowerOfTwo)(this.width) || !(0, _api.isPowerOfTwo)(this.height);
734
846
  }
847
+ }, {
848
+ key: "_updateForNPOT",
849
+ value: function _updateForNPOT(parameters) {
850
+ if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {
851
+ parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;
852
+ }
735
853
 
736
- this.gl.bindTexture(this.target, null);
737
- return this;
738
- }
854
+ if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {
855
+ parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;
856
+ }
739
857
 
740
- _isNPOT() {
741
- if ((0, _gltools.isWebGL2)(this.gl)) {
742
- return false;
858
+ if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {
859
+ parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;
860
+ }
743
861
  }
862
+ }, {
863
+ key: "_getNPOTParam",
864
+ value: function _getNPOTParam(pname, param) {
865
+ if (this._isNPOT()) {
866
+ switch (pname) {
867
+ case _constants.default.TEXTURE_MIN_FILTER:
868
+ if (NPOT_MIN_FILTERS.indexOf(param) === -1) {
869
+ param = _constants.default.LINEAR;
870
+ }
744
871
 
745
- if (!this.width || !this.height) {
746
- return false;
747
- }
872
+ break;
748
873
 
749
- return !(0, _utils.isPowerOfTwo)(this.width) || !(0, _utils.isPowerOfTwo)(this.height);
750
- }
874
+ case _constants.default.TEXTURE_WRAP_S:
875
+ case _constants.default.TEXTURE_WRAP_T:
876
+ if (param !== _constants.default.CLAMP_TO_EDGE) {
877
+ param = _constants.default.CLAMP_TO_EDGE;
878
+ }
751
879
 
752
- _updateForNPOT(parameters) {
753
- if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {
754
- parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;
755
- }
880
+ break;
756
881
 
757
- if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {
758
- parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;
759
- }
882
+ default:
883
+ break;
884
+ }
885
+ }
760
886
 
761
- if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {
762
- parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;
887
+ return param;
763
888
  }
764
- }
889
+ }], [{
890
+ key: "isSupported",
891
+ value: function isSupported(device, options) {
892
+ var webglDevice = _webglDevice.default.attach(device);
765
893
 
766
- _getNPOTParam(pname, param) {
767
- if (this._isNPOT()) {
768
- switch (pname) {
769
- case _constants.default.TEXTURE_MIN_FILTER:
770
- if (NPOT_MIN_FILTERS.indexOf(param) === -1) {
771
- param = _constants.default.LINEAR;
772
- }
894
+ var format = options.format,
895
+ linearFiltering = options.linearFiltering;
896
+ var supported = true;
773
897
 
774
- break;
775
-
776
- case _constants.default.TEXTURE_WRAP_S:
777
- case _constants.default.TEXTURE_WRAP_T:
778
- if (param !== _constants.default.CLAMP_TO_EDGE) {
779
- param = _constants.default.CLAMP_TO_EDGE;
780
- }
781
-
782
- break;
783
-
784
- default:
785
- break;
898
+ if (format) {
899
+ supported = supported && (0, _textureFormats.isFormatSupported)(webglDevice.gl, format);
900
+ supported = supported && (!linearFiltering || (0, _textureFormats.isLinearFilteringSupported)(webglDevice.gl, format));
786
901
  }
787
- }
788
902
 
789
- return param;
790
- }
791
-
792
- }
903
+ return supported;
904
+ }
905
+ }]);
906
+ return WEBGLTexture;
907
+ }(_api.Texture);
793
908
 
794
909
  exports.default = WEBGLTexture;
795
910
  //# sourceMappingURL=texture.js.map