@luma.gl/webgl 8.5.7 → 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,29 +1,40 @@
1
+ // luma.gl, MIT license
1
2
  import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';
2
- import {lumaStats} from '../init';
3
- import {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';
4
- import {assert} from '../utils/assert';
5
- import {uid} from '../utils/utils';
6
- import {stubRemovedMethods} from '../utils/stub-methods';
3
+ import {Resource} from '@luma.gl/api';
4
+ export type {ResourceProps} from '@luma.gl/api';
5
+ import {getKey, getKeyValue} from '../webgl-utils';
6
+ import {uid, assert, stubRemovedMethods} from '../utils';
7
7
 
8
8
  const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';
9
9
 
10
- // TODO - Handle context loss
11
- // function glGetContextLossCount(gl) {
12
- // return (gl.luma && gl.luma.glCount) || 0;
13
- // }
10
+ /**
11
+ * Base class for WebGL object wrappers
12
+ */
13
+ export default class WebGLResource<Props> extends Resource<Props> {
14
+ id: string;
15
+ readonly gl: WebGLRenderingContext;
16
+ readonly gl2: WebGL2RenderingContext;
17
+ userData: any;
18
+ private _handle: any;
19
+
20
+ private _bound = false;
21
+ // Only meaningful for resources that allocate GPU memory
22
+ byteLength = 0;
23
+
24
+ constructor(gl: WebGLRenderingContext, props: Props, defaultProps: Required<Props>) {
25
+ super(gl as any, props, defaultProps);
14
26
 
15
- export default class Resource {
16
- constructor(gl, opts = {}) {
17
27
  assertWebGLContext(gl);
18
28
 
19
- const {id, userData = {}} = opts;
29
+ // extends
30
+ // @ts-expect-error
31
+ const {id, userData = {}} = props || {};
20
32
  this.gl = gl;
21
33
  // @ts-ignore
22
34
  this.gl2 = gl;
23
35
  // this.ext = polyfillContext(gl);
24
36
  this.id = id || uid(this.constructor.name);
25
37
  this.userData = userData;
26
- this._bound = false;
27
38
 
28
39
  // Set the handle
29
40
  // If handle was provided, use it, otherwise create a new handle
@@ -32,18 +43,16 @@ export default class Resource {
32
43
  // this.glCount = glGetContextLossCount(this.gl);
33
44
 
34
45
  // Default VertexArray needs to be created with null handle, so compare against undefined
35
- this._handle = opts.handle;
46
+ // @ts-expect-error
47
+ this._handle = props?.handle;
36
48
  if (this._handle === undefined) {
37
49
  this._handle = this._createHandle();
38
50
  }
39
51
 
40
- // Only meaningful for resources that allocate GPU memory
41
52
  this.byteLength = 0;
42
-
43
- this._addStats();
44
53
  }
45
54
 
46
- toString() {
55
+ toString(): string {
47
56
  return `${this.constructor.name}(${this.id})`;
48
57
  }
49
58
 
@@ -52,10 +61,10 @@ export default class Resource {
52
61
  // Will regenerate and reinitialize the handle if necessary
53
62
  // const glCount = glGetContextLossCount(this.gl);
54
63
  // if (this.glCount !== glCount) {
55
- // this._handle = this._createHandle(this.opts);
64
+ // this._handle = this._createHandle(this.props);
56
65
  // this._glCount = glCount;
57
66
  // // Reinitialize object
58
- // this.initialize(this.opts);
67
+ // this.initialize(this.props);
59
68
  // }
60
69
  return this._handle;
61
70
  }
@@ -65,7 +74,7 @@ export default class Resource {
65
74
  // @ts-ignore
66
75
  const children = this._handle && this._deleteHandle(this._handle);
67
76
  if (this._handle) {
68
- this._removeStats();
77
+ this.removeStats();
69
78
  }
70
79
  this._handle = null;
71
80
 
@@ -73,7 +82,7 @@ export default class Resource {
73
82
  // @ts-ignore
74
83
  if (children && deleteChildren) {
75
84
  // @ts-ignore
76
- children.filter(Boolean).forEach(child => child.delete());
85
+ children.filter(Boolean).forEach((child) => child.delete());
77
86
  }
78
87
 
79
88
  return this;
@@ -109,10 +118,10 @@ export default class Resource {
109
118
  /**
110
119
  * Query a Resource parameter
111
120
  *
112
- * @param {GLenum} pname
113
- * @return {GLint|GLfloat|GLenum} param
121
+ * @param name
122
+ * @return param
114
123
  */
115
- getParameter(pname, opts = {}) {
124
+ getParameter(pname: number, props = {}): any {
116
125
  pname = getKeyValue(this.gl, pname);
117
126
  assert(pname);
118
127
 
@@ -139,13 +148,13 @@ export default class Resource {
139
148
 
140
149
  // If unknown parameter - Could be a valid parameter not covered by PARAMS
141
150
  // Attempt to query for it and let WebGL report errors
142
- return this._getParameter(pname, opts);
151
+ return this._getParameter(pname, props);
143
152
  }
144
153
 
145
154
  // Many resources support a getParameter call -
146
155
  // getParameters will get all parameters - slow but useful for debugging
147
156
  // eslint-disable-next-line complexity
148
- getParameters(options = {}) {
157
+ getParameters(options: {parameters?, keys?} = {}) {
149
158
  const {parameters, keys} = options;
150
159
 
151
160
  // Get parameter definitions for this Resource
@@ -212,6 +221,7 @@ export default class Resource {
212
221
 
213
222
  // Handle string keys
214
223
  if (parameter.type === 'GLenum') {
224
+ // @ts-expect-error
215
225
  value = getKeyValue(value);
216
226
  }
217
227
  }
@@ -239,7 +249,7 @@ export default class Resource {
239
249
  }
240
250
 
241
251
  // PUBLIC VIRTUAL METHODS
242
- initialize(opts) {}
252
+ initialize(props) {}
243
253
 
244
254
  // PROTECTED METHODS - These must be overridden by subclass
245
255
  _createHandle() {
@@ -259,7 +269,7 @@ export default class Resource {
259
269
  }
260
270
 
261
271
  /** @returns {number} */
262
- _getParameter(pname, opts) {
272
+ _getParameter(pname, props) {
263
273
  throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);
264
274
  }
265
275
 
@@ -269,11 +279,7 @@ export default class Resource {
269
279
 
270
280
  // PRIVATE METHODS
271
281
 
272
- _context() {
273
- this.gl.luma = this.gl.luma || {};
274
- return this.gl.luma;
275
- }
276
-
282
+ /*
277
283
  _addStats() {
278
284
  const name = this.constructor.name;
279
285
  const stats = lumaStats.get('Resource Counts');
@@ -290,7 +296,7 @@ export default class Resource {
290
296
  stats.get(`${name}s Active`).decrementCount();
291
297
  }
292
298
 
293
- _trackAllocatedMemory(bytes, name = this.constructor.name) {
299
+ trackAllocatedMemory(bytes, name = this.constructor.name) {
294
300
  const stats = lumaStats.get('Memory Usage');
295
301
 
296
302
  stats.get('GPU Memory').addCount(bytes);
@@ -298,11 +304,12 @@ export default class Resource {
298
304
  this.byteLength = bytes;
299
305
  }
300
306
 
301
- _trackDeallocatedMemory(name = this.constructor.name) {
307
+ trackDeallocatedMemory(name = this.constructor.name) {
302
308
  const stats = lumaStats.get('Memory Usage');
303
309
 
304
310
  stats.get('GPU Memory').subtractCount(this.byteLength);
305
311
  stats.get(`${name} Memory`).subtractCount(this.byteLength);
306
312
  this.byteLength = 0;
307
313
  }
314
+ */
308
315
  }
@@ -0,0 +1,200 @@
1
+ // luma.gl, MIT license
2
+ import GL from '@luma.gl/constants';
3
+ import {assertWebGLContext, log} from '@luma.gl/gltools';
4
+ import {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';
5
+ import {Shader as ShaderAPI, ShaderProps} from '@luma.gl/api';
6
+ import {parseShaderCompilerLog} from '../webgl-utils/parse-shader-compiler-log';
7
+ import {uid, assert} from '../utils';
8
+
9
+ const ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';
10
+
11
+
12
+ export type {ShaderProps};
13
+
14
+ export class WEBGLShader extends ShaderAPI {
15
+ readonly gl: WebGLRenderingContext;
16
+ readonly handle: WebGLShader;
17
+
18
+ readonly stage: 'vertex' | 'fragment';
19
+
20
+ constructor(gl: WebGLRenderingContext, props: ShaderProps) {
21
+ super(gl as any, {id: getShaderIdFromProps(props), ...props});
22
+ this.gl = gl;
23
+ switch (this.props.stage) {
24
+ case 'vertex':
25
+ this.handle = this.props.handle || this.gl.createShader(GL.VERTEX_SHADER);
26
+ break;
27
+ case 'fragment':
28
+ this.handle = this.props.handle || this.gl.createShader(GL.FRAGMENT_SHADER);
29
+ break;
30
+ default:
31
+ throw new Error(this.props.stage);
32
+ }
33
+ this.stage = this.props.stage;
34
+ this._compile(props.source);
35
+ }
36
+
37
+ destroy(): void {
38
+ if (this.handle) {
39
+ this.removeStats();
40
+ this.gl.deleteShader(this.handle);
41
+ // @ts-expect-error
42
+ this.handle = null;
43
+ }
44
+ }
45
+
46
+ async compilationInfo(): Promise<readonly CompilerMessage[]> {
47
+ const log = this.gl.getShaderInfoLog(this.handle);
48
+ return parseShaderCompilerLog(log);
49
+ }
50
+
51
+ // PRIVATE METHODS
52
+ _compile(source) {
53
+ if (!source.startsWith('#version ')) {
54
+ source = `#version 100\n${source}`;
55
+ }
56
+ this.gl.shaderSource(this.handle, source);
57
+ this.gl.compileShader(this.handle);
58
+
59
+ // TODO - For performance reasons, avoid checking shader compilation errors on production?
60
+ // TODO - Load log even when no error reported, to catch warnings?
61
+ // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
62
+ const compileStatus = this.gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
63
+ if (!compileStatus) {
64
+ const shaderLog = this.gl.getShaderInfoLog(this.handle);
65
+ const messages = parseShaderCompilerLog(shaderLog).filter(message => message.type === 'error');
66
+ const formattedLog = formatCompilerLog(messages, source);
67
+ const shaderName: string = getShaderInfo(source).name;
68
+ const shaderDescription = `${this.stage} shader ${shaderName}`;
69
+ log.error(`GLSL compilation errors in ${shaderName}\n${formattedLog}`)();
70
+ throw new Error(`GLSL compilation errors in ${shaderName}`);
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline
77
+ * For now this is an internal class
78
+ */
79
+ export class Shader extends WEBGLShader {
80
+ shaderType: GL.FRAGMENT_SHADER | GL.VERTEX_SHADER;
81
+ source: string;
82
+
83
+ static getTypeName(shaderType: any): 'vertex-shader' | 'fragment-shader' | 'unknown' {
84
+ switch (shaderType) {
85
+ case GL.VERTEX_SHADER:
86
+ return 'vertex-shader';
87
+ case GL.FRAGMENT_SHADER:
88
+ return 'fragment-shader';
89
+ default:
90
+ assert(false);
91
+ return 'unknown';
92
+ }
93
+ }
94
+
95
+ constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'>) {
96
+ assertWebGLContext(gl);
97
+ assert(typeof props.source === 'string', ERR_SOURCE);
98
+
99
+ // @ts-expect-error
100
+ super(gl, {...props, id: getShaderIdFromProps(props), stage: props.shaderType === GL.VERTEX_SHADER ? 'vertex' : 'fragment'});
101
+
102
+ this.shaderType = props.shaderType;
103
+ this.source = props.source;
104
+
105
+ const shaderName = getShaderInfo(props.source).name;
106
+ if (shaderName) {
107
+ this.id = uid(shaderName);
108
+ }
109
+ }
110
+
111
+ initialize(props: ShaderProps): this {
112
+ this._compile(props.source);
113
+ const shaderName = getShaderInfo(props.source).name;
114
+ if (shaderName) {
115
+ this.id = uid(shaderName);
116
+ }
117
+ return this;
118
+ }
119
+
120
+ // Accessors
121
+
122
+ getParameter(pname: number): any {
123
+ return this.gl.getShaderParameter(this.handle, pname);
124
+ }
125
+
126
+ toString(): string {
127
+ return `${Shader.getTypeName(this.shaderType)}:${this.id}`;
128
+ }
129
+
130
+ getName(): string {
131
+ return getShaderInfo(this.source).name || 'unnamed-shader';
132
+ }
133
+
134
+ getSource(): string {
135
+ return this.gl.getShaderSource(this.handle);
136
+ }
137
+
138
+ /** Debug method - Returns translated source if available */
139
+ getTranslatedSource(): string {
140
+ const extension = this.gl.getExtension('WEBGL_debug_shaders');
141
+ return extension
142
+ ? extension.getTranslatedShaderSource(this.handle)
143
+ : 'No translated source available. WEBGL_debug_shaders not implemented';
144
+ }
145
+
146
+ // PRIVATE METHODS
147
+
148
+ _getOptsFromHandle() {
149
+ return {
150
+ type: this.getParameter(GL.SHADER_TYPE),
151
+ source: this.getSource()
152
+ };
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline
158
+ * @deprecated Use `device.createShader({stage: 'vertex', ...})`
159
+ */
160
+ export class VertexShader extends Shader {
161
+ constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {
162
+ super(gl, getShaderProps(props, GL.VERTEX_SHADER));
163
+ }
164
+
165
+ // PRIVATE METHODS
166
+ _createHandle() {
167
+ return this.gl.createShader(GL.VERTEX_SHADER);
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline
173
+ * @deprecated Use `device.createShader({stage: 'fragment', ...})`
174
+ */
175
+ export class FragmentShader extends Shader {
176
+ constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {
177
+ super(gl, getShaderProps(props, GL.FRAGMENT_SHADER));
178
+ }
179
+
180
+ // PRIVATE METHODS
181
+ _createHandle() {
182
+ return this.gl.createShader(GL.FRAGMENT_SHADER);
183
+ }
184
+ }
185
+
186
+ // HELPERS
187
+
188
+ function getShaderProps(props: Omit<ShaderProps, 'stage'> | string, shaderType: GL.VERTEX_SHADER | GL.FRAGMENT_SHADER): Omit<ShaderProps, 'stage'> {
189
+ if (typeof props === 'string') {
190
+ return {source: props, shaderType};
191
+ }
192
+ return {...props, shaderType};
193
+ }
194
+
195
+ /** Deduce an id, from shader source, or supplied id, or shader type */
196
+ function getShaderIdFromProps(props: ShaderProps): string {
197
+ return getShaderInfo(props.source).name ||
198
+ props.id ||
199
+ uid(`unnamed ${props.stage || Shader.getTypeName(props.shaderType)}`);
200
+ }
@@ -0,0 +1,31 @@
1
+ //
2
+ import type {GLContextOptions} from '@luma.gl/gltools';
3
+ import {createGLContext, isWebGL2} from '@luma.gl/gltools';
4
+ import {Device} from '@luma.gl/api';
5
+ import type {BufferProps, ShaderProps} from '@luma.gl/api';
6
+ import WEBGLBuffer from '../classes/webgl-buffer';
7
+ import {WEBGLShader, } from '../classes/webgl-shader';
8
+ import Texture2D, {Texture2DProps} from '../classes/texture-2d';
9
+
10
+ export default class GLContext extends Device {
11
+ readonly gl: WebGLRenderingContext;
12
+ readonly gl2: WebGL2RenderingContext | null;
13
+
14
+ constructor(props: GLContextOptions) {
15
+ super();
16
+ this.gl = createGLContext(props);
17
+ this.gl2 = isWebGL2(this.gl) ? this.gl as WebGL2RenderingContext : null;
18
+ }
19
+
20
+ createBuffer(props: BufferProps): WEBGLBuffer {
21
+ return new WEBGLBuffer(this.gl, props);
22
+ }
23
+
24
+ createTexture(props: Texture2DProps): Texture2D {
25
+ return new Texture2D(this.gl, props);
26
+ }
27
+
28
+ createShader(props: ShaderProps): WEBGLShader {
29
+ return new WEBGLShader(this.gl, props);
30
+ }
31
+ }
@@ -0,0 +1,27 @@
1
+ import type {default as Framebuffer} from '../classes/framebuffer';
2
+ import type {default as VertexArrayObject} from '../classes/vertex-array-object';
3
+
4
+ /**
5
+ * Data stored by luma.gl on the context
6
+ */
7
+ export type LumaContextData = {
8
+ defaultFramebuffer?: Framebuffer;
9
+ defaultVertexArray?: VertexArrayObject;
10
+ info: {[key: string]: any};
11
+ caps: {[key: string]: any};
12
+ limits: {[key: string]: any};
13
+ webgl1MinLimits: {[key: string]: any};
14
+ webgl2MinLimits: {[key: string]: any};
15
+ };
16
+
17
+ /**
18
+ *
19
+ * @param gl
20
+ * @returns
21
+ */
22
+ export function getLumaContextData(gl: WebGLRenderingContext): LumaContextData {
23
+ // @ts-ignore
24
+ gl.luma = gl.luma || {};
25
+ // @ts-ignore
26
+ return gl.luma as LumaContextData;
27
+ }
@@ -1,14 +1,24 @@
1
- import {assert} from '../utils/assert';
2
- import {formatValue} from '../utils/format-value';
1
+ import {formatValue, assert} from '../utils';
3
2
 
4
3
  // Prepares a table suitable for console.table
5
4
  /* eslint-disable max-statements, complexity */
6
- export function getDebugTableForUniforms({
7
- header = 'Uniforms',
8
- program,
9
- uniforms,
10
- undefinedOnly = false
11
- }) {
5
+ export function getDebugTableForUniforms(options?: {
6
+ header?: string;
7
+ program: any;
8
+ uniforms: any;
9
+ undefinedOnly?: boolean;
10
+ }): {
11
+ table: {};
12
+ count: number;
13
+ unusedTable: {};
14
+ unusedCount: number;
15
+ } {
16
+ const {
17
+ header = 'Uniforms',
18
+ program,
19
+ uniforms,
20
+ undefinedOnly = false
21
+ } = options;
12
22
  assert(program);
13
23
 
14
24
  const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';
@@ -1,10 +1,12 @@
1
- import Buffer from '../classes/buffer';
2
- import {getKey} from '../webgl-utils/constants-to-keys';
1
+ import Buffer from '../classes/webgl-buffer';
2
+ import {getKey} from '../webgl-utils';
3
3
  import {getCompositeGLType} from '../webgl-utils/attribute-utils';
4
- import {formatValue} from '../utils/format-value';
4
+ import {formatValue} from '../utils';
5
5
 
6
6
  // Creates object suitable as input for console.table
7
- export function getDebugTableForVertexArray({vertexArray, header = 'Attributes'}) {
7
+ export function getDebugTableForVertexArray(options?: {vertexArray: any; header?: string}): {} {
8
+ const {vertexArray, header = 'Attributes'} = options;
9
+
8
10
  if (!vertexArray.configuration) {
9
11
  return {};
10
12
  }
@@ -14,6 +16,7 @@ export function getDebugTableForVertexArray({vertexArray, header = 'Attributes'}
14
16
  // Add index (elements) if available
15
17
  if (vertexArray.elements) {
16
18
  // const elements = Object.assign({size: 1}, vertexArray.elements);
19
+ // @ts-expect-error
17
20
  table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);
18
21
  }
19
22
 
@@ -1,6 +1,6 @@
1
1
  import isOldIE from './check-old-ie';
2
2
  import WEBGL_FEATURES from './webgl-features-table';
3
- import {assert} from '../utils/assert';
3
+ import {assert} from '../utils';
4
4
 
5
5
  // Enables feature detection in IE11 due to a bug where gl.getExtension may return true
6
6
  // but fail to compile when the extension is enabled in the shader. Specifically,
@@ -5,7 +5,8 @@
5
5
 
6
6
  import WEBGL_FEATURES from './webgl-features-table';
7
7
  import {isWebGL2, log} from '@luma.gl/gltools';
8
- import {assert} from '../utils/assert';
8
+ import {assert} from '../utils';
9
+ import {getLumaContextData} from '../context/luma-context-data';
9
10
 
10
11
  const LOG_UNSUPPORTED_FEATURE = 2;
11
12
 
@@ -17,37 +18,37 @@ export function hasFeature(gl, feature) {
17
18
  // Check one or more features
18
19
  export function hasFeatures(gl, features) {
19
20
  features = Array.isArray(features) ? features : [features];
20
- return features.every(feature => {
21
+ return features.every((feature) => {
21
22
  return isFeatureSupported(gl, feature);
22
23
  });
23
24
  }
24
25
 
25
26
  // Return a list of supported features
26
27
  export function getFeatures(gl) {
27
- gl.luma = gl.luma || {};
28
- gl.luma.caps = gl.luma.caps || {};
28
+ const lumaContextData = getLumaContextData(gl);
29
+ lumaContextData.caps = lumaContextData.caps || {};
29
30
  for (const cap in WEBGL_FEATURES) {
30
- if (gl.luma.caps[cap] === undefined) {
31
- gl.luma.caps[cap] = isFeatureSupported(gl, cap);
31
+ if (lumaContextData.caps[cap] === undefined) {
32
+ lumaContextData.caps[cap] = isFeatureSupported(gl, cap);
32
33
  }
33
34
  }
34
- return gl.luma.caps;
35
+ return lumaContextData.caps;
35
36
  }
36
37
 
37
38
  // TODO - cache the value
38
39
  function isFeatureSupported(gl, cap) {
39
- gl.luma = gl.luma || {};
40
- gl.luma.caps = gl.luma.caps || {};
40
+ const lumaContextData = getLumaContextData(gl);
41
+ lumaContextData.caps = lumaContextData.caps || {};
41
42
 
42
- if (gl.luma.caps[cap] === undefined) {
43
- gl.luma.caps[cap] = queryFeature(gl, cap);
43
+ if (lumaContextData.caps[cap] === undefined) {
44
+ lumaContextData.caps[cap] = queryFeature(gl, cap);
44
45
  }
45
46
 
46
- if (!gl.luma.caps[cap]) {
47
+ if (!lumaContextData.caps[cap]) {
47
48
  log.log(LOG_UNSUPPORTED_FEATURE, `Feature: ${cap} not supported`)();
48
49
  }
49
50
 
50
- return gl.luma.caps[cap];
51
+ return lumaContextData.caps[cap];
51
52
  }
52
53
 
53
54
  function queryFeature(gl, cap) {
File without changes
@@ -1,15 +1,15 @@
1
1
  import GL from '@luma.gl/constants';
2
-
3
- import WEBGL_LIMITS from './webgl-limits-table';
4
2
  import {isWebGL2, getContextDebugInfo} from '@luma.gl/gltools';
3
+ import WEBGL_LIMITS from './webgl-limits-table';
4
+ import {getLumaContextData} from '../context/luma-context-data';
5
5
 
6
6
  export function getContextLimits(gl) {
7
- gl.luma = gl.luma || {};
7
+ const lumaContextData = getLumaContextData(gl);
8
8
 
9
- if (!gl.luma.limits) {
10
- gl.luma.limits = {};
11
- gl.luma.webgl1MinLimits = {};
12
- gl.luma.webgl2MinLimits = {};
9
+ if (!lumaContextData.limits) {
10
+ lumaContextData.limits = {};
11
+ lumaContextData.webgl1MinLimits = {};
12
+ lumaContextData.webgl2MinLimits = {};
13
13
 
14
14
  const isWebgl2 = isWebGL2(gl);
15
15
 
@@ -28,21 +28,21 @@ export function getContextLimits(gl) {
28
28
  ('extension' in limit && !gl.getExtension(limit.extension));
29
29
 
30
30
  const value = limitNotAvailable ? minLimit : gl.getParameter(parameter);
31
- gl.luma.limits[parameter] = value;
32
- gl.luma.webgl1MinLimits[parameter] = webgl1MinLimit;
33
- gl.luma.webgl2MinLimits[parameter] = webgl2MinLimit;
31
+ lumaContextData.limits[parameter] = value;
32
+ lumaContextData.webgl1MinLimits[parameter] = webgl1MinLimit;
33
+ lumaContextData.webgl2MinLimits[parameter] = webgl2MinLimit;
34
34
  }
35
35
  }
36
36
 
37
- return gl.luma.limits;
37
+ return lumaContextData.limits;
38
38
  }
39
39
 
40
40
  export function getGLContextInfo(gl) {
41
- gl.luma = gl.luma || {};
41
+ const lumaContextData = getLumaContextData(gl);
42
42
 
43
43
  const info = getContextDebugInfo(gl);
44
- if (!gl.luma.info) {
45
- gl.luma.info = {
44
+ if (!lumaContextData.info) {
45
+ lumaContextData.info = {
46
46
  [GL.UNMASKED_VENDOR_WEBGL]: info.vendor,
47
47
  [GL.UNMASKED_RENDERER_WEBGL]: info.renderer,
48
48
  [GL.VENDOR]: info.vendorMasked,
@@ -52,14 +52,15 @@ export function getGLContextInfo(gl) {
52
52
  };
53
53
  }
54
54
 
55
- return gl.luma.info;
55
+ return lumaContextData.info;
56
56
  }
57
57
 
58
58
  export function getContextInfo(gl) {
59
+ const lumaContextData = getLumaContextData(gl);
59
60
  return Object.assign(getContextDebugInfo(gl), {
60
61
  limits: getContextLimits(gl),
61
62
  info: getGLContextInfo(gl),
62
- webgl1MinLimits: gl.luma.webgl1MinLimits,
63
- webgl2MinLimits: gl.luma.webgl2MinLimits
63
+ webgl1MinLimits: lumaContextData.webgl1MinLimits,
64
+ webgl2MinLimits: lumaContextData.webgl2MinLimits
64
65
  });
65
66
  }