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

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