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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +5 -0
  4. package/dist/bundle.js.map +1 -0
  5. package/dist/classes/accessor.d.ts +28 -0
  6. package/dist/classes/accessor.d.ts.map +1 -0
  7. package/dist/classes/accessor.js +112 -0
  8. package/dist/classes/accessor.js.map +1 -0
  9. package/dist/classes/accessor.ts.disabled +159 -0
  10. package/dist/classes/clear.d.ts +16 -0
  11. package/dist/classes/clear.d.ts.map +1 -0
  12. package/dist/classes/clear.js +102 -0
  13. package/dist/classes/clear.js.map +1 -0
  14. package/dist/classes/copy-and-blit.d.ts +69 -0
  15. package/dist/classes/copy-and-blit.d.ts.map +1 -0
  16. package/dist/classes/copy-and-blit.js +333 -0
  17. package/dist/classes/copy-and-blit.js.map +1 -0
  18. package/dist/classes/framebuffer.d.ts +130 -0
  19. package/dist/classes/framebuffer.d.ts.map +1 -0
  20. package/dist/classes/framebuffer.js +656 -0
  21. package/dist/classes/framebuffer.js.map +1 -0
  22. package/dist/classes/program-configuration.d.ts +27 -0
  23. package/dist/classes/program-configuration.d.ts.map +1 -0
  24. package/dist/classes/program-configuration.js +160 -0
  25. package/dist/classes/program-configuration.js.map +1 -0
  26. package/dist/classes/program.d.ts +61 -0
  27. package/dist/classes/program.d.ts.map +1 -0
  28. package/dist/classes/program.js +368 -0
  29. package/dist/classes/program.js.map +1 -0
  30. package/dist/classes/query.d.ts +27 -0
  31. package/dist/classes/query.d.ts.map +1 -0
  32. package/dist/classes/query.js +144 -0
  33. package/dist/classes/query.js.map +1 -0
  34. package/dist/classes/renderbuffer-formats.d.ts +16 -0
  35. package/dist/classes/renderbuffer-formats.d.ts.map +1 -0
  36. package/dist/classes/renderbuffer-formats.js +185 -0
  37. package/dist/classes/renderbuffer-formats.js.map +1 -0
  38. package/dist/classes/renderbuffer.d.ts +60 -0
  39. package/dist/classes/renderbuffer.d.ts.map +1 -0
  40. package/dist/classes/renderbuffer.js +127 -0
  41. package/dist/classes/renderbuffer.js.map +1 -0
  42. package/dist/classes/texture-2d.d.ts +8 -0
  43. package/dist/classes/texture-2d.d.ts.map +1 -0
  44. package/dist/classes/texture-2d.js +39 -0
  45. package/dist/classes/texture-2d.js.map +1 -0
  46. package/dist/classes/texture-3d.d.ts +28 -0
  47. package/dist/classes/texture-3d.d.ts.map +1 -0
  48. package/dist/classes/texture-3d.js +67 -0
  49. package/dist/classes/texture-3d.js.map +1 -0
  50. package/dist/classes/texture-cube.d.ts +27 -0
  51. package/dist/classes/texture-cube.d.ts.map +1 -0
  52. package/dist/classes/texture-cube.js +131 -0
  53. package/dist/classes/texture-cube.js.map +1 -0
  54. package/dist/classes/texture-formats.d.ts +37 -0
  55. package/dist/classes/texture-formats.d.ts.map +1 -0
  56. package/dist/classes/texture-formats.js +98 -0
  57. package/dist/classes/texture-formats.js.map +1 -0
  58. package/dist/classes/texture.d.ts +118 -0
  59. package/dist/classes/texture.d.ts.map +1 -0
  60. package/dist/classes/texture.js +785 -0
  61. package/dist/classes/texture.js.map +1 -0
  62. package/dist/classes/transform-feedback.d.ts +33 -0
  63. package/dist/classes/transform-feedback.d.ts.map +1 -0
  64. package/dist/classes/transform-feedback.js +197 -0
  65. package/dist/classes/transform-feedback.js.map +1 -0
  66. package/dist/classes/uniform-buffer-layout.d.ts +17 -0
  67. package/dist/classes/uniform-buffer-layout.d.ts.map +1 -0
  68. package/dist/classes/uniform-buffer-layout.js +104 -0
  69. package/dist/classes/uniform-buffer-layout.js.map +1 -0
  70. package/dist/classes/uniforms.d.ts +38 -0
  71. package/dist/classes/uniforms.d.ts.map +1 -0
  72. package/dist/classes/uniforms.js +251 -0
  73. package/dist/classes/uniforms.js.map +1 -0
  74. package/dist/classes/vertex-array-object.d.ts +75 -0
  75. package/dist/classes/vertex-array-object.d.ts.map +1 -0
  76. package/dist/classes/vertex-array-object.js +262 -0
  77. package/dist/classes/vertex-array-object.js.map +1 -0
  78. package/dist/classes/vertex-array.d.ts +75 -0
  79. package/dist/classes/vertex-array.d.ts.map +1 -0
  80. package/dist/classes/vertex-array.js +409 -0
  81. package/dist/classes/vertex-array.js.map +1 -0
  82. package/dist/classes/webgl-buffer.d.ts +98 -0
  83. package/dist/classes/webgl-buffer.d.ts.map +1 -0
  84. package/dist/{esm/classes/buffer.js → classes/webgl-buffer.js} +97 -73
  85. package/dist/classes/webgl-buffer.js.map +1 -0
  86. package/dist/classes/webgl-resource.d.ts +54 -0
  87. package/dist/classes/webgl-resource.d.ts.map +1 -0
  88. package/dist/{esm/classes/resource.js → classes/webgl-resource.js} +31 -52
  89. package/dist/classes/webgl-resource.js.map +1 -0
  90. package/dist/classes/webgl-shader.d.ts +51 -0
  91. package/dist/classes/webgl-shader.d.ts.map +1 -0
  92. package/dist/classes/webgl-shader.js +190 -0
  93. package/dist/classes/webgl-shader.js.map +1 -0
  94. package/dist/context/gl-context.d.ts +15 -0
  95. package/dist/context/gl-context.d.ts.map +1 -0
  96. package/dist/context/gl-context.js +32 -0
  97. package/dist/context/gl-context.js.map +1 -0
  98. package/dist/context/luma-context-data.d.ts +31 -0
  99. package/dist/context/luma-context-data.d.ts.map +1 -0
  100. package/dist/context/luma-context-data.js +5 -0
  101. package/dist/context/luma-context-data.js.map +1 -0
  102. package/dist/debug/debug-program-configuration.d.ts +2 -0
  103. package/dist/debug/debug-program-configuration.d.ts.map +1 -0
  104. package/dist/debug/debug-program-configuration.js +40 -0
  105. package/dist/debug/debug-program-configuration.js.map +1 -0
  106. package/dist/debug/debug-uniforms.d.ts +12 -0
  107. package/dist/debug/debug-uniforms.d.ts.map +1 -0
  108. package/dist/debug/debug-uniforms.js +108 -0
  109. package/dist/debug/debug-uniforms.js.map +1 -0
  110. package/dist/debug/debug-vertex-array.d.ts +5 -0
  111. package/dist/debug/debug-vertex-array.d.ts.map +1 -0
  112. package/dist/debug/debug-vertex-array.js +118 -0
  113. package/dist/debug/debug-vertex-array.js.map +1 -0
  114. package/dist/es5/bundle.js +3 -5
  115. package/dist/es5/bundle.js.map +1 -1
  116. package/dist/es5/classes/accessor.js +76 -108
  117. package/dist/es5/classes/accessor.js.map +1 -1
  118. package/dist/es5/classes/accessor.ts.disabled +159 -0
  119. package/dist/es5/classes/clear.js +33 -48
  120. package/dist/es5/classes/clear.js.map +1 -1
  121. package/dist/es5/classes/copy-and-blit.js +177 -192
  122. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  123. package/dist/es5/classes/framebuffer.js +538 -655
  124. package/dist/es5/classes/framebuffer.js.map +1 -1
  125. package/dist/es5/classes/program-configuration.js +127 -141
  126. package/dist/es5/classes/program-configuration.js.map +1 -1
  127. package/dist/es5/classes/program.js +294 -358
  128. package/dist/es5/classes/program.js.map +1 -1
  129. package/dist/es5/classes/query.js +115 -181
  130. package/dist/es5/classes/query.js.map +1 -1
  131. package/dist/es5/classes/renderbuffer-formats.js +186 -121
  132. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  133. package/dist/es5/classes/renderbuffer.js +104 -128
  134. package/dist/es5/classes/renderbuffer.js.map +1 -1
  135. package/dist/es5/classes/texture-2d.js +16 -39
  136. package/dist/es5/classes/texture-2d.js.map +1 -1
  137. package/dist/es5/classes/texture-3d.js +50 -89
  138. package/dist/es5/classes/texture-3d.js.map +1 -1
  139. package/dist/es5/classes/texture-cube.js +112 -162
  140. package/dist/es5/classes/texture-cube.js.map +1 -1
  141. package/dist/es5/classes/texture-formats.js +73 -42
  142. package/dist/es5/classes/texture-formats.js.map +1 -1
  143. package/dist/es5/classes/texture.js +670 -673
  144. package/dist/es5/classes/texture.js.map +1 -1
  145. package/dist/es5/classes/transform-feedback.js +150 -203
  146. package/dist/es5/classes/transform-feedback.js.map +1 -1
  147. package/dist/es5/classes/uniform-buffer-layout.js +89 -103
  148. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  149. package/dist/es5/classes/uniforms.js +134 -93
  150. package/dist/es5/classes/uniforms.js.map +1 -1
  151. package/dist/es5/classes/vertex-array-object.js +204 -306
  152. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  153. package/dist/es5/classes/vertex-array.js +317 -353
  154. package/dist/es5/classes/vertex-array.js.map +1 -1
  155. package/dist/es5/classes/webgl-buffer.js +391 -0
  156. package/dist/es5/classes/webgl-buffer.js.map +1 -0
  157. package/dist/es5/classes/webgl-resource.js +217 -0
  158. package/dist/es5/classes/webgl-resource.js.map +1 -0
  159. package/dist/es5/classes/webgl-shader.js +213 -0
  160. package/dist/es5/classes/webgl-shader.js.map +1 -0
  161. package/dist/es5/context/gl-context.js +46 -0
  162. package/dist/es5/context/gl-context.js.map +1 -0
  163. package/dist/es5/context/luma-context-data.js +12 -0
  164. package/dist/es5/context/luma-context-data.js.map +1 -0
  165. package/dist/es5/debug/debug-program-configuration.js +20 -48
  166. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  167. package/dist/es5/debug/debug-uniforms.js +72 -114
  168. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  169. package/dist/es5/debug/debug-vertex-array.js +56 -51
  170. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  171. package/dist/es5/features/check-glsl-extension.js +9 -10
  172. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  173. package/dist/es5/features/check-old-ie.js +5 -6
  174. package/dist/es5/features/check-old-ie.js.map +1 -1
  175. package/dist/es5/features/features.js +23 -37
  176. package/dist/es5/features/features.js.map +1 -1
  177. package/dist/es5/features/index.js +8 -8
  178. package/dist/es5/features/index.js.map +1 -1
  179. package/dist/es5/features/limits.js +36 -28
  180. package/dist/es5/features/limits.js.map +1 -1
  181. package/dist/es5/features/webgl-features-table.js +35 -15
  182. package/dist/es5/features/webgl-features-table.js.map +1 -1
  183. package/dist/es5/features/webgl-limits-table.js +160 -120
  184. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  185. package/dist/es5/index.js +144 -90
  186. package/dist/es5/index.js.map +1 -1
  187. package/dist/es5/init.js +12 -36
  188. package/dist/es5/init.js.map +1 -1
  189. package/dist/es5/types.js +2 -0
  190. package/dist/es5/types.js.map +1 -0
  191. package/dist/es5/utils/array-utils-flat.js +13 -14
  192. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  193. package/dist/es5/utils/assert.js +1 -1
  194. package/dist/es5/utils/assert.js.map +1 -1
  195. package/dist/es5/utils/check-props.js +20 -21
  196. package/dist/es5/utils/check-props.js.map +1 -1
  197. package/dist/es5/utils/format-value.js +14 -14
  198. package/dist/es5/utils/format-value.js.map +1 -1
  199. package/dist/es5/utils/index.js +68 -0
  200. package/dist/es5/utils/index.js.map +1 -0
  201. package/dist/es5/utils/is-old-ie.js +2 -3
  202. package/dist/es5/utils/is-old-ie.js.map +1 -1
  203. package/dist/es5/utils/load-file.js +11 -18
  204. package/dist/es5/utils/load-file.js.map +1 -1
  205. package/dist/es5/utils/stub-methods.js +4 -4
  206. package/dist/es5/utils/stub-methods.js.map +1 -1
  207. package/dist/es5/utils/utils.js +5 -10
  208. package/dist/es5/utils/utils.js.map +1 -1
  209. package/dist/es5/webgl-utils/attribute-utils.js +87 -74
  210. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  211. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  212. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  213. package/dist/es5/webgl-utils/format-utils.js +21 -17
  214. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  215. package/dist/es5/webgl-utils/get-error.js +18 -18
  216. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  217. package/dist/es5/webgl-utils/index.js +74 -0
  218. package/dist/es5/webgl-utils/index.js.map +1 -0
  219. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +44 -0
  220. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  221. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  222. package/dist/es5/webgl-utils/texture-utils.js +35 -29
  223. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  224. package/dist/es5/webgl-utils/typed-array-utils.js +51 -47
  225. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  226. package/dist/esm/bundle.js +2 -4
  227. package/dist/esm/bundle.js.map +1 -1
  228. package/dist/esm/classes/accessor.js +7 -7
  229. package/dist/esm/classes/accessor.js.map +1 -1
  230. package/dist/esm/classes/accessor.ts.disabled +159 -0
  231. package/dist/esm/classes/clear.js +15 -13
  232. package/dist/esm/classes/clear.js.map +1 -1
  233. package/dist/esm/classes/copy-and-blit.js +41 -43
  234. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  235. package/dist/esm/classes/framebuffer.js +336 -308
  236. package/dist/esm/classes/framebuffer.js.map +1 -1
  237. package/dist/esm/classes/program-configuration.js +17 -9
  238. package/dist/esm/classes/program-configuration.js.map +1 -1
  239. package/dist/esm/classes/program.js +69 -44
  240. package/dist/esm/classes/program.js.map +1 -1
  241. package/dist/esm/classes/query.js +17 -14
  242. package/dist/esm/classes/query.js.map +1 -1
  243. package/dist/esm/classes/renderbuffer-formats.js +72 -49
  244. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  245. package/dist/esm/classes/renderbuffer.js +84 -72
  246. package/dist/esm/classes/renderbuffer.js.map +1 -1
  247. package/dist/esm/classes/texture-2d.js +10 -3
  248. package/dist/esm/classes/texture-2d.js.map +1 -1
  249. package/dist/esm/classes/texture-3d.js +14 -11
  250. package/dist/esm/classes/texture-3d.js.map +1 -1
  251. package/dist/esm/classes/texture-cube.js +43 -28
  252. package/dist/esm/classes/texture-cube.js.map +1 -1
  253. package/dist/esm/classes/texture-formats.js +51 -50
  254. package/dist/esm/classes/texture-formats.js.map +1 -1
  255. package/dist/esm/classes/texture.js +164 -49
  256. package/dist/esm/classes/texture.js.map +1 -1
  257. package/dist/esm/classes/transform-feedback.js +24 -13
  258. package/dist/esm/classes/transform-feedback.js.map +1 -1
  259. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  260. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  261. package/dist/esm/classes/uniforms.js +111 -112
  262. package/dist/esm/classes/uniforms.js.map +1 -1
  263. package/dist/esm/classes/vertex-array-object.js +52 -88
  264. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  265. package/dist/esm/classes/vertex-array.js +50 -28
  266. package/dist/esm/classes/vertex-array.js.map +1 -1
  267. package/dist/esm/classes/webgl-buffer.js +379 -0
  268. package/dist/esm/classes/webgl-buffer.js.map +1 -0
  269. package/dist/esm/classes/webgl-resource.js +208 -0
  270. package/dist/esm/classes/webgl-resource.js.map +1 -0
  271. package/dist/esm/classes/webgl-shader.js +190 -0
  272. package/dist/esm/classes/webgl-shader.js.map +1 -0
  273. package/dist/esm/context/gl-context.js +32 -0
  274. package/dist/esm/context/gl-context.js.map +1 -0
  275. package/dist/esm/context/luma-context-data.js +5 -0
  276. package/dist/esm/context/luma-context-data.js.map +1 -0
  277. package/dist/esm/debug/debug-program-configuration.js +4 -4
  278. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  279. package/dist/esm/debug/debug-uniforms.js +9 -9
  280. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  281. package/dist/esm/debug/debug-vertex-array.js +19 -17
  282. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  283. package/dist/esm/features/check-glsl-extension.js +4 -4
  284. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  285. package/dist/esm/features/check-old-ie.js.map +1 -1
  286. package/dist/esm/features/features.js +14 -13
  287. package/dist/esm/features/features.js.map +1 -1
  288. package/dist/esm/features/index.js.map +1 -1
  289. package/dist/esm/features/limits.js +25 -22
  290. package/dist/esm/features/limits.js.map +1 -1
  291. package/dist/esm/features/webgl-features-table.js +6 -6
  292. package/dist/esm/features/webgl-features-table.js.map +1 -1
  293. package/dist/esm/features/webgl-limits-table.js +43 -42
  294. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  295. package/dist/esm/index.js +13 -15
  296. package/dist/esm/index.js.map +1 -1
  297. package/dist/esm/init.js +4 -23
  298. package/dist/esm/init.js.map +1 -1
  299. package/dist/esm/types.js +2 -0
  300. package/dist/esm/types.js.map +1 -0
  301. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  302. package/dist/esm/utils/assert.js +1 -1
  303. package/dist/esm/utils/assert.js.map +1 -1
  304. package/dist/esm/utils/check-props.js +4 -4
  305. package/dist/esm/utils/check-props.js.map +1 -1
  306. package/dist/esm/utils/format-value.js +4 -4
  307. package/dist/esm/utils/format-value.js.map +1 -1
  308. package/dist/esm/utils/index.js +7 -0
  309. package/dist/esm/utils/index.js.map +1 -0
  310. package/dist/esm/utils/is-old-ie.js +1 -1
  311. package/dist/esm/utils/is-old-ie.js.map +1 -1
  312. package/dist/esm/utils/load-file.js +2 -2
  313. package/dist/esm/utils/load-file.js.map +1 -1
  314. package/dist/esm/utils/stub-methods.js +2 -3
  315. package/dist/esm/utils/stub-methods.js.map +1 -1
  316. package/dist/esm/utils/utils.js +1 -3
  317. package/dist/esm/utils/utils.js.map +1 -1
  318. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  319. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  320. package/dist/esm/webgl-utils/constants-to-keys.js +4 -4
  321. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  322. package/dist/esm/webgl-utils/format-utils.js +16 -15
  323. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  324. package/dist/esm/webgl-utils/get-error.js +1 -1
  325. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  326. package/dist/esm/webgl-utils/index.js +5 -0
  327. package/dist/esm/webgl-utils/index.js.map +1 -0
  328. package/dist/esm/webgl-utils/parse-shader-compiler-log.js +37 -0
  329. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  330. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  331. package/dist/esm/webgl-utils/texture-utils.js +4 -3
  332. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  333. package/dist/esm/webgl-utils/typed-array-utils.js +19 -18
  334. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  335. package/dist/features/check-glsl-extension.d.ts +2 -0
  336. package/dist/features/check-glsl-extension.d.ts.map +1 -0
  337. package/dist/features/check-glsl-extension.js +27 -0
  338. package/dist/features/check-glsl-extension.js.map +1 -0
  339. package/dist/features/check-old-ie.d.ts +2 -0
  340. package/dist/features/check-old-ie.d.ts.map +1 -0
  341. package/dist/features/check-old-ie.js +8 -0
  342. package/dist/features/check-old-ie.js.map +1 -0
  343. package/dist/features/features.d.ts +6 -0
  344. package/dist/features/features.d.ts.map +1 -0
  345. package/dist/features/features.js +67 -0
  346. package/dist/features/features.js.map +1 -0
  347. package/dist/features/index.d.ts +5 -0
  348. package/dist/features/index.d.ts.map +1 -0
  349. package/dist/features/index.js +5 -0
  350. package/dist/features/index.js.map +1 -0
  351. package/dist/features/limits.d.ts +28 -0
  352. package/dist/features/limits.d.ts.map +1 -0
  353. package/dist/features/limits.js +55 -0
  354. package/dist/features/limits.js.map +1 -0
  355. package/dist/features/webgl-features-table.d.ts +30 -0
  356. package/dist/features/webgl-features-table.d.ts.map +1 -0
  357. package/dist/features/webgl-features-table.js +71 -0
  358. package/dist/features/webgl-features-table.js.map +1 -0
  359. package/dist/features/webgl-limits-table.d.ts +161 -0
  360. package/dist/features/webgl-limits-table.d.ts.map +1 -0
  361. package/dist/features/webgl-limits-table.js +161 -0
  362. package/dist/features/webgl-limits-table.js.map +1 -0
  363. package/dist/index.d.ts +33 -0
  364. package/dist/index.d.ts.map +1 -0
  365. package/dist/index.js +33 -0
  366. package/dist/index.js.map +1 -0
  367. package/dist/init.d.ts +5 -0
  368. package/dist/init.d.ts.map +1 -0
  369. package/dist/init.js +30 -0
  370. package/dist/init.js.map +1 -0
  371. package/dist/types.d.ts +9 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +2 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/utils/array-utils-flat.d.ts +9 -0
  376. package/dist/utils/array-utils-flat.d.ts.map +1 -0
  377. package/dist/utils/array-utils-flat.js +39 -0
  378. package/dist/utils/array-utils-flat.js.map +1 -0
  379. package/dist/utils/assert.d.ts +2 -0
  380. package/dist/utils/assert.d.ts.map +1 -0
  381. package/dist/utils/assert.js +6 -0
  382. package/dist/utils/assert.js.map +1 -0
  383. package/dist/utils/check-props.d.ts +2 -0
  384. package/dist/utils/check-props.d.ts.map +1 -0
  385. package/dist/utils/check-props.js +38 -0
  386. package/dist/utils/check-props.js.map +1 -0
  387. package/dist/utils/format-value.d.ts +5 -0
  388. package/dist/utils/format-value.d.ts.map +1 -0
  389. package/dist/utils/format-value.js +50 -0
  390. package/dist/utils/format-value.js.map +1 -0
  391. package/dist/utils/index.d.ts +7 -0
  392. package/dist/utils/index.d.ts.map +1 -0
  393. package/dist/utils/index.js +7 -0
  394. package/dist/utils/index.js.map +1 -0
  395. package/dist/utils/is-old-ie.d.ts +4 -0
  396. package/dist/utils/is-old-ie.d.ts.map +1 -0
  397. package/dist/utils/is-old-ie.js +5 -0
  398. package/dist/utils/is-old-ie.js.map +1 -0
  399. package/dist/utils/load-file.d.ts +4 -0
  400. package/dist/utils/load-file.d.ts.map +1 -0
  401. package/dist/utils/load-file.js +30 -0
  402. package/dist/utils/load-file.js.map +1 -0
  403. package/dist/utils/stub-methods.d.ts +2 -0
  404. package/dist/utils/stub-methods.d.ts.map +1 -0
  405. package/dist/utils/stub-methods.js +16 -0
  406. package/dist/utils/stub-methods.js.map +1 -0
  407. package/dist/utils/utils.d.ts +15 -0
  408. package/dist/utils/utils.d.ts.map +1 -0
  409. package/dist/utils/utils.js +20 -0
  410. package/dist/utils/utils.js.map +1 -0
  411. package/dist/webgl-utils/attribute-utils.d.ts +18 -0
  412. package/dist/webgl-utils/attribute-utils.d.ts.map +1 -0
  413. package/dist/webgl-utils/attribute-utils.js +182 -0
  414. package/dist/webgl-utils/attribute-utils.js.map +1 -0
  415. package/dist/webgl-utils/constants-to-keys.d.ts +4 -0
  416. package/dist/webgl-utils/constants-to-keys.d.ts.map +1 -0
  417. package/dist/webgl-utils/constants-to-keys.js +41 -0
  418. package/dist/webgl-utils/constants-to-keys.js.map +1 -0
  419. package/dist/webgl-utils/format-utils.d.ts +3 -0
  420. package/dist/webgl-utils/format-utils.d.ts.map +1 -0
  421. package/dist/webgl-utils/format-utils.js +45 -0
  422. package/dist/webgl-utils/format-utils.js.map +1 -0
  423. package/dist/webgl-utils/get-error.d.ts +3 -0
  424. package/dist/webgl-utils/get-error.d.ts.map +1 -0
  425. package/dist/webgl-utils/get-error.js +41 -0
  426. package/dist/webgl-utils/get-error.js.map +1 -0
  427. package/dist/webgl-utils/index.d.ts +5 -0
  428. package/dist/webgl-utils/index.d.ts.map +1 -0
  429. package/dist/webgl-utils/index.js +5 -0
  430. package/dist/webgl-utils/index.js.map +1 -0
  431. package/dist/webgl-utils/parse-shader-compiler-log.d.ts +8 -0
  432. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +1 -0
  433. package/dist/webgl-utils/parse-shader-compiler-log.js +37 -0
  434. package/dist/webgl-utils/parse-shader-compiler-log.js.map +1 -0
  435. package/dist/webgl-utils/request-animation-frame.d.ts +4 -0
  436. package/dist/webgl-utils/request-animation-frame.d.ts.map +1 -0
  437. package/dist/webgl-utils/request-animation-frame.js +7 -0
  438. package/dist/webgl-utils/request-animation-frame.js.map +1 -0
  439. package/dist/webgl-utils/texture-utils.d.ts +11 -0
  440. package/dist/webgl-utils/texture-utils.d.ts.map +1 -0
  441. package/dist/webgl-utils/texture-utils.js +48 -0
  442. package/dist/webgl-utils/texture-utils.js.map +1 -0
  443. package/dist/webgl-utils/typed-array-utils.d.ts +36 -0
  444. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -0
  445. package/dist/webgl-utils/typed-array-utils.js +108 -0
  446. package/dist/webgl-utils/typed-array-utils.js.map +1 -0
  447. package/package.json +9 -8
  448. package/src/bundle.ts +4 -0
  449. package/src/classes/accessor.js +3 -4
  450. package/src/classes/accessor.ts.disabled +159 -0
  451. package/src/classes/{clear.js → clear.ts} +13 -9
  452. package/src/classes/{copy-and-blit.js → copy-and-blit.ts} +113 -22
  453. package/src/classes/{framebuffer.js → framebuffer.ts} +355 -298
  454. package/src/classes/{program-configuration.js → program-configuration.ts} +18 -11
  455. package/src/classes/{program.js → program.ts} +56 -36
  456. package/src/classes/{query.js → query.ts} +28 -22
  457. package/src/classes/{renderbuffer-formats.js → renderbuffer-formats.ts} +42 -14
  458. package/src/classes/renderbuffer.ts +153 -0
  459. package/src/classes/{texture-2d.js → texture-2d.ts} +15 -5
  460. package/src/classes/{texture-3d.js → texture-3d.ts} +35 -10
  461. package/src/classes/{texture-cube.js → texture-cube.ts} +46 -28
  462. package/src/classes/{texture-formats.js → texture-formats.ts} +9 -1
  463. package/src/classes/{texture.js → texture.ts} +204 -37
  464. package/src/classes/{transform-feedback.js → transform-feedback.ts} +22 -14
  465. package/src/classes/{uniform-buffer-layout.js → uniform-buffer-layout.ts} +10 -6
  466. package/src/classes/{uniforms.js → uniforms.ts} +122 -70
  467. package/src/classes/{vertex-array-object.js → vertex-array-object.ts} +132 -107
  468. package/src/classes/{vertex-array.js → vertex-array.ts} +74 -54
  469. package/src/classes/{buffer.js → webgl-buffer.ts} +125 -51
  470. package/src/classes/{resource.js → webgl-resource.ts} +43 -36
  471. package/src/classes/webgl-shader.ts +200 -0
  472. package/src/context/gl-context.ts +31 -0
  473. package/src/context/luma-context-data.ts +27 -0
  474. package/src/debug/{debug-program-configuration.js → debug-program-configuration.ts} +0 -0
  475. package/src/debug/{debug-uniforms.js → debug-uniforms.ts} +18 -8
  476. package/src/debug/{debug-vertex-array.js → debug-vertex-array.ts} +7 -4
  477. package/src/features/{check-glsl-extension.js → check-glsl-extension.ts} +1 -1
  478. package/src/features/{check-old-ie.js → check-old-ie.ts} +0 -0
  479. package/src/features/{features.js → features.ts} +14 -13
  480. package/src/features/{index.js → index.ts} +0 -0
  481. package/src/features/{limits.js → limits.ts} +18 -17
  482. package/src/features/{webgl-features-table.js → webgl-features-table.ts} +0 -0
  483. package/src/features/{webgl-limits-table.js → webgl-limits-table.ts} +0 -0
  484. package/{dist/es5/index.d.ts → src/index.ts} +18 -16
  485. package/src/{init.js → init.ts} +1 -18
  486. package/{dist/es5/types.d.ts → src/types.ts} +0 -0
  487. package/src/utils/{array-utils-flat.js → array-utils-flat.ts} +0 -0
  488. package/src/utils/{assert.js → assert.ts} +1 -1
  489. package/src/utils/{check-props.js → check-props.ts} +0 -0
  490. package/src/utils/{format-value.js → format-value.ts} +2 -2
  491. package/src/utils/index.ts +6 -0
  492. package/src/utils/{is-old-ie.js → is-old-ie.ts} +1 -1
  493. package/src/utils/{load-file.js → load-file.ts} +3 -2
  494. package/src/utils/{stub-methods.js → stub-methods.ts} +1 -1
  495. package/src/utils/utils.ts +35 -0
  496. package/src/webgl-utils/{attribute-utils.js → attribute-utils.ts} +1 -2
  497. package/src/webgl-utils/{constants-to-keys.js → constants-to-keys.ts} +1 -1
  498. package/src/webgl-utils/{format-utils.js → format-utils.ts} +1 -1
  499. package/src/webgl-utils/{get-error.js → get-error.ts} +0 -0
  500. package/src/webgl-utils/index.ts +12 -0
  501. package/src/webgl-utils/parse-shader-compiler-log.ts +48 -0
  502. package/src/webgl-utils/{request-animation-frame.js → request-animation-frame.ts} +3 -2
  503. package/src/webgl-utils/texture-utils.js +2 -1
  504. package/dist/dist.js +0 -13555
  505. package/dist/dist.min.js +0 -1
  506. package/dist/es5/classes/buffer.d.ts +0 -84
  507. package/dist/es5/classes/buffer.js +0 -453
  508. package/dist/es5/classes/buffer.js.map +0 -1
  509. package/dist/es5/classes/clear.d.ts +0 -11
  510. package/dist/es5/classes/copy-and-blit.d.ts +0 -101
  511. package/dist/es5/classes/framebuffer.d.ts +0 -96
  512. package/dist/es5/classes/program-configuration.d.ts +0 -15
  513. package/dist/es5/classes/program.d.ts +0 -44
  514. package/dist/es5/classes/query.d.ts +0 -21
  515. package/dist/es5/classes/renderbuffer.d.ts +0 -34
  516. package/dist/es5/classes/resource.d.ts +0 -47
  517. package/dist/es5/classes/resource.js +0 -308
  518. package/dist/es5/classes/resource.js.map +0 -1
  519. package/dist/es5/classes/shader.d.ts +0 -29
  520. package/dist/es5/classes/shader.js +0 -221
  521. package/dist/es5/classes/shader.js.map +0 -1
  522. package/dist/es5/classes/texture-2d.d.ts +0 -11
  523. package/dist/es5/classes/texture-3d.d.ts +0 -29
  524. package/dist/es5/classes/texture-cube.d.ts +0 -23
  525. package/dist/es5/classes/texture.d.ts +0 -80
  526. package/dist/es5/classes/transform-feedback.d.ts +0 -16
  527. package/dist/es5/classes/uniform-buffer-layout.d.ts +0 -18
  528. package/dist/es5/classes/uniforms.d.ts +0 -63
  529. package/dist/es5/classes/vertex-array-object.d.ts +0 -25
  530. package/dist/es5/classes/vertex-array.d.ts +0 -37
  531. package/dist/es5/debug/debug-program-configuration.d.ts +0 -1
  532. package/dist/es5/debug/debug-uniforms.d.ts +0 -11
  533. package/dist/es5/debug/debug-vertex-array.d.ts +0 -1
  534. package/dist/es5/glsl-utils/format-glsl-error.d.ts +0 -16
  535. package/dist/es5/glsl-utils/format-glsl-error.js +0 -108
  536. package/dist/es5/glsl-utils/format-glsl-error.js.map +0 -1
  537. package/dist/es5/glsl-utils/get-shader-name.js +0 -14
  538. package/dist/es5/glsl-utils/get-shader-name.js.map +0 -1
  539. package/dist/es5/glsl-utils/get-shader-type-name.js +0 -22
  540. package/dist/es5/glsl-utils/get-shader-type-name.js.map +0 -1
  541. package/dist/es5/glsl-utils/get-shader-version.js +0 -22
  542. package/dist/es5/glsl-utils/get-shader-version.js.map +0 -1
  543. package/dist/es5/glsl-utils/index.js +0 -48
  544. package/dist/es5/glsl-utils/index.js.map +0 -1
  545. package/dist/es5/init.d.ts +0 -12
  546. package/dist/es5/utils/assert.d.ts +0 -1
  547. package/dist/es5/utils/is-old-ie.d.ts +0 -1
  548. package/dist/es5/utils/utils.d.ts +0 -13
  549. package/dist/es5/webgl-utils/request-animation-frame.d.ts +0 -3
  550. package/dist/esm/classes/buffer.d.ts +0 -84
  551. package/dist/esm/classes/buffer.js.map +0 -1
  552. package/dist/esm/classes/clear.d.ts +0 -11
  553. package/dist/esm/classes/copy-and-blit.d.ts +0 -101
  554. package/dist/esm/classes/framebuffer.d.ts +0 -96
  555. package/dist/esm/classes/program-configuration.d.ts +0 -15
  556. package/dist/esm/classes/program.d.ts +0 -44
  557. package/dist/esm/classes/query.d.ts +0 -21
  558. package/dist/esm/classes/renderbuffer.d.ts +0 -34
  559. package/dist/esm/classes/resource.d.ts +0 -47
  560. package/dist/esm/classes/resource.js.map +0 -1
  561. package/dist/esm/classes/shader.d.ts +0 -29
  562. package/dist/esm/classes/shader.js +0 -138
  563. package/dist/esm/classes/shader.js.map +0 -1
  564. package/dist/esm/classes/texture-2d.d.ts +0 -11
  565. package/dist/esm/classes/texture-3d.d.ts +0 -29
  566. package/dist/esm/classes/texture-cube.d.ts +0 -23
  567. package/dist/esm/classes/texture.d.ts +0 -80
  568. package/dist/esm/classes/transform-feedback.d.ts +0 -16
  569. package/dist/esm/classes/uniform-buffer-layout.d.ts +0 -18
  570. package/dist/esm/classes/uniforms.d.ts +0 -63
  571. package/dist/esm/classes/vertex-array-object.d.ts +0 -25
  572. package/dist/esm/classes/vertex-array.d.ts +0 -37
  573. package/dist/esm/debug/debug-program-configuration.d.ts +0 -1
  574. package/dist/esm/debug/debug-uniforms.d.ts +0 -11
  575. package/dist/esm/debug/debug-vertex-array.d.ts +0 -1
  576. package/dist/esm/glsl-utils/format-glsl-error.d.ts +0 -16
  577. package/dist/esm/glsl-utils/format-glsl-error.js +0 -93
  578. package/dist/esm/glsl-utils/format-glsl-error.js.map +0 -1
  579. package/dist/esm/glsl-utils/get-shader-name.js +0 -6
  580. package/dist/esm/glsl-utils/get-shader-name.js.map +0 -1
  581. package/dist/esm/glsl-utils/get-shader-type-name.js +0 -15
  582. package/dist/esm/glsl-utils/get-shader-type-name.js.map +0 -1
  583. package/dist/esm/glsl-utils/get-shader-version.js +0 -15
  584. package/dist/esm/glsl-utils/get-shader-version.js.map +0 -1
  585. package/dist/esm/glsl-utils/index.js +0 -5
  586. package/dist/esm/glsl-utils/index.js.map +0 -1
  587. package/dist/esm/index.d.ts +0 -71
  588. package/dist/esm/init.d.ts +0 -12
  589. package/dist/esm/types.d.ts +0 -8
  590. package/dist/esm/utils/assert.d.ts +0 -1
  591. package/dist/esm/utils/is-old-ie.d.ts +0 -1
  592. package/dist/esm/utils/utils.d.ts +0 -13
  593. package/dist/esm/webgl-utils/request-animation-frame.d.ts +0 -3
  594. package/src/bundle.js +0 -8
  595. package/src/classes/buffer.d.ts +0 -84
  596. package/src/classes/clear.d.ts +0 -11
  597. package/src/classes/copy-and-blit.d.ts +0 -101
  598. package/src/classes/framebuffer.d.ts +0 -96
  599. package/src/classes/program-configuration.d.ts +0 -15
  600. package/src/classes/program.d.ts +0 -44
  601. package/src/classes/query.d.ts +0 -21
  602. package/src/classes/renderbuffer.d.ts +0 -34
  603. package/src/classes/renderbuffer.js +0 -105
  604. package/src/classes/resource.d.ts +0 -47
  605. package/src/classes/shader.d.ts +0 -29
  606. package/src/classes/shader.js +0 -147
  607. package/src/classes/texture-2d.d.ts +0 -11
  608. package/src/classes/texture-3d.d.ts +0 -29
  609. package/src/classes/texture-cube.d.ts +0 -23
  610. package/src/classes/texture.d.ts +0 -80
  611. package/src/classes/transform-feedback.d.ts +0 -16
  612. package/src/classes/uniform-buffer-layout.d.ts +0 -18
  613. package/src/classes/uniforms.d.ts +0 -63
  614. package/src/classes/vertex-array-object.d.ts +0 -25
  615. package/src/classes/vertex-array.d.ts +0 -37
  616. package/src/debug/debug-program-configuration.d.ts +0 -1
  617. package/src/debug/debug-uniforms.d.ts +0 -11
  618. package/src/debug/debug-vertex-array.d.ts +0 -1
  619. package/src/glsl-utils/format-glsl-error.d.ts +0 -16
  620. package/src/glsl-utils/format-glsl-error.js +0 -107
  621. package/src/glsl-utils/get-shader-name.js +0 -7
  622. package/src/glsl-utils/get-shader-type-name.js +0 -13
  623. package/src/glsl-utils/get-shader-version.js +0 -12
  624. package/src/glsl-utils/index.js +0 -8
  625. package/src/index.d.ts +0 -71
  626. package/src/index.js +0 -70
  627. package/src/init.d.ts +0 -12
  628. package/src/types.d.ts +0 -8
  629. package/src/utils/assert.d.ts +0 -1
  630. package/src/utils/is-old-ie.d.ts +0 -1
  631. package/src/utils/utils.d.ts +0 -13
  632. package/src/utils/utils.js +0 -36
  633. package/src/webgl-utils/request-animation-frame.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/uniforms.js"],"names":["UNIFORM_SETTERS","getArraySetter","bind","toFloatArray","setVectorUniform","toIntArray","setMatrixUniform","getSamplerSetter","toUIntArray","FLOAT_ARRAY","INT_ARRAY","UINT_ARRAY","array1","toTypedArray","value","uniformLength","Type","cache","Number","isFinite","length","log","warn","result","i","Float32Array","Int32Array","Uint32Array","getUniformSetter","gl","location","info","setter","type","Error","parseUniformName","name","isArray","UNIFORM_NAME_REGEXP","matches","match","Boolean","checkUniformValues","uniforms","source","uniformMap","uniformName","shouldCheck","checkUniformValue","console","error","Array","ArrayBuffer","isView","checkUniformArray","Texture","Renderbuffer","Framebuffer","texture","copyUniform","key","dest","len","slice","checkLength","Math","min","update","uniform1i","functionName","toArray","size","uniformSetter","cacheLength","arrayValue","set"],"mappings":"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","sourcesContent":["/** @typedef {import('./uniforms')} types */\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\n\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport {assert} from '../utils/assert';\n\nconst UNIFORM_SETTERS = {\n // WEBGL1\n\n /* eslint-disable max-len */\n [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n\n [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [GL.FLOAT_MAT4]: getArraySetter.bind(\n null,\n 'uniformMatrix4fv',\n toFloatArray,\n 16,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n // WEBGL2 - unsigned integers, irregular matrices, additional texture samplers\n\n [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(\n null,\n 'uniform2uiv',\n toUIntArray,\n 2,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(\n null,\n 'uniform3uiv',\n toUIntArray,\n 3,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(\n null,\n 'uniform4uiv',\n toUIntArray,\n 4,\n setVectorUniform\n ),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2x3]: getArraySetter.bind(\n null,\n 'uniformMatrix2x3fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT2x4]: getArraySetter.bind(\n null,\n 'uniformMatrix2x4fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x2]: getArraySetter.bind(\n null,\n 'uniformMatrix3x2fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x4]: getArraySetter.bind(\n null,\n 'uniformMatrix3x4fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x2]: getArraySetter.bind(\n null,\n 'uniformMatrix4x2fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x3]: getArraySetter.bind(\n null,\n 'uniformMatrix4x3fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n [GL.SAMPLER_3D]: getSamplerSetter,\n [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,\n [GL.INT_SAMPLER_2D]: getSamplerSetter,\n [GL.INT_SAMPLER_3D]: getSamplerSetter,\n [GL.INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter\n /* eslint-enable max-len */\n};\n\n// Pre-allocated typed arrays for temporary conversion\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\n\nconst array1 = [0];\n\n// Functions to ensure the type of uniform values\n// This is done because uniform*v functions\n// are extremely slow when consuming JS arrays directly.\nfunction toTypedArray(value, uniformLength, Type, cache) {\n // convert boolean uniforms to Number\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n const length = value.length;\n if (length % uniformLength) {\n log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n} // Returns a Magic Uniform Setter\n\n// PUBLIC API\n\n/** @type {types['getUniformSetter']} */ export function getUniformSetter(gl, location, info) {\n const setter = UNIFORM_SETTERS[info.type];\n if (!setter) {\n throw new Error(`Unknown GLSL uniform type ${info.type}`);\n }\n\n // NOTE(Tarek): This construction is the ensure\n // separate caches for all setters.\n return setter().bind(null, gl, location);\n}\n\n/** @type {types['parseUniformName']} */\nexport function parseUniformName(name) {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n} // To facilitate early detection of e.g. undefined values in JavaScript\n\n// Basic checks of uniform values (with or without knowledge of program)\n\n/** @type {types['checkUniformValues']} */\nexport function checkUniformValues(uniforms, source, uniformMap) {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !checkUniformValue(value)) {\n // Add space to source\n source = source ? `${source} ` : '';\n // Value could be unprintable so write the object on console\n console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line\n /* eslint-enable no-console */\n throw new Error(`${source} Bad uniform ${uniformName}`);\n }\n }\n return true;\n}\n\n// TODO use type information during validation\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n // Check if single value is a number\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n return false;\n}\n\n/** @type {types['copyUniform']} */\nexport function copyUniform(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n // @ts-ignore\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n // @ts-ignore\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n\n// HELPERS\n\nfunction checkUniformArray(value) {\n // Check that every element in array is a number, and at least 1 element\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// NOTE(Tarek): Setters maintain a cache\n// of the previously set value, and\n// avoid resetting it if it's the same.\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n"],"file":"uniforms.js"}
1
+ {"version":3,"sources":["../../../src/classes/uniforms.ts"],"names":["UNIFORM_SETTERS","GL","FLOAT","getArraySetter","bind","toFloatArray","setVectorUniform","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT","toIntArray","INT_VEC2","INT_VEC3","INT_VEC4","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","setMatrixUniform","FLOAT_MAT3","FLOAT_MAT4","SAMPLER_2D","getSamplerSetter","SAMPLER_CUBE","UNSIGNED_INT","toUIntArray","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","FLOAT_MAT2x3","FLOAT_MAT2x4","FLOAT_MAT3x2","FLOAT_MAT3x4","FLOAT_MAT4x2","FLOAT_MAT4x3","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","FLOAT_ARRAY","INT_ARRAY","UINT_ARRAY","array1","getUniformSetter","gl","location","info","setter","type","Error","parseUniformName","name","length","isArray","UNIFORM_NAME_REGEXP","matches","match","Number","Boolean","checkUniformValues","uniforms","source","uniformMap","uniformName","value","shouldCheck","checkUniformValue","console","error","copyUniform","key","Array","ArrayBuffer","isView","dest","i","len","slice","checkUniformArray","isFinite","Texture","Renderbuffer","Framebuffer","texture","checkLength","Math","min","cache","update","uniform1i","functionName","toArray","size","uniformSetter","cacheLength","arrayValue","Float32Array","set","toTypedArray","uniformLength","Type","log","warn","result","Int32Array","Uint32Array"],"mappings":"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","sourcesContent":["/** @typedef {import('./uniforms')} types */\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport {Matrix4} from '@math.gl/core';\n\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport {assert} from '../utils';\n\ntype NumberUniformInfo = {\n type: 'number'\n value: number\n min: number\n max: number\n}\n\ntype BooleanUniformInfo = {\n type: 'boolean'\n value: boolean\n}\n\ntype ArrayUniformInfo = {\n type: 'array'\n value: Array<any>\n}\n\ntype ObjectUniformInfo = {\n type: 'object'\n value: Object\n}\n\ntype UniformInfo = NumberUniformInfo |\n BooleanUniformInfo |\n ArrayUniformInfo |\n ObjectUniformInfo\n\n// https://luma.gl/docs/developer-guide/shader-modules#getuniforms\ntype UniformsOptions = {\n [uniformName: string]: UniformInfo\n}\n\ntype Uniform = UniformInfo |\n Buffer | (() => Buffer) | Framebuffer |\n Texture |\n Matrix4 | // TODO: which other math.gl classes?\n number | [number, number] | [number, number, number] | [number, number, number, number]\n\ntype Uniforms = {\n [uniformName: string]: Uniform\n}\n\nconst UNIFORM_SETTERS = {\n // WEBGL1\n\n /* eslint-disable max-len */\n [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n\n [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [GL.FLOAT_MAT4]: getArraySetter.bind(\n null,\n 'uniformMatrix4fv',\n toFloatArray,\n 16,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n // WEBGL2 - unsigned integers, irregular matrices, additional texture samplers\n\n [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(\n null,\n 'uniform2uiv',\n toUIntArray,\n 2,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(\n null,\n 'uniform3uiv',\n toUIntArray,\n 3,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(\n null,\n 'uniform4uiv',\n toUIntArray,\n 4,\n setVectorUniform\n ),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2x3]: getArraySetter.bind(\n null,\n 'uniformMatrix2x3fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT2x4]: getArraySetter.bind(\n null,\n 'uniformMatrix2x4fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x2]: getArraySetter.bind(\n null,\n 'uniformMatrix3x2fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x4]: getArraySetter.bind(\n null,\n 'uniformMatrix3x4fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x2]: getArraySetter.bind(\n null,\n 'uniformMatrix4x2fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x3]: getArraySetter.bind(\n null,\n 'uniformMatrix4x3fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n [GL.SAMPLER_3D]: getSamplerSetter,\n [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,\n [GL.INT_SAMPLER_2D]: getSamplerSetter,\n [GL.INT_SAMPLER_3D]: getSamplerSetter,\n [GL.INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter\n /* eslint-enable max-len */\n};\n\n// Pre-allocated typed arrays for temporary conversion\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\n\nconst array1 = [0];\n\n// PUBLIC API\n\n/** Returns a Magic Uniform Setter */\nexport function getUniformSetter(gl: WebGLRenderingContext, location: number, info: UniformInfo): any {\n const setter = UNIFORM_SETTERS[info.type];\n if (!setter) {\n throw new Error(`Unknown GLSL uniform type ${info.type}`);\n }\n\n // NOTE(Tarek): This construction is the ensure\n // separate caches for all setters.\n return setter().bind(null, gl, location);\n}\n\nexport function parseUniformName(name: string): {name: string; isArray: boolean, length: number} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: Number(matches[2]) || 1,\n isArray: Boolean(matches[2])\n };\n}\n\n// To facilitate early detection of e.g. undefined values in JavaScript\n\n// Basic checks of uniform values (with or without knowledge of program)\n\n/**\n * Basic checks of uniform values (with or without knowledge of program)\n * To facilitate early detection of e.g. undefined values in JavaScript\n */\n export function checkUniformValues(uniforms: object, source?: string, uniformMap?: object): boolean {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !checkUniformValue(value)) {\n // Add space to source\n source = source ? `${source} ` : '';\n // Value could be unprintable so write the object on console\n console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line\n /* eslint-enable no-console */\n throw new Error(`${source} Bad uniform ${uniformName}`);\n }\n }\n return true;\n}\n\n /**\n * Creates a copy of the uniform\n */\nexport function copyUniform(uniforms: object, key: string, value: any): void {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n // @ts-ignore\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n // @ts-ignore\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n\n// HELPERS\n\n// TODO use type information during validation\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n // Check if single value is a number\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n return false;\n}\n\n\nfunction checkUniformArray(value) {\n // Check that every element in array is a number, and at least 1 element\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// NOTE(Tarek): Setters maintain a cache\n// of the previously set value, and\n// avoid resetting it if it's the same.\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n\n// Functions to ensure the type of uniform values\n// This is done because uniform*v functions\n// are extremely slow when consuming JS arrays directly.\n\nfunction toTypedArray(value, uniformLength, Type, cache) {\n // convert boolean uniforms to Number\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n const length = value.length;\n if (length % uniformLength) {\n log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n}\n"],"file":"uniforms.js"}