@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
@@ -1,18 +1,23 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {log, assertWebGLContext} from '@luma.gl/gltools';
3
- import Texture from './texture';
3
+ import Texture, {TextureProps} from './texture';
4
4
 
5
- const FACES = [
6
- GL.TEXTURE_CUBE_MAP_POSITIVE_X,
7
- GL.TEXTURE_CUBE_MAP_NEGATIVE_X,
8
- GL.TEXTURE_CUBE_MAP_POSITIVE_Y,
9
- GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,
10
- GL.TEXTURE_CUBE_MAP_POSITIVE_Z,
11
- GL.TEXTURE_CUBE_MAP_NEGATIVE_Z
12
- ];
5
+ export type TextureCubeProps = TextureProps & {
6
+ };
13
7
 
14
8
  export default class TextureCube extends Texture {
15
- constructor(gl, props = {}) {
9
+ static FACES: number[] = [
10
+ GL.TEXTURE_CUBE_MAP_POSITIVE_X,
11
+ GL.TEXTURE_CUBE_MAP_NEGATIVE_X,
12
+ GL.TEXTURE_CUBE_MAP_POSITIVE_Y,
13
+ GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,
14
+ GL.TEXTURE_CUBE_MAP_POSITIVE_Z,
15
+ GL.TEXTURE_CUBE_MAP_NEGATIVE_Z
16
+ ];
17
+
18
+ props;
19
+
20
+ constructor(gl: WebGLRenderingContext, props?: TextureCubeProps) {
16
21
  assertWebGLContext(gl);
17
22
 
18
23
  super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));
@@ -22,11 +27,15 @@ export default class TextureCube extends Texture {
22
27
  Object.seal(this);
23
28
  }
24
29
 
25
- initialize(props = {}) {
30
+ get [Symbol.toStringTag](): string {
31
+ return 'TextureCube';
32
+ }
33
+
34
+ initialize(props?: TextureCubeProps): this {
26
35
  const {mipmaps = true, parameters = {}} = props;
27
36
 
28
37
  // Store props for accessors
29
- this.opts = props;
38
+ this.props = props;
30
39
 
31
40
  // @ts-ignore
32
41
  this.setCubeMapImageData(props).then(() => {
@@ -43,22 +52,33 @@ export default class TextureCube extends Texture {
43
52
  return this;
44
53
  }
45
54
 
46
- subImage({face, data, x = 0, y = 0, mipmapLevel = 0}) {
55
+ subImage(options: {face: any; data: any; x?: number; y?: number; mipmapLevel?: number}): any {
56
+ const {face, data, x = 0, y = 0, mipmapLevel = 0} = options;
47
57
  // @ts-ignore TODO - is this a bug?
48
58
  return this._subImage({target: face, data, x, y, mipmapLevel});
49
59
  }
50
60
 
51
61
  /* eslint-disable max-statements, max-len */
52
- async setCubeMapImageData({
53
- width,
54
- height,
55
- pixels,
56
- data,
57
- border = 0,
58
- format = GL.RGBA,
59
- type = GL.UNSIGNED_BYTE
60
- }) {
62
+ async setCubeMapImageData(options: {
63
+ width: any;
64
+ height: any;
65
+ pixels: any;
66
+ data: any;
67
+ border?: number;
68
+ format?: any;
69
+ type?: any;
70
+ }): Promise<void>{
61
71
  const {gl} = this;
72
+
73
+ const {
74
+ width,
75
+ height,
76
+ pixels,
77
+ data,
78
+ border = 0,
79
+ format = GL.RGBA,
80
+ type = GL.UNSIGNED_BYTE
81
+ } = options;
62
82
  const imageDataMap = pixels || data;
63
83
 
64
84
  // pixel data (imageDataMap) is an Object from Face to Image or Promise.
@@ -75,7 +95,7 @@ export default class TextureCube extends Texture {
75
95
  // ... }
76
96
 
77
97
  const resolvedFaces = await Promise.all(
78
- FACES.map(face => {
98
+ TextureCube.FACES.map((face) => {
79
99
  const facePixels = imageDataMap[face];
80
100
  return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
81
101
  })
@@ -83,8 +103,8 @@ export default class TextureCube extends Texture {
83
103
 
84
104
  this.bind();
85
105
 
86
- FACES.forEach((face, index) => {
87
- if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {
106
+ TextureCube.FACES.forEach((face, index) => {
107
+ if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {
88
108
  // If the user provides multiple LODs, then automatic mipmap
89
109
  // generation generateMipmap() should be disabled to avoid overwritting them.
90
110
  log.warn(`${this.id} has mipmap and multiple LODs.`)();
@@ -122,7 +142,7 @@ export default class TextureCube extends Texture {
122
142
 
123
143
  this.bind();
124
144
  if (imageData instanceof Promise) {
125
- imageData.then(resolvedImageData =>
145
+ imageData.then((resolvedImageData) =>
126
146
  this.setImageDataForFace(
127
147
  Object.assign({}, options, {
128
148
  face,
@@ -140,5 +160,3 @@ export default class TextureCube extends Texture {
140
160
  return this;
141
161
  }
142
162
  }
143
-
144
- TextureCube.FACES = FACES;
@@ -8,8 +8,16 @@ import {isWebGL2} from '@luma.gl/gltools';
8
8
  // const SRGB = 'EXT_sRGB';
9
9
  // const DEPTH = 'WEBGL_depth_texture';
10
10
 
11
+ type TextureFormat = {
12
+ dataFormat: number;
13
+ types: number[];
14
+ gl2?: boolean;
15
+ gl1?: boolean;
16
+ compressed?: boolean;
17
+ }
18
+
11
19
  // Legal combinations for internalFormat, format and type
12
- export const TEXTURE_FORMATS = {
20
+ export const TEXTURE_FORMATS: Record<string, TextureFormat> = {
13
21
  // Unsized texture format - more performance
14
22
  [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},
15
23
  // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported
@@ -1,9 +1,9 @@
1
1
  import GL from '@luma.gl/constants';
2
- import {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';
2
+ import {isWebGL2, assertWebGL2Context, getWebGL2Context, withParameters, log} from '@luma.gl/gltools';
3
3
  import {global} from 'probe.gl/env';
4
-
5
- import Resource from './resource';
6
- import Buffer from './buffer';
4
+ import {getKey, getKeyValue} from '../webgl-utils';
5
+ import {Texture, TextureProps} from '@luma.gl/api';
6
+ import Buffer from './webgl-buffer';
7
7
  import {
8
8
  TEXTURE_FORMATS,
9
9
  DATA_FORMAT_CHANNELS,
@@ -11,8 +11,9 @@ import {
11
11
  isFormatSupported,
12
12
  isLinearFilteringSupported
13
13
  } from './texture-formats';
14
- import {assert} from '../utils/assert';
15
- import {uid, isPowerOfTwo} from '../utils/utils';
14
+ import {uid, isPowerOfTwo, assert} from '../utils';
15
+
16
+ export {TextureProps};
16
17
 
17
18
  // Supported min filters for NPOT texture.
18
19
  const NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];
@@ -21,9 +22,42 @@ const NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];
21
22
  // Note (Tarek): Do we really need to support this API?
22
23
  const WebGLBuffer = global.WebGLBuffer || function WebGLBuffer() {};
23
24
 
24
- export default class Texture extends Resource {
25
- static isSupported(gl, opts = {}) {
26
- const {format, linearFiltering} = opts;
25
+ export default class WEBGLTexture extends Texture {
26
+ readonly MAX_ATTRIBUTES: number;
27
+
28
+ readonly gl: WebGLRenderingContext;
29
+ readonly gl2: WebGL2RenderingContext | null;
30
+ readonly handle: WebGLTexture;
31
+
32
+ data;
33
+
34
+ width: number;
35
+ height: number;
36
+ depth: number;
37
+
38
+ format = undefined;
39
+ type = undefined;
40
+ dataFormat = undefined;
41
+ border = undefined;
42
+ mipmaps = undefined;
43
+
44
+ target: number;
45
+ textureUnit: number = undefined;
46
+
47
+ // Program.draw() checks the loaded flag of all textures to avoid
48
+ // Textures that are still loading from promises
49
+ // Set to true as soon as texture has been initialized with valid data
50
+ loaded = false;
51
+ _video;
52
+
53
+ static isSupported(
54
+ gl: WebGLRenderingContext,
55
+ options?: {
56
+ format: any;
57
+ linearFiltering: any;
58
+ }
59
+ ): boolean {
60
+ const {format, linearFiltering} = options;
27
61
  let supported = true;
28
62
  if (format) {
29
63
  supported = supported && isFormatSupported(gl, format);
@@ -42,7 +76,9 @@ export default class Texture extends Resource {
42
76
  // you must always bind it as a GL_TEXTURE_2D;
43
77
  // attempting to bind it as GL_TEXTURE_1D will give rise to an error
44
78
  // (while run-time).
45
- constructor(gl, props) {
79
+ constructor(gl: WebGLRenderingContext, props: TextureProps) {
80
+ super(gl as any, props);
81
+
46
82
  const {
47
83
  id = uid('texture'),
48
84
  handle,
@@ -50,8 +86,6 @@ export default class Texture extends Resource {
50
86
  // , magFilter, minFilter, wrapS, wrapT
51
87
  } = props;
52
88
 
53
- super(gl, {id, handle});
54
-
55
89
  this.target = target;
56
90
  this.textureUnit = undefined;
57
91
 
@@ -69,18 +103,32 @@ export default class Texture extends Resource {
69
103
  this.border = undefined;
70
104
  this.textureUnit = undefined;
71
105
  this.mipmaps = undefined;
106
+
107
+ this.gl = gl;
108
+ this.gl2 = getWebGL2Context(gl);
109
+ this.handle = this.props.handle || this.gl.createTexture();
72
110
  }
73
111
 
74
- toString() {
112
+ destroy(): void {
113
+ if (this.handle) {
114
+ this.gl.deleteTexture(this.handle);
115
+ this.removeStats();
116
+ this.trackDeallocatedMemory('Texture');
117
+ // @ts-expect-error
118
+ this.handle = null;
119
+ }
120
+ }
121
+
122
+ toString(): string {
75
123
  return `Texture(${this.id},${this.width}x${this.height})`;
76
124
  }
77
125
 
78
126
  /* eslint-disable max-len, max-statements */
79
- initialize(props = {}) {
127
+ initialize(props: TextureProps = {}): this {
80
128
  let data = props.data;
81
129
 
82
130
  if (data instanceof Promise) {
83
- data.then(resolvedImageData =>
131
+ data.then((resolvedImageData) =>
84
132
  this.initialize(
85
133
  Object.assign({}, props, {
86
134
  pixels: resolvedImageData,
@@ -191,7 +239,7 @@ export default class Texture extends Resource {
191
239
  return this;
192
240
  }
193
241
 
194
- update() {
242
+ update(): this {
195
243
  if (this._video) {
196
244
  const {video, parameters, lastTime} = this._video;
197
245
  // @ts-ignore
@@ -211,7 +259,7 @@ export default class Texture extends Resource {
211
259
 
212
260
  // If size has changed, reinitializes with current format
213
261
  // note clears image and mipmaps
214
- resize({height, width, mipmaps = false}) {
262
+ resize({height, width, mipmaps = false}): this {
215
263
  if (width !== this.width || height !== this.height) {
216
264
  return this.initialize({
217
265
  width,
@@ -227,7 +275,7 @@ export default class Texture extends Resource {
227
275
  }
228
276
 
229
277
  // Call to regenerate mipmaps after modifying texture(s)
230
- generateMipmap(params = {}) {
278
+ generateMipmap(params = {}): this {
231
279
  if (this._isNPOT()) {
232
280
  log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();
233
281
  return this;
@@ -266,7 +314,7 @@ export default class Texture extends Resource {
266
314
  */
267
315
  /* eslint-disable max-len, max-statements, complexity */
268
316
  setImageData(options) {
269
- this._trackDeallocatedMemory('Texture');
317
+ this.trackDeallocatedMemory('Texture');
270
318
 
271
319
  const {
272
320
  target = this.target,
@@ -367,13 +415,13 @@ export default class Texture extends Resource {
367
415
  });
368
416
 
369
417
  if (data && data.byteLength) {
370
- this._trackAllocatedMemory(data.byteLength, 'Texture');
418
+ this.trackAllocatedMemory(data.byteLength, 'Texture');
371
419
  } else {
372
420
  // NOTE(Tarek): Default to RGBA bytes
373
421
  const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;
374
422
  const channelSize = TYPE_SIZES[this.type] || 1;
375
423
 
376
- this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');
424
+ this.trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');
377
425
  }
378
426
 
379
427
  this.loaded = true;
@@ -504,7 +552,7 @@ export default class Texture extends Resource {
504
552
  return null;
505
553
  }
506
554
 
507
- getActiveUnit() {
555
+ getActiveUnit(): number {
508
556
  return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;
509
557
  }
510
558
 
@@ -660,7 +708,7 @@ export default class Texture extends Resource {
660
708
  }
661
709
 
662
710
  // eslint-disable-next-line complexity
663
- _deduceImageSize(data, width, height) {
711
+ _deduceImageSize(data, width, height): {width: number, height: number} {
664
712
  let size;
665
713
 
666
714
  if (typeof ImageData !== 'undefined' && data instanceof ImageData) {
@@ -694,16 +742,135 @@ export default class Texture extends Resource {
694
742
 
695
743
  // RESOURCE METHODS
696
744
 
697
- _createHandle() {
698
- return this.gl.createTexture();
699
- }
700
-
701
- _deleteHandle() {
702
- this.gl.deleteTexture(this.handle);
703
- this._trackDeallocatedMemory('Texture');
704
- }
705
-
706
- _getParameter(pname) {
745
+ /**
746
+ * Query a Resource parameter
747
+ *
748
+ * @param name
749
+ * @return param
750
+ */
751
+ getParameter(pname: number, props = {}): any {
752
+ pname = getKeyValue(this.gl, pname);
753
+ assert(pname);
754
+
755
+ // @ts-ignore
756
+ const parameters = this.constructor.PARAMETERS || {};
757
+
758
+ // Use parameter definitions to handle unsupported parameters
759
+ const parameter = parameters[pname];
760
+ if (parameter) {
761
+ const isWebgl2 = isWebGL2(this.gl);
762
+
763
+ // Check if we can query for this parameter
764
+ const parameterAvailable =
765
+ (!('webgl2' in parameter) || isWebgl2) &&
766
+ (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
767
+
768
+ if (!parameterAvailable) {
769
+ const webgl1Default = parameter.webgl1;
770
+ const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
771
+ const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;
772
+ return defaultValue;
773
+ }
774
+ }
775
+
776
+ // If unknown parameter - Could be a valid parameter not covered by PARAMS
777
+ // Attempt to query for it and let WebGL report errors
778
+ return this._getParameter(pname, props);
779
+ }
780
+
781
+ // Many resources support a getParameter call -
782
+ // getParameters will get all parameters - slow but useful for debugging
783
+ // eslint-disable-next-line complexity
784
+ getParameters(options: {parameters?, keys?} = {}) {
785
+ const {parameters, keys} = options;
786
+
787
+ // Get parameter definitions for this Resource
788
+ // @ts-ignore
789
+ const PARAMETERS = this.constructor.PARAMETERS || {};
790
+
791
+ const isWebgl2 = isWebGL2(this.gl);
792
+
793
+ const values = {};
794
+
795
+ // Query all parameters if no list provided
796
+ const parameterKeys = parameters || Object.keys(PARAMETERS);
797
+
798
+ // WEBGL limits
799
+ for (const pname of parameterKeys) {
800
+ const parameter = PARAMETERS[pname];
801
+
802
+ // Check if this parameter is available on this platform
803
+ const parameterAvailable =
804
+ parameter &&
805
+ (!('webgl2' in parameter) || isWebgl2) &&
806
+ (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
807
+
808
+ if (parameterAvailable) {
809
+ const key = keys ? getKey(this.gl, pname) : pname;
810
+ values[key] = this.getParameter(pname, options);
811
+ if (keys && parameter.type === 'GLenum') {
812
+ values[key] = getKey(this.gl, values[key]);
813
+ }
814
+ }
815
+ }
816
+
817
+ return values;
818
+ }
819
+
820
+ /**
821
+ * Update a Resource setting
822
+ *
823
+ * @todo - cache parameter to avoid issuing WebGL calls?
824
+ *
825
+ * @param {string} pname - parameter (GL constant, value or key)
826
+ * @param {GLint|GLfloat|GLenum} value
827
+ * @return {Resource} returns self to enable chaining
828
+ */
829
+ setParameter(pname, value) {
830
+ pname = getKeyValue(this.gl, pname);
831
+ assert(pname);
832
+
833
+ // @ts-ignore
834
+ const parameters = this.constructor.PARAMETERS || {};
835
+
836
+ const parameter = parameters[pname];
837
+ if (parameter) {
838
+ const isWebgl2 = isWebGL2(this.gl);
839
+
840
+ // Check if this parameter is available on this platform
841
+ const parameterAvailable =
842
+ (!('webgl2' in parameter) || isWebgl2) &&
843
+ (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
844
+
845
+ if (!parameterAvailable) {
846
+ throw new Error('Parameter not available on this platform');
847
+ }
848
+
849
+ // Handle string keys
850
+ if (parameter.type === 'GLenum') {
851
+ // @ts-expect-error
852
+ value = getKeyValue(value);
853
+ }
854
+ }
855
+
856
+ // If unknown parameter - Could be a valid parameter not covered by PARAMS
857
+ // attempt to set it and let WebGL report errors
858
+ this._setParameter(pname, value);
859
+ return this;
860
+ }
861
+
862
+ /*
863
+ * Batch update resource parameters
864
+ * Assumes the subclass supports a setParameter call
865
+ */
866
+ setParameters(parameters) {
867
+ for (const pname in parameters) {
868
+ this.setParameter(pname, parameters[pname]);
869
+ }
870
+ return this;
871
+ }
872
+
873
+ _getParameter(pname: number, props?): any {
707
874
  switch (pname) {
708
875
  case GL.TEXTURE_WIDTH:
709
876
  return this.width;
@@ -717,7 +884,7 @@ export default class Texture extends Resource {
717
884
  }
718
885
  }
719
886
 
720
- _setParameter(pname, param) {
887
+ _setParameter(pname: number, param: number): this {
721
888
  this.gl.bindTexture(this.target, this.handle);
722
889
 
723
890
  // NOTE: Apply NPOT workaround
@@ -729,7 +896,7 @@ export default class Texture extends Resource {
729
896
  switch (pname) {
730
897
  case GL.TEXTURE_MIN_LOD:
731
898
  case GL.TEXTURE_MAX_LOD:
732
- this.gl.texParameterf(this.handle, pname, param);
899
+ this.gl.texParameterf(this.target, pname, param);
733
900
  break;
734
901
 
735
902
  case GL.TEXTURE_WIDTH:
@@ -746,7 +913,7 @@ export default class Texture extends Resource {
746
913
  return this;
747
914
  }
748
915
 
749
- _isNPOT() {
916
+ _isNPOT(): boolean {
750
917
  if (isWebGL2(this.gl)) {
751
918
  // NPOT restriction is only for WebGL1
752
919
  return false;
@@ -774,7 +941,7 @@ export default class Texture extends Resource {
774
941
  }
775
942
  }
776
943
 
777
- _getNPOTParam(pname, param) {
944
+ _getNPOTParam(pname: number, param: number): number {
778
945
  if (this._isNPOT()) {
779
946
  switch (pname) {
780
947
  case GL.TEXTURE_MIN_FILTER:
@@ -1,27 +1,35 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';
3
- import Resource from './resource';
4
- import Buffer from './buffer';
5
- import {isObjectEmpty} from '../utils/utils';
6
-
7
- // NOTE: The `bindOnUse` flag is a major workaround:
8
- // See https://github.com/KhronosGroup/WebGL/issues/2346
9
-
10
- export default class TransformFeedback extends Resource {
11
- static isSupported(gl) {
3
+ import WebGLResource, {ResourceProps} from './webgl-resource';
4
+ import Buffer from './webgl-buffer';
5
+ import {isObjectEmpty} from '../utils';
6
+
7
+ export type TransformFeedbackProps = ResourceProps & {
8
+ [key: string]: any;
9
+ };
10
+
11
+ export default class TransformFeedback extends WebGLResource<TransformFeedbackProps> {
12
+ buffers = {};
13
+ unused = {};
14
+ configuration = null;
15
+ // NOTE: The `bindOnUse` flag is a major workaround:
16
+ // See https://github.com/KhronosGroup/WebGL/issues/2346
17
+ bindOnUse = true;
18
+
19
+ static isSupported(gl: WebGLRenderingContext): boolean {
12
20
  return isWebGL2(gl);
13
21
  }
14
22
 
15
- constructor(gl, props = {}) {
23
+ constructor(gl: WebGLRenderingContext, props: TransformFeedbackProps = {}) {
24
+ super(gl, props, {} as any);
16
25
  assertWebGL2Context(gl);
17
- super(gl, props);
18
26
 
19
27
  this.initialize(props);
20
28
  this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);
21
29
  Object.seal(this);
22
30
  }
23
31
 
24
- initialize(props = {}) {
32
+ initialize(props?: TransformFeedbackProps): this {
25
33
  this.buffers = {};
26
34
  this.unused = {};
27
35
  this.configuration = null;
@@ -36,7 +44,7 @@ export default class TransformFeedback extends Resource {
36
44
  return this;
37
45
  }
38
46
 
39
- setProps(props) {
47
+ setProps(props: TransformFeedbackProps) {
40
48
  if ('program' in props) {
41
49
  this.configuration = props.program && props.program.configuration;
42
50
  }
@@ -151,7 +159,7 @@ export default class TransformFeedback extends Resource {
151
159
  }
152
160
  }
153
161
 
154
- _bindBuffer(index, buffer, byteOffset = 0, byteSize) {
162
+ _bindBuffer(index, buffer, byteOffset = 0, byteSize?) {
155
163
  const handle = buffer && buffer.handle;
156
164
  if (!handle || byteSize === undefined) {
157
165
  // @ts-ignore
@@ -1,8 +1,7 @@
1
1
  // @ts-nocheck
2
2
 
3
- /* eslint-disable camelcase */
4
3
  import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
5
- import {assert} from '../utils/assert';
4
+ import {assert} from '../utils';
6
5
 
7
6
  const ERR_ARGUMENT = 'UniformBufferLayout illegal argument';
8
7
 
@@ -11,8 +10,10 @@ const GL_FLOAT = 0x1406;
11
10
  const GL_INT = 0x1404;
12
11
  const GL_UNSIGNED_INT = 0x1405;
13
12
 
14
- // Std140 layout for uniforms
15
- export default class UniformBufferLayout {
13
+ /**
14
+ * Std140 layout for uniforms
15
+ */
16
+ export default class UniformBufferLayout {
16
17
  constructor(layout) {
17
18
  this.layout = {};
18
19
  this.size = 0;
@@ -34,7 +35,7 @@ export default class UniformBufferLayout {
34
35
  }
35
36
 
36
37
  // Get number of bytes needed for buffer allocation
37
- getBytes() {
38
+ getBytes(): number {
38
39
  return this.size * 4;
39
40
  }
40
41
 
@@ -44,7 +45,10 @@ export default class UniformBufferLayout {
44
45
  }
45
46
 
46
47
  // Get offset and data for one object (for bufferSubData)
47
- getSubData(index) {
48
+ getSubData(index): {
49
+ data: any;
50
+ offset: any;
51
+ } {
48
52
  let data;
49
53
  let offset;
50
54
  if (index === undefined) {