@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
@@ -4,17 +4,24 @@ import Accessor from './accessor';
4
4
  import {isWebGL2} from '@luma.gl/gltools';
5
5
  import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
6
6
 
7
- export default class ProgramConfiguration {
7
+ /**
8
+ * is a mechanism for taking a program object and querying information
9
+ * about it, so as to be able to interface and interact with it.
10
+ * For example, if there is a uniform, you may need to query its
11
+ * location so that you can set its value.
12
+ */
13
+ export default class ProgramConfiguration {
14
+ id: string;
15
+ attributeInfos = [];
16
+ attributeInfosByName = {};
17
+ // Locations may not be contiguous the case of matrix attributes
18
+ // so keep a separate location->attribute map.
19
+ attributeInfosByLocation = [];
20
+ varyingInfos = [];
21
+ varyingInfosByName = {};
22
+
8
23
  constructor(program) {
9
24
  this.id = program.id;
10
- this.attributeInfos = [];
11
- this.attributeInfosByName = {};
12
-
13
- // Locations may not be contiguous the case of matrix attributes
14
- // so keep a separate location->attribute map.
15
- this.attributeInfosByLocation = [];
16
- this.varyingInfos = [];
17
- this.varyingInfosByName = {};
18
25
  Object.seal(this);
19
26
  this._readAttributesFromProgram(program);
20
27
  this._readVaryingsFromProgram(program);
@@ -48,12 +55,12 @@ export default class ProgramConfiguration {
48
55
  }
49
56
 
50
57
  getVaryingIndex(locationOrName) {
51
- const varying = this.getVaryingInfo();
58
+ const varying = this.getVaryingInfo(locationOrName);
52
59
  return varying ? varying.location : -1;
53
60
  }
54
61
 
55
62
  getVaryingAccessor(locationOrName) {
56
- const varying = this.getVaryingInfo();
63
+ const varying = this.getVaryingInfo(locationOrName);
57
64
  return varying ? varying.accessor : null;
58
65
  }
59
66
 
@@ -1,51 +1,66 @@
1
1
  import GL from '@luma.gl/constants';
2
2
 
3
- import Resource from './resource';
3
+ import WebGLResource, {ResourceProps} from './webgl-resource';
4
4
  import Texture from './texture';
5
5
  import Framebuffer from './framebuffer';
6
6
  import {parseUniformName, getUniformSetter} from './uniforms';
7
- import {VertexShader, FragmentShader} from './shader';
7
+ import {VertexShader, FragmentShader} from './webgl-shader';
8
8
  import ProgramConfiguration from './program-configuration';
9
9
  import {copyUniform, checkUniformValues} from './uniforms';
10
10
 
11
11
  import {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';
12
- import {getKey} from '../webgl-utils/constants-to-keys';
12
+ import {getKey} from '../webgl-utils';
13
13
  import {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';
14
- import {assert} from '../utils/assert';
15
- import {uid} from '../utils/utils';
14
+ import {uid, assert} from '../utils';
16
15
 
17
16
  const LOG_PROGRAM_PERF_PRIORITY = 4;
18
17
 
19
18
  const GL_SEPARATE_ATTRIBS = 0x8c8d;
20
19
 
21
- const V6_DEPRECATED_METHODS = [
22
- 'setVertexArray',
23
- 'setAttributes',
24
- 'setBuffers',
25
- 'unsetBuffers',
26
-
27
- 'use',
28
- 'getUniformCount',
29
- 'getUniformInfo',
30
- 'getUniformLocation',
31
- 'getUniformValue',
32
-
33
- 'getVarying',
34
- 'getFragDataLocation',
35
- 'getAttachedShaders',
36
- 'getAttributeCount',
37
- 'getAttributeLocation',
38
- 'getAttributeInfo'
39
- ];
40
-
41
- export default class Program extends Resource {
42
- constructor(gl, props = {}) {
43
- super(gl, props);
20
+ export type ProgramProps = ResourceProps & {
21
+ hash?;
22
+ vs?;
23
+ fs?;
24
+ varyings?;
25
+ bufferMode?: number;
26
+ }
44
27
 
45
- this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);
28
+ export type ProgramDrawOptions = {
29
+ logPriority?: any;
30
+ drawMode?: any;
31
+ vertexCount: any;
32
+ offset?: number;
33
+ start?: any;
34
+ end?: any;
35
+ isIndexed?: boolean;
36
+ indexType?: any;
37
+ instanceCount?: number;
38
+ isInstanced?: boolean;
39
+ vertexArray?: any;
40
+ transformFeedback?: any;
41
+ framebuffer?: any;
42
+ parameters?: {};
43
+ uniforms?: any;
44
+ samplers?: any;
45
+ };
46
+
47
+ export default class Program extends WebGLResource<ProgramProps> {
48
+ configuration: ProgramConfiguration;
49
+ // Experimental flag to avoid deleting Program object while it is cached
50
+ _isCached = false;
51
+ _textureIndexCounter = 0;
52
+ hash: string;; // Used by ProgramManager
53
+ vs;
54
+ fs;
55
+ uniforms: {};
56
+ _textureUniforms: {};
57
+ varyings: {};
58
+ _uniformCount = 0;
59
+ _uniformSetters: {};
60
+
61
+ constructor(gl: WebGLRenderingContext, props: ProgramProps = {}) {
62
+ super(gl, props, {} as any);
46
63
 
47
- // Experimental flag to avoid deleting Program object while it is cached
48
- this._isCached = false;
49
64
 
50
65
  this.initialize(props);
51
66
 
@@ -54,7 +69,7 @@ export default class Program extends Resource {
54
69
  this._setId(props.id);
55
70
  }
56
71
 
57
- initialize(props = {}) {
72
+ initialize(props: ProgramProps = {}) {
58
73
  const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;
59
74
 
60
75
  this.hash = hash || ''; // Used by ProgramManager
@@ -103,7 +118,8 @@ export default class Program extends Resource {
103
118
 
104
119
  // A good thing about the WebGL API is that there are so many ways to draw things ;)
105
120
  // This function unifies those ways into a single call using common parameters with sane defaults
106
- draw({
121
+ draw(options: ProgramDrawOptions): boolean {
122
+ const {
107
123
  logPriority, // Probe log priority, enables Model to do more integrated logging
108
124
 
109
125
  drawMode = GL.TRIANGLES,
@@ -119,13 +135,15 @@ export default class Program extends Resource {
119
135
  vertexArray = null,
120
136
  transformFeedback,
121
137
  framebuffer,
122
- parameters = {},
123
138
 
124
139
  // Deprecated
125
140
  uniforms,
126
141
  samplers
127
- }) {
128
- if (uniforms || samplers) {
142
+ } = options;
143
+
144
+ let {parameters = {}} = options;
145
+
146
+ if (uniforms || samplers) {
129
147
  // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)
130
148
  log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();
131
149
  this.setUniforms(uniforms || {});
@@ -358,10 +376,12 @@ export default class Program extends Resource {
358
376
  const info = this.gl.getActiveUniform(this.handle, i);
359
377
  const {name} = parseUniformName(info.name);
360
378
  let location = gl.getUniformLocation(this.handle, name);
379
+ // @ts-expect-error
361
380
  this._uniformSetters[name] = getUniformSetter(gl, location, info);
362
381
  if (info.size > 1) {
363
382
  for (let l = 0; l < info.size; l++) {
364
383
  location = gl.getUniformLocation(this.handle, `${name}[${l}]`);
384
+ // @ts-expect-error
365
385
  this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);
366
386
  }
367
387
  }
@@ -1,8 +1,8 @@
1
1
  // WebGL2 Query (also handles disjoint timer extensions)
2
- import Resource from './resource';
3
- import {FEATURES, hasFeatures} from '../features';
4
2
  import {isWebGL2} from '@luma.gl/gltools';
5
- import {assert} from '../utils/assert';
3
+ import WebGLResource, {ResourceProps} from './webgl-resource';
4
+ import {FEATURES, hasFeatures} from '../features';
5
+ import {assert} from '../utils';
6
6
 
7
7
  const GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.
8
8
  const GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.
@@ -14,17 +14,23 @@ const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written
14
14
  const GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)
15
15
  const GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version
16
16
 
17
- export default class Query extends Resource {
17
+ export type QueryProps = ResourceProps & {
18
+ };
19
+
20
+ /**
21
+ * Asynchronous queries for different kinds of information
22
+ */
23
+ export default class Query extends WebGLResource<QueryProps> {
18
24
  // Returns true if Query is supported by the WebGL implementation
19
25
  // Can also check whether timestamp queries are available.
20
- static isSupported(gl, opts = []) {
26
+ static isSupported(gl: WebGLRenderingContext, options: string[] = []): boolean {
21
27
  const webgl2 = isWebGL2(gl);
22
28
 
23
29
  // Initial value
24
30
  const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);
25
31
  let supported = webgl2 || hasTimerQuery;
26
32
 
27
- for (const key of opts) {
33
+ for (const key of options) {
28
34
  switch (key) {
29
35
  case 'queries':
30
36
  supported = supported && webgl2;
@@ -40,13 +46,13 @@ export default class Query extends Resource {
40
46
  return supported;
41
47
  }
42
48
 
43
- // Create a query class
44
- constructor(gl, opts = {}) {
45
- super(gl, opts);
49
+ target = null;
50
+ _queryPending = false;
51
+ _pollingPromise = null;
46
52
 
47
- this.target = null;
48
- this._queryPending = false;
49
- this._pollingPromise = null;
53
+ // Create a query class
54
+ constructor(gl: WebGLRenderingContext, opts: QueryProps = {}) {
55
+ super(gl, opts, {} as any);
50
56
 
51
57
  Object.seal(this);
52
58
  }
@@ -54,17 +60,17 @@ export default class Query extends Resource {
54
60
  // Shortcut for timer query (dependent on extension in both WebGL1 and 2)
55
61
  // Measures GPU time delta between this call and a matching `end` call in the
56
62
  // GPU instruction stream.
57
- beginTimeElapsedQuery() {
63
+ beginTimeElapsedQuery(): this {
58
64
  return this.begin(GL_TIME_ELAPSED_EXT);
59
65
  }
60
66
 
61
67
  // Shortcut for occlusion queries
62
- beginOcclusionQuery({conservative = false} = {}) {
63
- return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
68
+ beginOcclusionQuery(options?: {conservative?: boolean}): this {
69
+ return this.begin(options?.conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);
64
70
  }
65
71
 
66
72
  // Shortcut for transformFeedbackQuery
67
- beginTransformFeedbackQuery() {
73
+ beginTransformFeedbackQuery(): this {
68
74
  return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
69
75
  }
70
76
 
@@ -73,7 +79,7 @@ export default class Query extends Resource {
73
79
  // calling `begin()` on another query. While there can be multiple
74
80
  // outstanding queries representing disjoint `begin()`/`end()` intervals.
75
81
  // It is not possible to interleave or overlap `begin` and `end` calls.
76
- begin(target) {
82
+ begin(target: number): this {
77
83
  // Don't start a new query if one is already active.
78
84
  if (this._queryPending) {
79
85
  return this;
@@ -86,7 +92,7 @@ export default class Query extends Resource {
86
92
  }
87
93
 
88
94
  // ends the current query
89
- end() {
95
+ end(): this {
90
96
  // Can't end a new query if the last one hasn't been resolved.
91
97
  if (this._queryPending) {
92
98
  return this;
@@ -101,7 +107,7 @@ export default class Query extends Resource {
101
107
  }
102
108
 
103
109
  // Returns true if the query result is available
104
- isResultAvailable() {
110
+ isResultAvailable(): boolean {
105
111
  if (!this._queryPending) {
106
112
  return false;
107
113
  }
@@ -114,12 +120,12 @@ export default class Query extends Resource {
114
120
  }
115
121
 
116
122
  // Timing query is disjoint, i.e. results are invalid
117
- isTimerDisjoint() {
123
+ isTimerDisjoint(): boolean {
118
124
  return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);
119
125
  }
120
126
 
121
127
  // Returns query result.
122
- getResult() {
128
+ getResult(): any {
123
129
  return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);
124
130
  }
125
131
 
@@ -129,7 +135,7 @@ export default class Query extends Resource {
129
135
  }
130
136
 
131
137
  // Polls the query
132
- createPoll(limit = Number.POSITIVE_INFINITY) {
138
+ createPoll(limit: number = Number.POSITIVE_INFINITY): Promise<any> {
133
139
  if (this._pollingPromise) {
134
140
  return this._pollingPromise;
135
141
  }
@@ -1,14 +1,40 @@
1
1
  import GL from '@luma.gl/constants';
2
+ import {isWebGL2} from '@luma.gl/gltools';
3
+
4
+ export function isRenderbufferFormatSupported(gl: WebGLRenderingContext, format: GL): boolean {
5
+ const info = RENDERBUFFER_FORMATS[format];
6
+ // Unknown format
7
+ if (!info) {
8
+ return false;
9
+ }
10
+ if (info.ext) {
11
+ return Boolean(gl.getExtension(info.ext));
12
+ }
13
+ if (info.gl2) {
14
+ return isWebGL2(gl);
15
+ }
16
+ return true;
17
+ }
18
+
19
+ export function getRenderbufferFormatBytesPerPixel(format: GL): number {
20
+ return RENDERBUFFER_FORMATS[format].bpp;
21
+ }
2
22
 
3
23
  // Define local extension strings to optimize minification
4
- // const SRGB = 'EXT_sRGB';
5
- // const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';
6
24
  const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';
7
- // const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
8
25
 
9
- // NOTE(Tarek): bpp === "bytes per pixel", used for
10
- // memory usage calculations.
11
- export default {
26
+ /**
27
+ * @param bpp "bytes per pixel", used for memory usage calculations.
28
+ * @param gl2 requires WebGL2
29
+ * @param ext requires extension
30
+ */
31
+ type RenderbufferFormat = {
32
+ bpp: number;
33
+ gl2?: boolean;
34
+ ext?: string;
35
+ };
36
+
37
+ const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
12
38
  [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.
13
39
  [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},
14
40
  [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},
@@ -52,13 +78,15 @@ export default {
52
78
  [GL.RGBA32UI]: {gl2: true, bpp: 16},
53
79
 
54
80
  // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension
55
- [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},
56
- [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},
57
- [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},
58
- [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},
59
- [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},
81
+ [GL.R16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 2},
82
+ [GL.RG16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
83
+ [GL.RGBA16F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
84
+ [GL.R32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4},
85
+ [GL.RG32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 8},
60
86
  // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers
61
- [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},
62
- // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},
63
- [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}
87
+ [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, bpp: 16},
88
+ // [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},
89
+ [GL.R11F_G11F_B10F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4}
64
90
  };
91
+
92
+ export default RENDERBUFFER_FORMATS;
@@ -0,0 +1,153 @@
1
+ /* eslint-disable no-inline-comments */
2
+ import GL from '@luma.gl/constants';
3
+ import WebGLResource, {ResourceProps} from './webgl-resource';
4
+ import {isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel} from './renderbuffer-formats';
5
+ import {isWebGL2} from '@luma.gl/gltools';
6
+ import {assert} from '../utils';
7
+
8
+ export type RenderbufferProps = ResourceProps & {
9
+ format: number;
10
+ width?: number;
11
+ height?: number;
12
+ samples?: number;
13
+ };
14
+
15
+ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
16
+ id: undefined,
17
+ handle: undefined,
18
+ userData: undefined,
19
+ format: 0,
20
+ width: 1,
21
+ height: 1,
22
+ samples: 0
23
+ };
24
+
25
+ /**
26
+ * Renderbuffers are GPU objects that contain images.
27
+ * In contrast to Textures they are optimized for use as render targets, with Framebuffers.
28
+ * while Textures may not be, and are the logical choice when
29
+ * you do not need to sample (i.e. in a post-pass shader)
30
+ * from the produced image. If you need to resample
31
+ * (such as when reading depth back in a second shader pass),
32
+ * use Textures instead.
33
+ * Renderbuffer objects also natively accommodate Multisampling (MSAA).
34
+ */
35
+ export class ImmutableRenderbuffer extends WebGLResource<RenderbufferProps> {
36
+ static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
37
+ return !options.format || isRenderbufferFormatSupported(gl, options.format);
38
+ }
39
+
40
+ constructor(gl: WebGLRenderingContext, props: RenderbufferProps) {
41
+ super(gl, props, DEFAULT_RENDERBUFFER_PROPS);
42
+ this._initialize(this.props);
43
+ }
44
+
45
+ // PRIVATE METHODS
46
+
47
+ /** Creates and initializes a renderbuffer object's data store */
48
+ protected _initialize(props: Required<RenderbufferProps>) {
49
+ const {format, width, height, samples} = props;
50
+ assert(format, 'Needs format');
51
+
52
+ this.trackDeallocatedMemory();
53
+
54
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
55
+
56
+ if (samples !== 0 && isWebGL2(this.gl)) {
57
+ // @ts-ignore
58
+ this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
59
+ } else {
60
+ this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
61
+ }
62
+
63
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
64
+
65
+ this.trackAllocatedMemory(
66
+ width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
67
+ );
68
+
69
+ return this;
70
+ }
71
+
72
+ // RESOURECE IMPLEMENTATION
73
+
74
+ _createHandle() {
75
+ return this.gl.createRenderbuffer();
76
+ }
77
+
78
+ _deleteHandle(): void {
79
+ this.gl.deleteRenderbuffer(this.handle);
80
+ this.trackDeallocatedMemory();
81
+ }
82
+
83
+ _bindHandle(handle): void {
84
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
85
+ }
86
+ }
87
+
88
+
89
+ /**
90
+ * Renderbuffers are GPU objects that contain images.
91
+ * In contrast to Textures they are optimized for use as render targets, with Framebuffers.
92
+ * while Textures may not be, and are the logical choice when
93
+ * you do not need to sample (i.e. in a post-pass shader)
94
+ * from the produced image. If you need to resample
95
+ * (such as when reading depth back in a second shader pass),
96
+ * use Textures instead.
97
+ * Renderbuffer objects also natively accommodate Multisampling (MSAA).
98
+ */
99
+ export default class Renderbuffer extends ImmutableRenderbuffer {
100
+ get width(): number { return this.props.width; }
101
+ get height(): number { return this.props.height; }
102
+ get format(): number { return this.props.format; }
103
+ get samples(): number { return this.props.samples; }
104
+
105
+ static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
106
+ return ImmutableRenderbuffer.isSupported(gl, options);
107
+ }
108
+
109
+ static getSamplesForFormat(gl: WebGL2RenderingContext, options: {format: number}): number{
110
+ // Polyfilled to return [0] under WebGL1
111
+ return gl.getInternalformatParameter(GL.RENDERBUFFER, options.format, GL.SAMPLES);
112
+ }
113
+
114
+ constructor(gl: WebGLRenderingContext, props?: RenderbufferProps) {
115
+ super(gl, props);
116
+ }
117
+
118
+ resize(size: {width: number, height: number}): this {
119
+ // Don't resize if width/height haven't changed
120
+ if (size.width !== this.width || size.height !== this.height) {
121
+ return this.initialize({...size, format: this.format, samples: this.samples});
122
+ }
123
+ return this;
124
+ }
125
+
126
+ /** Creates and initializes a renderbuffer object's data store */
127
+ initialize(props: RenderbufferProps): this {
128
+ Object.assign(this.props, props);
129
+ this._initialize(this.props);
130
+ return this;
131
+ }
132
+
133
+ // PRIVATE
134
+
135
+ _syncHandle(handle) {
136
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
137
+ Object.assign(this.props, {
138
+ format: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_INTERNAL_FORMAT),
139
+ width: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_WIDTH),
140
+ height: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_HEIGHT),
141
+ samples: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_SAMPLES)
142
+ });
143
+ }
144
+
145
+ // @param {Boolean} opt.autobind=true - method call will bind/unbind object
146
+ // @returns {GLenum|GLint} - depends on pname
147
+ _getParameter(pname) {
148
+ this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
149
+ const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);
150
+ // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
151
+ return value;
152
+ }
153
+ }
@@ -1,15 +1,20 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {assertWebGLContext} from '@luma.gl/gltools';
3
- import Texture from './texture';
3
+ import Texture, {TextureProps} from './texture';
4
4
  import {loadImage} from '../utils/load-file';
5
5
 
6
+
7
+ export type Texture2DProps = TextureProps & {
8
+ };
9
+
6
10
  export default class Texture2D extends Texture {
7
- static isSupported(gl, opts) {
11
+ static isSupported(gl: WebGLRenderingContext, opts?: object): boolean {
12
+ // @ts-expect-error
8
13
  return Texture.isSupported(gl, opts);
9
14
  }
10
15
 
11
- constructor(gl, props = {}) {
12
- assertWebGLContext(gl);
16
+ constructor(gl: WebGLRenderingContext, props?: Texture2DProps | Promise<Texture2DProps>) {
17
+ assertWebGLContext(gl);
13
18
 
14
19
  // Signature: new Texture2D(gl, url | Promise)
15
20
  if (props instanceof Promise || typeof props === 'string') {
@@ -17,7 +22,8 @@ export default class Texture2D extends Texture {
17
22
  }
18
23
 
19
24
  // Signature: new Texture2D(gl, {data: url})
20
- if (typeof props.data === 'string') {
25
+ if (typeof props?.data === 'string') {
26
+ // @ts-expect-error
21
27
  props = Object.assign({}, props, {data: loadImage(props.data)});
22
28
  }
23
29
 
@@ -27,4 +33,8 @@ export default class Texture2D extends Texture {
27
33
 
28
34
  Object.seal(this);
29
35
  }
36
+
37
+ get [Symbol.toStringTag](): string {
38
+ return 'Texture2D';
39
+ }
30
40
  }
@@ -1,24 +1,49 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  import {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';
3
- import Texture from './texture';
3
+ import Texture, {TextureProps} from './texture';
4
4
  import {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';
5
- import Buffer from './buffer';
5
+ import Buffer from './webgl-buffer';
6
6
 
7
+ export type Texture3DProps = TextureProps & {
8
+ };
9
+
10
+ type SetImageDataOptions = {
11
+ level?: number;
12
+ dataFormat?: any;
13
+ width: any;
14
+ height: any;
15
+ depth?: number;
16
+ border?: number;
17
+ format: any;
18
+ type?: any;
19
+ offset?: number;
20
+ data: any;
21
+ parameters?: {};
22
+ };
23
+
24
+ /**
25
+ * Textures that have 3 dimensions: width, height, and depth.
26
+ * They are accessed by 3-dimensional texture coordinates.
27
+ */
7
28
  export default class Texture3D extends Texture {
8
- static isSupported(gl) {
29
+ static isSupported(gl: WebGLRenderingContext): boolean {
9
30
  return isWebGL2(gl);
10
31
  }
11
32
 
12
- constructor(gl, props = {}) {
33
+ constructor(gl: WebGL2RenderingContext, props: Texture3DProps = {}) {
34
+ super(gl as WebGLRenderingContext, props);
13
35
  assertWebGL2Context(gl);
14
36
  props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});
15
- super(gl, props);
16
37
  this.initialize(props);
17
38
 
18
39
  Object.seal(this);
19
40
  }
20
41
 
21
- // Image 3D copies from Typed Array or WebGLBuffer
42
+ get [Symbol.toStringTag](): string {
43
+ return 'Texture3D';
44
+ }
45
+
46
+ /** Image 3D copies from Typed Array or WebGLBuffer */
22
47
  setImageData({
23
48
  level = 0,
24
49
  dataFormat = GL.RGBA,
@@ -31,8 +56,8 @@ export default class Texture3D extends Texture {
31
56
  offset = 0,
32
57
  data,
33
58
  parameters = {}
34
- }) {
35
- this._trackDeallocatedMemory('Texture');
59
+ }: SetImageDataOptions) {
60
+ this.trackDeallocatedMemory('Texture');
36
61
 
37
62
  this.gl.bindTexture(this.target, this.handle);
38
63
 
@@ -72,7 +97,7 @@ export default class Texture3D extends Texture {
72
97
  });
73
98
 
74
99
  if (data && data.byteLength) {
75
- this._trackAllocatedMemory(data.byteLength, 'Texture');
100
+ this.trackAllocatedMemory(data.byteLength, 'Texture');
76
101
  } else {
77
102
  // NOTE(Tarek): Default to RGBA bytes
78
103
  // @ts-ignore
@@ -80,7 +105,7 @@ export default class Texture3D extends Texture {
80
105
  // @ts-ignore
81
106
  const channelSize = TYPE_SIZES[this.type] || 1;
82
107
 
83
- this._trackAllocatedMemory(
108
+ this.trackAllocatedMemory(
84
109
  this.width * this.height * this.depth * channels * channelSize,
85
110
  'Texture'
86
111
  );