@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
@@ -0,0 +1,251 @@
1
+ import GL from '@luma.gl/constants';
2
+ import { log } from '@luma.gl/gltools';
3
+ import Framebuffer from './framebuffer';
4
+ import Renderbuffer from './renderbuffer';
5
+ import Texture from './texture';
6
+ import { assert } from '../utils';
7
+ const UNIFORM_SETTERS = {
8
+ [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),
9
+ [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),
10
+ [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),
11
+ [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),
12
+ [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),
13
+ [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),
14
+ [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),
15
+ [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),
16
+ [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),
17
+ [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),
18
+ [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),
19
+ [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),
20
+ [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),
21
+ [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),
22
+ [GL.FLOAT_MAT4]: getArraySetter.bind(null, 'uniformMatrix4fv', toFloatArray, 16, setMatrixUniform),
23
+ [GL.SAMPLER_2D]: getSamplerSetter,
24
+ [GL.SAMPLER_CUBE]: getSamplerSetter,
25
+ [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),
26
+ [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(null, 'uniform2uiv', toUIntArray, 2, setVectorUniform),
27
+ [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(null, 'uniform3uiv', toUIntArray, 3, setVectorUniform),
28
+ [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(null, 'uniform4uiv', toUIntArray, 4, setVectorUniform),
29
+ [GL.FLOAT_MAT2x3]: getArraySetter.bind(null, 'uniformMatrix2x3fv', toFloatArray, 6, setMatrixUniform),
30
+ [GL.FLOAT_MAT2x4]: getArraySetter.bind(null, 'uniformMatrix2x4fv', toFloatArray, 8, setMatrixUniform),
31
+ [GL.FLOAT_MAT3x2]: getArraySetter.bind(null, 'uniformMatrix3x2fv', toFloatArray, 6, setMatrixUniform),
32
+ [GL.FLOAT_MAT3x4]: getArraySetter.bind(null, 'uniformMatrix3x4fv', toFloatArray, 12, setMatrixUniform),
33
+ [GL.FLOAT_MAT4x2]: getArraySetter.bind(null, 'uniformMatrix4x2fv', toFloatArray, 8, setMatrixUniform),
34
+ [GL.FLOAT_MAT4x3]: getArraySetter.bind(null, 'uniformMatrix4x3fv', toFloatArray, 12, setMatrixUniform),
35
+ [GL.SAMPLER_2D]: getSamplerSetter,
36
+ [GL.SAMPLER_CUBE]: getSamplerSetter,
37
+ [GL.SAMPLER_3D]: getSamplerSetter,
38
+ [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,
39
+ [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,
40
+ [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,
41
+ [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,
42
+ [GL.INT_SAMPLER_2D]: getSamplerSetter,
43
+ [GL.INT_SAMPLER_3D]: getSamplerSetter,
44
+ [GL.INT_SAMPLER_CUBE]: getSamplerSetter,
45
+ [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,
46
+ [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,
47
+ [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,
48
+ [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,
49
+ [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter
50
+ };
51
+ const FLOAT_ARRAY = {};
52
+ const INT_ARRAY = {};
53
+ const UINT_ARRAY = {};
54
+ const array1 = [0];
55
+ export function getUniformSetter(gl, location, info) {
56
+ const setter = UNIFORM_SETTERS[info.type];
57
+
58
+ if (!setter) {
59
+ throw new Error("Unknown GLSL uniform type ".concat(info.type));
60
+ }
61
+
62
+ return setter().bind(null, gl, location);
63
+ }
64
+ export function parseUniformName(name) {
65
+ if (name[name.length - 1] !== ']') {
66
+ return {
67
+ name,
68
+ length: 1,
69
+ isArray: false
70
+ };
71
+ }
72
+
73
+ const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
74
+ const matches = name.match(UNIFORM_NAME_REGEXP);
75
+
76
+ if (!matches || matches.length < 2) {
77
+ throw new Error("Failed to parse GLSL uniform name ".concat(name));
78
+ }
79
+
80
+ return {
81
+ name: matches[1],
82
+ length: Number(matches[2]) || 1,
83
+ isArray: Boolean(matches[2])
84
+ };
85
+ }
86
+ export function checkUniformValues(uniforms, source, uniformMap) {
87
+ for (const uniformName in uniforms) {
88
+ const value = uniforms[uniformName];
89
+ const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);
90
+
91
+ if (shouldCheck && !checkUniformValue(value)) {
92
+ source = source ? "".concat(source, " ") : '';
93
+ console.error("".concat(source, " Bad uniform ").concat(uniformName), value);
94
+ throw new Error("".concat(source, " Bad uniform ").concat(uniformName));
95
+ }
96
+ }
97
+
98
+ return true;
99
+ }
100
+ export function copyUniform(uniforms, key, value) {
101
+ if (Array.isArray(value) || ArrayBuffer.isView(value)) {
102
+ if (uniforms[key]) {
103
+ const dest = uniforms[key];
104
+
105
+ for (let i = 0, len = value.length; i < len; ++i) {
106
+ dest[i] = value[i];
107
+ }
108
+ } else {
109
+ uniforms[key] = value.slice();
110
+ }
111
+ } else {
112
+ uniforms[key] = value;
113
+ }
114
+ }
115
+
116
+ function checkUniformValue(value) {
117
+ if (Array.isArray(value) || ArrayBuffer.isView(value)) {
118
+ return checkUniformArray(value);
119
+ }
120
+
121
+ if (isFinite(value)) {
122
+ return true;
123
+ } else if (value === true || value === false) {
124
+ return true;
125
+ } else if (value instanceof Texture) {
126
+ return true;
127
+ } else if (value instanceof Renderbuffer) {
128
+ return true;
129
+ } else if (value instanceof Framebuffer) {
130
+ return Boolean(value.texture);
131
+ }
132
+
133
+ return false;
134
+ }
135
+
136
+ function checkUniformArray(value) {
137
+ if (value.length === 0) {
138
+ return false;
139
+ }
140
+
141
+ const checkLength = Math.min(value.length, 16);
142
+
143
+ for (let i = 0; i < checkLength; ++i) {
144
+ if (!Number.isFinite(value[i])) {
145
+ return false;
146
+ }
147
+ }
148
+
149
+ return true;
150
+ }
151
+
152
+ function getSamplerSetter() {
153
+ let cache = null;
154
+ return (gl, location, value) => {
155
+ const update = cache !== value;
156
+
157
+ if (update) {
158
+ gl.uniform1i(location, value);
159
+ cache = value;
160
+ }
161
+
162
+ return update;
163
+ };
164
+ }
165
+
166
+ function getArraySetter(functionName, toArray, size, uniformSetter) {
167
+ let cache = null;
168
+ let cacheLength = null;
169
+ return (gl, location, value) => {
170
+ const arrayValue = toArray(value, size);
171
+ const length = arrayValue.length;
172
+ let update = false;
173
+
174
+ if (cache === null) {
175
+ cache = new Float32Array(length);
176
+ cacheLength = length;
177
+ update = true;
178
+ } else {
179
+ assert(cacheLength === length, 'Uniform length cannot change.');
180
+
181
+ for (let i = 0; i < length; ++i) {
182
+ if (arrayValue[i] !== cache[i]) {
183
+ update = true;
184
+ break;
185
+ }
186
+ }
187
+ }
188
+
189
+ if (update) {
190
+ uniformSetter(gl, functionName, location, arrayValue);
191
+ cache.set(arrayValue);
192
+ }
193
+
194
+ return update;
195
+ };
196
+ }
197
+
198
+ function setVectorUniform(gl, functionName, location, value) {
199
+ gl[functionName](location, value);
200
+ }
201
+
202
+ function setMatrixUniform(gl, functionName, location, value) {
203
+ gl[functionName](location, false, value);
204
+ }
205
+
206
+ function toTypedArray(value, uniformLength, Type, cache) {
207
+ if (uniformLength === 1 && typeof value === 'boolean') {
208
+ value = value ? 1 : 0;
209
+ }
210
+
211
+ if (Number.isFinite(value)) {
212
+ array1[0] = value;
213
+ value = array1;
214
+ }
215
+
216
+ const length = value.length;
217
+
218
+ if (length % uniformLength) {
219
+ log.warn("Uniform size should be multiples of ".concat(uniformLength), value)();
220
+ }
221
+
222
+ if (value instanceof Type) {
223
+ return value;
224
+ }
225
+
226
+ let result = cache[length];
227
+
228
+ if (!result) {
229
+ result = new Type(length);
230
+ cache[length] = result;
231
+ }
232
+
233
+ for (let i = 0; i < length; i++) {
234
+ result[i] = value[i];
235
+ }
236
+
237
+ return result;
238
+ }
239
+
240
+ function toFloatArray(value, uniformLength) {
241
+ return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);
242
+ }
243
+
244
+ function toIntArray(value, uniformLength) {
245
+ return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);
246
+ }
247
+
248
+ function toUIntArray(value, uniformLength) {
249
+ return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);
250
+ }
251
+ //# sourceMappingURL=uniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/classes/uniforms.ts"],"names":["GL","log","Framebuffer","Renderbuffer","Texture","assert","UNIFORM_SETTERS","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","checkLength","Math","min","cache","update","uniform1i","functionName","toArray","size","uniformSetter","cacheLength","arrayValue","Float32Array","set","toTypedArray","uniformLength","Type","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"}
@@ -0,0 +1,75 @@
1
+ import Program from './program';
2
+ import WebGLResource, { ResourceProps } from './webgl-resource';
3
+ import Buffer from './webgl-buffer';
4
+ /**
5
+ * VertexArrayObject properties
6
+ * @param constantAttributeZero Attribute 0 can not be disable on most desktop OpenGL based browsers
7
+ * and on iOS Safari browser.
8
+ */
9
+ export declare type VertexArrayObjectProps = ResourceProps & {
10
+ constantAttributeZero?: boolean;
11
+ program?: Program;
12
+ isDefaultArray?: boolean;
13
+ };
14
+ export default class VertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
15
+ private static MAX_ATTRIBUTES;
16
+ static isSupported(gl: WebGLRenderingContext, options?: VertexArrayObjectProps): boolean;
17
+ /**
18
+ * Returns the global (null) vertex array object. Exists even when no extension available.
19
+ * @todo (Tarek): VAOs are now polyfilled. Deprecate this in 9.0
20
+ */
21
+ static getDefaultArray(gl: WebGLRenderingContext): VertexArrayObject;
22
+ /** Get maximum number of attributes in a vertex array */
23
+ static getMaxAttributes(gl: WebGLRenderingContext): number;
24
+ /**
25
+ * Set an attribute to a constant value
26
+ * @param gl
27
+ * @param location
28
+ * @param array
29
+ *
30
+ * @note Constants are stored globally on the WebGL context, not the VAO
31
+ * so they need to be updated before every render
32
+ * @todo - use known type (in configuration or passed in) to allow non-typed arrays?
33
+ * @todo - remember/cache values to avoid setting them unnecessarily?
34
+ */
35
+ static setConstant(gl: WebGLRenderingContext, location: any, array: any): void;
36
+ private buffer;
37
+ private bufferValue;
38
+ private isDefaultArray;
39
+ constructor(gl: WebGLRenderingContext, opts?: VertexArrayObjectProps);
40
+ delete(): this;
41
+ get MAX_ATTRIBUTES(): number;
42
+ setElementBuffer(elementBuffer?: any, opts?: {}): this;
43
+ /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
44
+ setBuffer(location: any, buffer: any, accessor: any): this;
45
+ /**
46
+ * Enabling an attribute location makes it reference the currently bound buffer
47
+ * Disabling an attribute location makes it reference the global constant value
48
+ * TODO - handle single values for size 1 attributes?
49
+ * TODO - convert classic arrays based on known type?
50
+ */
51
+ enable(location: any, enable?: boolean): this;
52
+ /**
53
+ * Provide a means to create a buffer that is equivalent to a constant.
54
+ * NOTE: Desktop OpenGL cannot disable attribute 0.
55
+ * https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-
56
+ * this-has-significant-performance-penalty
57
+ */
58
+ getConstantBuffer(elementCount: number, value: any): Buffer;
59
+ /** @deprecated this function has no effect */
60
+ initialize(props?: VertexArrayObjectProps): this;
61
+ /** @deprecated this function is not implemented */
62
+ setProps(props: VertexArrayObjectProps): this;
63
+ _normalizeConstantArrayValue(arrayValue: any): any;
64
+ _compareConstantArrayValues(v1: any, v2: any): boolean;
65
+ static _setConstantFloatArray(gl: WebGLRenderingContext, location: any, array: any): void;
66
+ static _setConstantIntArray(gl: WebGL2RenderingContext, location: any, array: any): void;
67
+ static _setConstantUintArray(gl: WebGL2RenderingContext, location: any, array: any): void;
68
+ _createHandle(): WebGLVertexArrayObject;
69
+ _deleteHandle(): void;
70
+ _bindHandle(handle: any): void;
71
+ _getParameter(pname: number, { location }: {
72
+ location: any;
73
+ }): any;
74
+ }
75
+ //# sourceMappingURL=vertex-array-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex-array-object.d.ts","sourceRoot":"","sources":["../../src/classes/vertex-array-object.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,aAAa,EAAE,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC9D,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAOpC;;;;GAIG;AACH,oBAAY,sBAAsB,GAAG,aAAa,GAAG;IACnD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa,CAAC,sBAAsB,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IAEtC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO;IASxF;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,qBAAqB,GAAG,iBAAiB;IAOpE,yDAAyD;IACzD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,GAAG,MAAM;IAU1D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAgB9E,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAkB;gBAG5B,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAWpE,MAAM,IAAI,IAAI;IAQd,IAAI,cAAc,IAAI,MAAM,CAE3B;IAID,gBAAgB,CAAC,aAAa,MAAO,EAAE,IAAI,KAAK;IAWhD,gGAAgG;IAChG,SAAS,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,EAAE,QAAQ,KAAA,GAAG,IAAI;IAgC3C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,KAAA,EAAE,MAAM,UAAO,GAAG,IAAI;IAkBrC;;;;;OAKG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,KAAA,GAAG,MAAM;IA8BtD,8CAA8C;IAC9C,UAAU,CAAC,KAAK,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAIhD,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAS7C,4BAA4B,CAAC,UAAU,KAAA;IAOvC,2BAA2B,CAAC,EAAE,KAAA,EAAE,EAAE,KAAA,GAAG,OAAO;IAY5C,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,qBAAqB,EAAE,QAAQ,KAAA,EAAE,KAAK,KAAA,GAAG,IAAI;IAmB/E,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,sBAAsB,EAAE,QAAQ,KAAA,EAAE,KAAK,KAAA;IAoBvE,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,EAAE,QAAQ,KAAA,EAAE,KAAK,KAAA;IAuBxE,aAAa;IAIb,aAAa,IAAI,IAAI;IAOrB,WAAW,CAAC,MAAM,KAAA,GAAG,IAAI;IAKzB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAC,QAAQ,EAAC;;KAAA;CAWxC"}
@@ -0,0 +1,262 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import GL from '@luma.gl/constants';
3
+ import { assertWebGL2Context, isWebGL2 } from '@luma.gl/gltools';
4
+ import { getBrowser } from 'probe.gl';
5
+ import WebGLResource from './webgl-resource';
6
+ import Buffer from './webgl-buffer';
7
+ import { getScratchArray, fillArray } from '../utils/array-utils-flat';
8
+ import { assert } from '../utils';
9
+ import { getLumaContextData } from '../context/luma-context-data';
10
+ const ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';
11
+ export default class VertexArrayObject extends WebGLResource {
12
+ static isSupported(gl, options) {
13
+ if (options !== null && options !== void 0 && options.constantAttributeZero) {
14
+ return isWebGL2(gl) || getBrowser() === 'Chrome';
15
+ }
16
+
17
+ return true;
18
+ }
19
+
20
+ static getDefaultArray(gl) {
21
+ const lumaContextData = getLumaContextData(gl);
22
+ lumaContextData.defaultVertexArray = lumaContextData.defaultVertexArray || new VertexArrayObject(gl, {
23
+ handle: null,
24
+ isDefaultArray: true
25
+ });
26
+ return lumaContextData.defaultVertexArray;
27
+ }
28
+
29
+ static getMaxAttributes(gl) {
30
+ VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
31
+ return VertexArrayObject.MAX_ATTRIBUTES;
32
+ }
33
+
34
+ static setConstant(gl, location, array) {
35
+ switch (array.constructor) {
36
+ case Float32Array:
37
+ VertexArrayObject._setConstantFloatArray(gl, location, array);
38
+
39
+ break;
40
+
41
+ case Int32Array:
42
+ VertexArrayObject._setConstantIntArray(assertWebGL2Context(gl), location, array);
43
+
44
+ break;
45
+
46
+ case Uint32Array:
47
+ VertexArrayObject._setConstantUintArray(assertWebGL2Context(gl), location, array);
48
+
49
+ break;
50
+
51
+ default:
52
+ assert(false);
53
+ }
54
+ }
55
+
56
+ constructor(gl, opts) {
57
+ super(gl, { ...opts,
58
+ id: (opts === null || opts === void 0 ? void 0 : opts.id) || (opts === null || opts === void 0 ? void 0 : opts.program) && (opts === null || opts === void 0 ? void 0 : opts.program.id)
59
+ }, {});
60
+
61
+ _defineProperty(this, "buffer", null);
62
+
63
+ _defineProperty(this, "bufferValue", null);
64
+
65
+ _defineProperty(this, "isDefaultArray", false);
66
+
67
+ this.buffer = null;
68
+ this.bufferValue = null;
69
+ this.isDefaultArray = (opts === null || opts === void 0 ? void 0 : opts.isDefaultArray) || false;
70
+ Object.seal(this);
71
+ }
72
+
73
+ delete() {
74
+ super.delete();
75
+
76
+ if (this.buffer) {
77
+ this.buffer.delete();
78
+ }
79
+
80
+ return this;
81
+ }
82
+
83
+ get MAX_ATTRIBUTES() {
84
+ return VertexArrayObject.getMaxAttributes(this.gl);
85
+ }
86
+
87
+ setElementBuffer(elementBuffer = null, opts = {}) {
88
+ assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);
89
+ this.bind(() => {
90
+ this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);
91
+ });
92
+ return this;
93
+ }
94
+
95
+ setBuffer(location, buffer, accessor) {
96
+ if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {
97
+ return this.setElementBuffer(buffer, accessor);
98
+ }
99
+
100
+ const {
101
+ size,
102
+ type,
103
+ stride,
104
+ offset,
105
+ normalized,
106
+ integer,
107
+ divisor
108
+ } = accessor;
109
+ const {
110
+ gl,
111
+ gl2
112
+ } = this;
113
+ location = Number(location);
114
+ this.bind(() => {
115
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);
116
+
117
+ if (integer) {
118
+ assert(isWebGL2(gl));
119
+ gl2.vertexAttribIPointer(location, size, type, stride, offset);
120
+ } else {
121
+ gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
122
+ }
123
+
124
+ gl.enableVertexAttribArray(location);
125
+ gl2.vertexAttribDivisor(location, divisor || 0);
126
+ });
127
+ return this;
128
+ }
129
+
130
+ enable(location, enable = true) {
131
+ const disablingAttributeZero = !enable && location === 0 && !VertexArrayObject.isSupported(this.gl, {
132
+ constantAttributeZero: true
133
+ });
134
+
135
+ if (!disablingAttributeZero) {
136
+ location = Number(location);
137
+ this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));
138
+ }
139
+
140
+ return this;
141
+ }
142
+
143
+ getConstantBuffer(elementCount, value) {
144
+ const constantValue = this._normalizeConstantArrayValue(value);
145
+
146
+ const byteLength = constantValue.byteLength * elementCount;
147
+ const length = constantValue.length * elementCount;
148
+ let updateNeeded = !this.buffer;
149
+ this.buffer = this.buffer || new Buffer(this.gl, byteLength);
150
+ updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);
151
+ updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);
152
+
153
+ if (updateNeeded) {
154
+ const typedArray = getScratchArray(value.constructor, length);
155
+ fillArray({
156
+ target: typedArray,
157
+ source: constantValue,
158
+ start: 0,
159
+ count: length
160
+ });
161
+ this.buffer.subData(typedArray);
162
+ this.bufferValue = value;
163
+ }
164
+
165
+ return this.buffer;
166
+ }
167
+
168
+ initialize(props) {
169
+ return this.setProps(props);
170
+ }
171
+
172
+ setProps(props) {
173
+ return this;
174
+ }
175
+
176
+ _normalizeConstantArrayValue(arrayValue) {
177
+ if (Array.isArray(arrayValue)) {
178
+ return new Float32Array(arrayValue);
179
+ }
180
+
181
+ return arrayValue;
182
+ }
183
+
184
+ _compareConstantArrayValues(v1, v2) {
185
+ if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {
186
+ return false;
187
+ }
188
+
189
+ for (let i = 0; i < v1.length; ++i) {
190
+ if (v1[i] !== v2[i]) {
191
+ return false;
192
+ }
193
+ }
194
+
195
+ return true;
196
+ }
197
+
198
+ static _setConstantFloatArray(gl, location, array) {
199
+ switch (array.length) {
200
+ case 1:
201
+ gl.vertexAttrib1fv(location, array);
202
+ break;
203
+
204
+ case 2:
205
+ gl.vertexAttrib2fv(location, array);
206
+ break;
207
+
208
+ case 3:
209
+ gl.vertexAttrib3fv(location, array);
210
+ break;
211
+
212
+ case 4:
213
+ gl.vertexAttrib4fv(location, array);
214
+ break;
215
+
216
+ default:
217
+ assert(false);
218
+ }
219
+ }
220
+
221
+ static _setConstantIntArray(gl, location, array) {
222
+ assert(isWebGL2(gl));
223
+ gl.vertexAttribI4iv(location, array);
224
+ }
225
+
226
+ static _setConstantUintArray(gl, location, array) {
227
+ assert(isWebGL2(gl));
228
+ gl.vertexAttribI4uiv(location, array);
229
+ }
230
+
231
+ _createHandle() {
232
+ return this.gl2.createVertexArray();
233
+ }
234
+
235
+ _deleteHandle() {
236
+ this.gl2.deleteVertexArray(this.handle);
237
+ return [this.elements];
238
+ }
239
+
240
+ _bindHandle(handle) {
241
+ this.gl2.bindVertexArray(handle);
242
+ }
243
+
244
+ _getParameter(pname, {
245
+ location
246
+ }) {
247
+ assert(Number.isFinite(location));
248
+ return this.bind(() => {
249
+ switch (pname) {
250
+ case GL.VERTEX_ATTRIB_ARRAY_POINTER:
251
+ return this.gl.getVertexAttribOffset(location, pname);
252
+
253
+ default:
254
+ return this.gl.getVertexAttrib(location, pname);
255
+ }
256
+ });
257
+ }
258
+
259
+ }
260
+
261
+ _defineProperty(VertexArrayObject, "MAX_ATTRIBUTES", void 0);
262
+ //# sourceMappingURL=vertex-array-object.js.map