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

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 (701) hide show
  1. package/LICENSE +8 -1
  2. package/dist/_deprecated/context-api.d.ts +85 -0
  3. package/dist/_deprecated/context-api.d.ts.map +1 -0
  4. package/dist/_deprecated/context-api.js +76 -0
  5. package/dist/_deprecated/context-api.js.map +1 -0
  6. package/dist/{features/webgl-features-table.d.ts → _deprecated/features.d.ts} +4 -7
  7. package/dist/_deprecated/features.d.ts.map +1 -0
  8. package/dist/_deprecated/features.js +111 -0
  9. package/dist/_deprecated/features.js.map +1 -0
  10. package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
  11. package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/set-device-parameters.js +124 -0
  13. package/dist/adapter/converters/set-device-parameters.js.map +1 -0
  14. package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
  15. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
  17. package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
  18. package/dist/adapter/device-helpers/device-features.d.ts +12 -0
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
  20. package/dist/adapter/device-helpers/device-features.js +123 -0
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/device-limits.js +90 -0
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
  28. package/dist/adapter/device-helpers/get-device-info.js +44 -0
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  30. package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
  31. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
  32. package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  33. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  34. package/dist/adapter/webgl-device.d.ts +110 -0
  35. package/dist/adapter/webgl-device.d.ts.map +1 -0
  36. package/dist/adapter/webgl-device.js +207 -0
  37. package/dist/adapter/webgl-device.js.map +1 -0
  38. package/dist/adapter/webgl-shader.d.ts +18 -0
  39. package/dist/adapter/webgl-shader.d.ts.map +1 -0
  40. package/dist/adapter/webgl-shader.js +82 -0
  41. package/dist/adapter/webgl-shader.js.map +1 -0
  42. package/dist/classes/accessor.js +2 -2
  43. package/dist/classes/accessor.js.map +1 -1
  44. package/dist/classes/accessor.ts.disabled +1 -1
  45. package/dist/classes/clear.d.ts +3 -2
  46. package/dist/classes/clear.d.ts.map +1 -1
  47. package/dist/classes/clear.js +7 -4
  48. package/dist/classes/clear.js.map +1 -1
  49. package/dist/classes/copy-and-blit.d.ts +18 -1
  50. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  51. package/dist/classes/copy-and-blit.js +30 -25
  52. package/dist/classes/copy-and-blit.js.map +1 -1
  53. package/dist/classes/framebuffer.d.ts +10 -1
  54. package/dist/classes/framebuffer.d.ts.map +1 -1
  55. package/dist/classes/framebuffer.js +15 -15
  56. package/dist/classes/framebuffer.js.map +1 -1
  57. package/dist/classes/program-configuration.d.ts +14 -17
  58. package/dist/classes/program-configuration.d.ts.map +1 -1
  59. package/dist/classes/program-configuration.js +10 -97
  60. package/dist/classes/program-configuration.js.map +1 -1
  61. package/dist/classes/program.d.ts +25 -20
  62. package/dist/classes/program.d.ts.map +1 -1
  63. package/dist/classes/program.js +39 -28
  64. package/dist/classes/program.js.map +1 -1
  65. package/dist/classes/query.d.ts.map +1 -1
  66. package/dist/classes/query.js +6 -5
  67. package/dist/classes/query.js.map +1 -1
  68. package/dist/classes/renderbuffer-formats.js +1 -1
  69. package/dist/classes/renderbuffer-formats.js.map +1 -1
  70. package/dist/classes/renderbuffer.d.ts.map +1 -1
  71. package/dist/classes/renderbuffer.js +4 -3
  72. package/dist/classes/renderbuffer.js.map +1 -1
  73. package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -13
  74. package/dist/classes/shader.d.ts.map +1 -0
  75. package/dist/classes/{webgl-shader.js → shader.js} +7 -79
  76. package/dist/classes/shader.js.map +1 -0
  77. package/dist/classes/texture-2d.d.ts +4 -3
  78. package/dist/classes/texture-2d.d.ts.map +1 -1
  79. package/dist/classes/texture-2d.js +5 -8
  80. package/dist/classes/texture-2d.js.map +1 -1
  81. package/dist/classes/texture-3d.d.ts +3 -2
  82. package/dist/classes/texture-3d.d.ts.map +1 -1
  83. package/dist/classes/texture-3d.js +15 -6
  84. package/dist/classes/texture-3d.js.map +1 -1
  85. package/dist/classes/texture-cube.d.ts +2 -1
  86. package/dist/classes/texture-cube.d.ts.map +1 -1
  87. package/dist/classes/texture-cube.js +3 -4
  88. package/dist/classes/texture-cube.js.map +1 -1
  89. package/dist/classes/texture-formats.js +1 -1
  90. package/dist/classes/texture-formats.js.map +1 -1
  91. package/dist/classes/texture.d.ts +14 -9
  92. package/dist/classes/texture.d.ts.map +1 -1
  93. package/dist/classes/texture.js +19 -18
  94. package/dist/classes/texture.js.map +1 -1
  95. package/dist/classes/transform-feedback.d.ts.map +1 -1
  96. package/dist/classes/transform-feedback.js +5 -4
  97. package/dist/classes/transform-feedback.js.map +1 -1
  98. package/dist/classes/uniform-buffer-layout.js +1 -1
  99. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  100. package/dist/classes/uniforms.d.ts +0 -1
  101. package/dist/classes/uniforms.d.ts.map +1 -1
  102. package/dist/classes/uniforms.js +1 -2
  103. package/dist/classes/uniforms.js.map +1 -1
  104. package/dist/classes/vertex-array-object.d.ts +7 -6
  105. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  106. package/dist/classes/vertex-array-object.js +11 -12
  107. package/dist/classes/vertex-array-object.js.map +1 -1
  108. package/dist/classes/vertex-array.d.ts +14 -14
  109. package/dist/classes/vertex-array.d.ts.map +1 -1
  110. package/dist/classes/vertex-array.js +3 -4
  111. package/dist/classes/vertex-array.js.map +1 -1
  112. package/dist/classes/webgl-buffer.d.ts +2 -0
  113. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  114. package/dist/classes/webgl-buffer.js +8 -5
  115. package/dist/classes/webgl-buffer.js.map +1 -1
  116. package/dist/classes/webgl-resource.d.ts +6 -4
  117. package/dist/classes/webgl-resource.d.ts.map +1 -1
  118. package/dist/classes/webgl-resource.js +12 -8
  119. package/dist/classes/webgl-resource.js.map +1 -1
  120. package/dist/context/context/context-state.d.ts +18 -0
  121. package/dist/context/context/context-state.d.ts.map +1 -0
  122. package/dist/context/context/context-state.js +26 -0
  123. package/dist/context/context/context-state.js.map +1 -0
  124. package/dist/context/context/create-context.d.ts +40 -0
  125. package/dist/context/context/create-context.d.ts.map +1 -0
  126. package/dist/context/context/create-context.js +37 -0
  127. package/dist/context/context/create-context.js.map +1 -0
  128. package/dist/context/context/device-pixels.d.ts +25 -0
  129. package/dist/context/context/device-pixels.d.ts.map +1 -0
  130. package/dist/context/context/device-pixels.js +98 -0
  131. package/dist/context/context/device-pixels.js.map +1 -0
  132. package/dist/context/context/get-canvas.d.ts +13 -0
  133. package/dist/context/context/get-canvas.d.ts.map +1 -0
  134. package/dist/context/context/get-canvas.js +31 -0
  135. package/dist/context/context/get-canvas.js.map +1 -0
  136. package/dist/context/context/resize-context.d.ts +20 -0
  137. package/dist/context/context/resize-context.d.ts.map +1 -0
  138. package/dist/context/context/resize-context.js +15 -0
  139. package/dist/context/context/resize-context.js.map +1 -0
  140. package/dist/context/context/webgl-checks.d.ts +13 -0
  141. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  142. package/dist/context/context/webgl-checks.js +34 -0
  143. package/dist/context/context/webgl-checks.js.map +1 -0
  144. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  145. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.js +65 -0
  147. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  148. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  149. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  150. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  151. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  152. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  153. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  154. package/dist/context/parameters/webgl-parameters.js +2 -0
  155. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  156. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  157. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  158. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  159. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  160. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  161. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  162. package/dist/context/polyfill/polyfill-context.js +91 -0
  163. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  164. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  165. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  166. package/dist/context/polyfill/polyfill-table.js +160 -0
  167. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  168. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  169. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  170. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  171. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  172. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  173. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  174. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  175. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  176. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  177. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  178. package/dist/context/state-tracker/track-context-state.js +169 -0
  179. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  180. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  181. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  182. package/dist/context/state-tracker/with-parameters.js +36 -0
  183. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  184. package/dist/debug/debug-uniforms.js +1 -1
  185. package/dist/debug/debug-uniforms.js.map +1 -1
  186. package/dist/debug/debug-vertex-array.js +2 -2
  187. package/dist/debug/debug-vertex-array.js.map +1 -1
  188. package/dist/es5/_deprecated/context-api.js +116 -0
  189. package/dist/es5/_deprecated/context-api.js.map +1 -0
  190. package/dist/es5/_deprecated/features.js +118 -0
  191. package/dist/es5/_deprecated/features.js.map +1 -0
  192. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  193. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  194. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  195. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  196. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  197. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  198. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  199. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  200. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  201. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  202. package/dist/es5/adapter/device-helpers/is-old-ie.js +16 -0
  203. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  204. package/dist/es5/adapter/webgl-device.js +279 -0
  205. package/dist/es5/adapter/webgl-device.js.map +1 -0
  206. package/dist/es5/adapter/webgl-shader.js +155 -0
  207. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  208. package/dist/es5/bundle.js +1 -1
  209. package/dist/es5/bundle.js.map +1 -1
  210. package/dist/es5/classes/accessor.js +104 -74
  211. package/dist/es5/classes/accessor.js.map +1 -1
  212. package/dist/es5/classes/accessor.ts.disabled +1 -1
  213. package/dist/es5/classes/clear.js +55 -34
  214. package/dist/es5/classes/clear.js.map +1 -1
  215. package/dist/es5/classes/copy-and-blit.js +175 -156
  216. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  217. package/dist/es5/classes/framebuffer.js +647 -518
  218. package/dist/es5/classes/framebuffer.js.map +1 -1
  219. package/dist/es5/classes/program-configuration.js +78 -128
  220. package/dist/es5/classes/program-configuration.js.map +1 -1
  221. package/dist/es5/classes/program.js +379 -292
  222. package/dist/es5/classes/program.js.map +1 -1
  223. package/dist/es5/classes/query.js +172 -107
  224. package/dist/es5/classes/query.js.map +1 -1
  225. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  226. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  227. package/dist/es5/classes/renderbuffer.js +151 -98
  228. package/dist/es5/classes/renderbuffer.js.map +1 -1
  229. package/dist/es5/classes/shader.js +195 -0
  230. package/dist/es5/classes/shader.js.map +1 -0
  231. package/dist/es5/classes/texture-2d.js +44 -17
  232. package/dist/es5/classes/texture-2d.js.map +1 -1
  233. package/dist/es5/classes/texture-3d.js +107 -48
  234. package/dist/es5/classes/texture-3d.js.map +1 -1
  235. package/dist/es5/classes/texture-cube.js +169 -110
  236. package/dist/es5/classes/texture-cube.js.map +1 -1
  237. package/dist/es5/classes/texture-formats.js +42 -71
  238. package/dist/es5/classes/texture-formats.js.map +1 -1
  239. package/dist/es5/classes/texture.js +780 -665
  240. package/dist/es5/classes/texture.js.map +1 -1
  241. package/dist/es5/classes/transform-feedback.js +206 -150
  242. package/dist/es5/classes/transform-feedback.js.map +1 -1
  243. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  244. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  245. package/dist/es5/classes/uniforms.js +39 -80
  246. package/dist/es5/classes/uniforms.js.map +1 -1
  247. package/dist/es5/classes/vertex-array-object.js +268 -209
  248. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  249. package/dist/es5/classes/vertex-array.js +348 -303
  250. package/dist/es5/classes/vertex-array.js.map +1 -1
  251. package/dist/es5/classes/webgl-buffer.js +374 -303
  252. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  253. package/dist/es5/classes/webgl-resource.js +231 -161
  254. package/dist/es5/classes/webgl-resource.js.map +1 -1
  255. package/dist/es5/context/context/context-state.js +31 -0
  256. package/dist/es5/context/context/context-state.js.map +1 -0
  257. package/dist/es5/context/context/create-context.js +57 -0
  258. package/dist/es5/context/context/create-context.js.map +1 -0
  259. package/dist/es5/context/context/device-pixels.js +115 -0
  260. package/dist/es5/context/context/device-pixels.js.map +1 -0
  261. package/dist/es5/context/context/get-canvas.js +40 -0
  262. package/dist/es5/context/context/get-canvas.js.map +1 -0
  263. package/dist/es5/context/context/resize-context.js +23 -0
  264. package/dist/es5/context/context/resize-context.js.map +1 -0
  265. package/dist/es5/context/context/webgl-checks.js +54 -0
  266. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  267. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  268. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  269. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  270. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  271. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  272. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  273. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  274. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  275. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  276. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  277. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  278. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  279. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  280. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  281. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  282. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  283. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  284. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  285. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  286. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  287. package/dist/es5/debug/debug-program-configuration.js +48 -20
  288. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  289. package/dist/es5/debug/debug-uniforms.js +110 -70
  290. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  291. package/dist/es5/debug/debug-vertex-array.js +49 -54
  292. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  293. package/dist/es5/helpers/get-program-bindings.js +274 -0
  294. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  295. package/dist/es5/helpers/program-bindings.js +2 -0
  296. package/dist/es5/helpers/program-bindings.js.map +1 -0
  297. package/dist/es5/index.js +268 -192
  298. package/dist/es5/index.js.map +1 -1
  299. package/dist/es5/init.js +18 -14
  300. package/dist/es5/init.js.map +1 -1
  301. package/dist/es5/types/accessor.d.ts +29 -0
  302. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  303. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  304. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  305. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  306. package/dist/es5/webgl-utils/format-utils.js +4 -4
  307. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  308. package/dist/es5/webgl-utils/get-error.js +18 -18
  309. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  310. package/dist/es5/webgl-utils/index.js +10 -10
  311. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  312. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  313. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  314. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  316. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  317. package/dist/esm/_deprecated/context-api.js +76 -0
  318. package/dist/esm/_deprecated/context-api.js.map +1 -0
  319. package/dist/esm/_deprecated/features.js +111 -0
  320. package/dist/esm/_deprecated/features.js.map +1 -0
  321. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  322. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  323. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  324. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  325. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  326. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  327. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  328. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  329. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  330. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  331. package/dist/{features/check-old-ie.js → esm/adapter/device-helpers/is-old-ie.js} +3 -3
  332. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  333. package/dist/esm/adapter/webgl-device.js +207 -0
  334. package/dist/esm/adapter/webgl-device.js.map +1 -0
  335. package/dist/esm/adapter/webgl-shader.js +82 -0
  336. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  337. package/dist/esm/classes/accessor.js +2 -2
  338. package/dist/esm/classes/accessor.js.map +1 -1
  339. package/dist/esm/classes/accessor.ts.disabled +1 -1
  340. package/dist/esm/classes/clear.js +7 -4
  341. package/dist/esm/classes/clear.js.map +1 -1
  342. package/dist/esm/classes/copy-and-blit.js +30 -25
  343. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  344. package/dist/esm/classes/framebuffer.js +15 -15
  345. package/dist/esm/classes/framebuffer.js.map +1 -1
  346. package/dist/esm/classes/program-configuration.js +10 -97
  347. package/dist/esm/classes/program-configuration.js.map +1 -1
  348. package/dist/esm/classes/program.js +39 -28
  349. package/dist/esm/classes/program.js.map +1 -1
  350. package/dist/esm/classes/query.js +6 -5
  351. package/dist/esm/classes/query.js.map +1 -1
  352. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  353. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  354. package/dist/esm/classes/renderbuffer.js +4 -3
  355. package/dist/esm/classes/renderbuffer.js.map +1 -1
  356. package/dist/esm/classes/{webgl-shader.js → shader.js} +7 -79
  357. package/dist/esm/classes/shader.js.map +1 -0
  358. package/dist/esm/classes/texture-2d.js +5 -8
  359. package/dist/esm/classes/texture-2d.js.map +1 -1
  360. package/dist/esm/classes/texture-3d.js +15 -6
  361. package/dist/esm/classes/texture-3d.js.map +1 -1
  362. package/dist/esm/classes/texture-cube.js +3 -4
  363. package/dist/esm/classes/texture-cube.js.map +1 -1
  364. package/dist/esm/classes/texture-formats.js +1 -1
  365. package/dist/esm/classes/texture-formats.js.map +1 -1
  366. package/dist/esm/classes/texture.js +19 -18
  367. package/dist/esm/classes/texture.js.map +1 -1
  368. package/dist/esm/classes/transform-feedback.js +5 -4
  369. package/dist/esm/classes/transform-feedback.js.map +1 -1
  370. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  371. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  372. package/dist/esm/classes/uniforms.js +1 -2
  373. package/dist/esm/classes/uniforms.js.map +1 -1
  374. package/dist/esm/classes/vertex-array-object.js +11 -12
  375. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  376. package/dist/esm/classes/vertex-array.js +3 -4
  377. package/dist/esm/classes/vertex-array.js.map +1 -1
  378. package/dist/esm/classes/webgl-buffer.js +8 -5
  379. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  380. package/dist/esm/classes/webgl-resource.js +12 -8
  381. package/dist/esm/classes/webgl-resource.js.map +1 -1
  382. package/dist/esm/context/context/context-state.js +26 -0
  383. package/dist/esm/context/context/context-state.js.map +1 -0
  384. package/dist/esm/context/context/create-context.js +37 -0
  385. package/dist/esm/context/context/create-context.js.map +1 -0
  386. package/dist/esm/context/context/device-pixels.js +98 -0
  387. package/dist/esm/context/context/device-pixels.js.map +1 -0
  388. package/dist/esm/context/context/get-canvas.js +31 -0
  389. package/dist/esm/context/context/get-canvas.js.map +1 -0
  390. package/dist/esm/context/context/resize-context.js +15 -0
  391. package/dist/esm/context/context/resize-context.js.map +1 -0
  392. package/dist/esm/context/context/webgl-checks.js +34 -0
  393. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  394. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  395. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  396. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  397. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  398. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  399. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  400. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  401. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  402. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  403. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  404. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  405. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  406. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  407. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  408. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  409. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  410. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  411. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  412. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  413. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  414. package/dist/esm/debug/debug-uniforms.js +1 -1
  415. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  416. package/dist/esm/debug/debug-vertex-array.js +2 -2
  417. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  418. package/dist/esm/helpers/get-program-bindings.js +228 -0
  419. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  420. package/dist/esm/helpers/program-bindings.js +2 -0
  421. package/dist/esm/helpers/program-bindings.js.map +1 -0
  422. package/dist/esm/index.js +26 -20
  423. package/dist/esm/index.js.map +1 -1
  424. package/dist/esm/init.js +11 -8
  425. package/dist/esm/init.js.map +1 -1
  426. package/dist/esm/types/accessor.d.ts +29 -0
  427. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  428. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  429. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  430. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  431. package/dist/esm/webgl-utils/format-utils.js +1 -1
  432. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  433. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  434. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  435. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  436. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  437. package/dist/helpers/get-program-bindings.d.ts +8 -0
  438. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  439. package/dist/helpers/get-program-bindings.js +228 -0
  440. package/dist/helpers/get-program-bindings.js.map +1 -0
  441. package/dist/helpers/program-bindings.d.ts +41 -0
  442. package/dist/helpers/program-bindings.d.ts.map +1 -0
  443. package/dist/helpers/program-bindings.js +2 -0
  444. package/dist/helpers/program-bindings.js.map +1 -0
  445. package/dist/index.d.ts +41 -20
  446. package/dist/index.d.ts.map +1 -1
  447. package/dist/index.js +26 -20
  448. package/dist/index.js.map +1 -1
  449. package/dist/init.d.ts.map +1 -1
  450. package/dist/init.js +11 -8
  451. package/dist/init.js.map +1 -1
  452. package/dist/types/accessor.d.ts +29 -0
  453. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  454. package/dist/webgl-utils/attribute-utils.js +1 -1
  455. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  456. package/dist/webgl-utils/constants-to-keys.js +1 -1
  457. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  458. package/dist/webgl-utils/format-utils.d.ts +2 -2
  459. package/dist/webgl-utils/format-utils.js +1 -1
  460. package/dist/webgl-utils/format-utils.js.map +1 -1
  461. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  462. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  463. package/dist/webgl-utils/texture-utils.js +2 -2
  464. package/dist/webgl-utils/texture-utils.js.map +1 -1
  465. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  466. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  467. package/dist/webgl-utils/typed-array-utils.js +22 -18
  468. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  469. package/package.json +5 -6
  470. package/src/.DS_Store +0 -0
  471. package/src/_deprecated/context-api.ts +146 -0
  472. package/src/_deprecated/features.ts +159 -0
  473. package/src/adapter/converters/set-device-parameters.ts +182 -0
  474. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  475. package/src/adapter/device-helpers/device-features.ts +227 -0
  476. package/src/adapter/device-helpers/device-limits.ts +150 -0
  477. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  478. package/src/{features/check-old-ie.ts → adapter/device-helpers/is-old-ie.ts} +3 -3
  479. package/src/adapter/webgl-device.ts +399 -0
  480. package/src/adapter/webgl-shader.ts +84 -0
  481. package/src/classes/accessor.js +2 -2
  482. package/src/classes/accessor.ts.disabled +1 -1
  483. package/src/classes/clear.ts +9 -4
  484. package/src/classes/copy-and-blit.ts +49 -52
  485. package/src/classes/framebuffer.ts +38 -35
  486. package/src/classes/program-configuration.ts +28 -81
  487. package/src/classes/program.ts +89 -75
  488. package/src/classes/query.ts +6 -6
  489. package/src/classes/renderbuffer-formats.ts +1 -1
  490. package/src/classes/renderbuffer.ts +5 -4
  491. package/src/classes/{webgl-shader.ts → shader.ts} +7 -78
  492. package/src/classes/texture-2d.ts +6 -11
  493. package/src/classes/texture-3d.ts +16 -11
  494. package/src/classes/texture-cube.ts +7 -7
  495. package/src/classes/texture-formats.ts +1 -1
  496. package/src/classes/texture.ts +39 -40
  497. package/src/classes/transform-feedback.ts +14 -13
  498. package/src/classes/uniform-buffer-layout.ts +1 -1
  499. package/src/classes/uniforms.ts +4 -10
  500. package/src/classes/vertex-array-object.ts +17 -20
  501. package/src/classes/vertex-array.ts +16 -11
  502. package/src/classes/webgl-buffer.ts +7 -5
  503. package/src/classes/webgl-resource.ts +20 -18
  504. package/src/context/context/context-state.ts +39 -0
  505. package/src/context/context/create-context.ts +83 -0
  506. package/src/context/context/device-pixels.ts +147 -0
  507. package/src/context/context/get-canvas.ts +37 -0
  508. package/src/context/context/resize-context.ts +37 -0
  509. package/src/context/context/webgl-checks.ts +49 -0
  510. package/src/context/parameters/unified-parameter-api.ts +128 -0
  511. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  512. package/src/context/parameters/webgl-parameters.ts +197 -0
  513. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  514. package/src/context/polyfill/polyfill-context.ts +98 -0
  515. package/src/context/polyfill/polyfill-table.ts +162 -0
  516. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  517. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  518. package/src/context/state-tracker/track-context-state.ts +250 -0
  519. package/src/context/state-tracker/with-parameters.ts +50 -0
  520. package/src/debug/debug-uniforms.ts +1 -1
  521. package/src/debug/debug-vertex-array.ts +2 -4
  522. package/src/helpers/get-program-bindings.ts +244 -0
  523. package/src/helpers/program-bindings.ts +46 -0
  524. package/src/index.ts +94 -23
  525. package/src/init.ts +12 -9
  526. package/src/types/accessor.d.ts +29 -0
  527. package/src/types.ts +1 -1
  528. package/src/webgl-utils/attribute-utils.ts +1 -1
  529. package/src/webgl-utils/constants-to-keys.ts +1 -1
  530. package/src/webgl-utils/format-utils.ts +1 -1
  531. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  532. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  533. package/dist/classes/webgl-shader.d.ts.map +0 -1
  534. package/dist/classes/webgl-shader.js.map +0 -1
  535. package/dist/context/gl-context.d.ts +0 -15
  536. package/dist/context/gl-context.d.ts.map +0 -1
  537. package/dist/context/gl-context.js +0 -32
  538. package/dist/context/gl-context.js.map +0 -1
  539. package/dist/context/luma-context-data.d.ts +0 -31
  540. package/dist/context/luma-context-data.d.ts.map +0 -1
  541. package/dist/context/luma-context-data.js +0 -5
  542. package/dist/context/luma-context-data.js.map +0 -1
  543. package/dist/es5/classes/webgl-shader.js +0 -213
  544. package/dist/es5/classes/webgl-shader.js.map +0 -1
  545. package/dist/es5/context/gl-context.js +0 -46
  546. package/dist/es5/context/gl-context.js.map +0 -1
  547. package/dist/es5/context/luma-context-data.js +0 -12
  548. package/dist/es5/context/luma-context-data.js.map +0 -1
  549. package/dist/es5/features/check-glsl-extension.js +0 -40
  550. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  551. package/dist/es5/features/check-old-ie.js +0 -15
  552. package/dist/es5/features/check-old-ie.js.map +0 -1
  553. package/dist/es5/features/features.js +0 -85
  554. package/dist/es5/features/features.js.map +0 -1
  555. package/dist/es5/features/index.js +0 -64
  556. package/dist/es5/features/index.js.map +0 -1
  557. package/dist/es5/features/limits.js +0 -72
  558. package/dist/es5/features/limits.js.map +0 -1
  559. package/dist/es5/features/webgl-features-table.js +0 -84
  560. package/dist/es5/features/webgl-features-table.js.map +0 -1
  561. package/dist/es5/features/webgl-limits-table.js +0 -172
  562. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  563. package/dist/es5/utils/array-utils-flat.js +0 -50
  564. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  565. package/dist/es5/utils/assert.js +0 -13
  566. package/dist/es5/utils/assert.js.map +0 -1
  567. package/dist/es5/utils/check-props.js +0 -50
  568. package/dist/es5/utils/check-props.js.map +0 -1
  569. package/dist/es5/utils/format-value.js +0 -57
  570. package/dist/es5/utils/format-value.js.map +0 -1
  571. package/dist/es5/utils/index.js +0 -68
  572. package/dist/es5/utils/index.js.map +0 -1
  573. package/dist/es5/utils/is-old-ie.js +0 -13
  574. package/dist/es5/utils/is-old-ie.js.map +0 -1
  575. package/dist/es5/utils/load-file.js +0 -43
  576. package/dist/es5/utils/load-file.js.map +0 -1
  577. package/dist/es5/utils/stub-methods.js +0 -25
  578. package/dist/es5/utils/stub-methods.js.map +0 -1
  579. package/dist/es5/utils/utils.js +0 -31
  580. package/dist/es5/utils/utils.js.map +0 -1
  581. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  582. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  583. package/dist/esm/classes/webgl-shader.js.map +0 -1
  584. package/dist/esm/context/gl-context.js +0 -32
  585. package/dist/esm/context/gl-context.js.map +0 -1
  586. package/dist/esm/context/luma-context-data.js +0 -5
  587. package/dist/esm/context/luma-context-data.js.map +0 -1
  588. package/dist/esm/features/check-glsl-extension.js +0 -27
  589. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  590. package/dist/esm/features/check-old-ie.js.map +0 -1
  591. package/dist/esm/features/features.js +0 -67
  592. package/dist/esm/features/features.js.map +0 -1
  593. package/dist/esm/features/index.js +0 -5
  594. package/dist/esm/features/index.js.map +0 -1
  595. package/dist/esm/features/limits.js +0 -55
  596. package/dist/esm/features/limits.js.map +0 -1
  597. package/dist/esm/features/webgl-features-table.js +0 -71
  598. package/dist/esm/features/webgl-features-table.js.map +0 -1
  599. package/dist/esm/features/webgl-limits-table.js +0 -161
  600. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  601. package/dist/esm/utils/array-utils-flat.js +0 -39
  602. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  603. package/dist/esm/utils/assert.js +0 -6
  604. package/dist/esm/utils/assert.js.map +0 -1
  605. package/dist/esm/utils/check-props.js +0 -38
  606. package/dist/esm/utils/check-props.js.map +0 -1
  607. package/dist/esm/utils/format-value.js +0 -50
  608. package/dist/esm/utils/format-value.js.map +0 -1
  609. package/dist/esm/utils/index.js +0 -7
  610. package/dist/esm/utils/index.js.map +0 -1
  611. package/dist/esm/utils/is-old-ie.js +0 -5
  612. package/dist/esm/utils/is-old-ie.js.map +0 -1
  613. package/dist/esm/utils/load-file.js +0 -30
  614. package/dist/esm/utils/load-file.js.map +0 -1
  615. package/dist/esm/utils/stub-methods.js +0 -16
  616. package/dist/esm/utils/stub-methods.js.map +0 -1
  617. package/dist/esm/utils/utils.js +0 -20
  618. package/dist/esm/utils/utils.js.map +0 -1
  619. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  620. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  621. package/dist/features/check-glsl-extension.d.ts +0 -2
  622. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  623. package/dist/features/check-glsl-extension.js +0 -27
  624. package/dist/features/check-glsl-extension.js.map +0 -1
  625. package/dist/features/check-old-ie.d.ts +0 -2
  626. package/dist/features/check-old-ie.d.ts.map +0 -1
  627. package/dist/features/check-old-ie.js.map +0 -1
  628. package/dist/features/features.d.ts +0 -6
  629. package/dist/features/features.d.ts.map +0 -1
  630. package/dist/features/features.js +0 -67
  631. package/dist/features/features.js.map +0 -1
  632. package/dist/features/index.d.ts +0 -5
  633. package/dist/features/index.d.ts.map +0 -1
  634. package/dist/features/index.js +0 -5
  635. package/dist/features/index.js.map +0 -1
  636. package/dist/features/limits.d.ts +0 -28
  637. package/dist/features/limits.d.ts.map +0 -1
  638. package/dist/features/limits.js +0 -55
  639. package/dist/features/limits.js.map +0 -1
  640. package/dist/features/webgl-features-table.d.ts.map +0 -1
  641. package/dist/features/webgl-features-table.js +0 -71
  642. package/dist/features/webgl-features-table.js.map +0 -1
  643. package/dist/features/webgl-limits-table.d.ts +0 -161
  644. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  645. package/dist/features/webgl-limits-table.js +0 -161
  646. package/dist/features/webgl-limits-table.js.map +0 -1
  647. package/dist/utils/array-utils-flat.d.ts +0 -9
  648. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  649. package/dist/utils/array-utils-flat.js +0 -39
  650. package/dist/utils/array-utils-flat.js.map +0 -1
  651. package/dist/utils/assert.d.ts +0 -2
  652. package/dist/utils/assert.d.ts.map +0 -1
  653. package/dist/utils/assert.js +0 -6
  654. package/dist/utils/assert.js.map +0 -1
  655. package/dist/utils/check-props.d.ts +0 -2
  656. package/dist/utils/check-props.d.ts.map +0 -1
  657. package/dist/utils/check-props.js +0 -38
  658. package/dist/utils/check-props.js.map +0 -1
  659. package/dist/utils/format-value.d.ts +0 -5
  660. package/dist/utils/format-value.d.ts.map +0 -1
  661. package/dist/utils/format-value.js +0 -50
  662. package/dist/utils/format-value.js.map +0 -1
  663. package/dist/utils/index.d.ts +0 -7
  664. package/dist/utils/index.d.ts.map +0 -1
  665. package/dist/utils/index.js +0 -7
  666. package/dist/utils/index.js.map +0 -1
  667. package/dist/utils/is-old-ie.d.ts +0 -4
  668. package/dist/utils/is-old-ie.d.ts.map +0 -1
  669. package/dist/utils/is-old-ie.js +0 -5
  670. package/dist/utils/is-old-ie.js.map +0 -1
  671. package/dist/utils/load-file.d.ts +0 -4
  672. package/dist/utils/load-file.d.ts.map +0 -1
  673. package/dist/utils/load-file.js +0 -30
  674. package/dist/utils/load-file.js.map +0 -1
  675. package/dist/utils/stub-methods.d.ts +0 -2
  676. package/dist/utils/stub-methods.d.ts.map +0 -1
  677. package/dist/utils/stub-methods.js +0 -16
  678. package/dist/utils/stub-methods.js.map +0 -1
  679. package/dist/utils/utils.d.ts +0 -15
  680. package/dist/utils/utils.d.ts.map +0 -1
  681. package/dist/utils/utils.js +0 -20
  682. package/dist/utils/utils.js.map +0 -1
  683. package/src/context/gl-context.ts +0 -31
  684. package/src/context/luma-context-data.ts +0 -27
  685. package/src/features/check-glsl-extension.ts +0 -34
  686. package/src/features/features.ts +0 -80
  687. package/src/features/index.ts +0 -5
  688. package/src/features/limits.ts +0 -66
  689. package/src/features/webgl-features-table.ts +0 -104
  690. package/src/features/webgl-limits-table.ts +0 -51
  691. package/src/utils/array-utils-flat.ts +0 -56
  692. package/src/utils/assert.ts +0 -7
  693. package/src/utils/check-props.ts +0 -68
  694. package/src/utils/format-value.ts +0 -37
  695. package/src/utils/index.ts +0 -6
  696. package/src/utils/is-old-ie.ts +0 -6
  697. package/src/utils/load-file.ts +0 -40
  698. package/src/utils/stub-methods.ts +0 -20
  699. package/src/utils/utils.ts +0 -35
  700. package/src/webgl-utils/texture-utils.d.ts +0 -11
  701. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -1,20 +1,25 @@
1
- // @ts-nocheck
1
+ import {log, assert} from '@luma.gl/api';
2
2
  import GL from '@luma.gl/constants';
3
3
  import Buffer from './webgl-buffer';
4
4
  import Framebuffer from './framebuffer';
5
5
  import Texture from './texture';
6
- import {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';
7
- import {flipRows, scalePixels} from '../webgl-utils';
6
+ import {assertWebGL2Context} from '../context/context/webgl-checks';
7
+ import {withParameters} from '../context/state-tracker/with-parameters';
8
+ import {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';
8
9
  import {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';
9
10
  import {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';
10
11
  import {toFramebuffer} from '../webgl-utils/texture-utils';
11
- import {assert} from '../utils';
12
12
 
13
- // NOTE: Slow requires roundtrip to GPU
14
- // Copies data from a Framebuffer or a Texture object into ArrayBuffer object.
15
- // App can provide targetPixelArray or have it auto allocated by this method
13
+ /**
14
+ * Copies data from a Framebuffer or a Texture object into ArrayBuffer object.
15
+ * App can provide targetPixelArray or have it auto allocated by this method
16
+ * newly allocated by this method unless provided by app.
17
+ * @note Slow requires roundtrip to GPU
18
+ *
19
+ * @param source
20
+ * @param options
16
21
  // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
17
- // newly allocated by this method unless provided by app.
22
+ */
18
23
  export function readPixelsToArray(
19
24
  source: Framebuffer | Texture,
20
25
  options?: {
@@ -28,15 +33,8 @@ export function readPixelsToArray(
28
33
  sourceHeight?: number;
29
34
  sourceType?: number;
30
35
  }
31
- ): Uint8Array | Uint16Array | Float32Array;
32
-
33
- // NOTE: Slow requires roundtrip to GPU
34
- // Copies data from a Framebuffer or a Texture object into ArrayBuffer object.
35
- // App can provide targetPixelArray or have it auto allocated by this method
36
- // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,
37
- // newly allocated by this method unless provided by app.
38
- export function readPixelsToArray(source, options = {}) {
39
- const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;
36
+ ): Uint8Array | Uint16Array | Float32Array {
37
+ const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options || {};
40
38
  let {
41
39
  sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
42
40
  target = null,
@@ -44,7 +42,7 @@ export function readPixelsToArray(source, options = {}) {
44
42
  sourceWidth,
45
43
  sourceHeight,
46
44
  sourceType
47
- } = options;
45
+ } = options || {};
48
46
 
49
47
  const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
50
48
  assert(framebuffer);
@@ -70,7 +68,7 @@ export function readPixelsToArray(source, options = {}) {
70
68
 
71
69
  const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
72
70
  gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);
73
- // @ts-ignore
71
+ // @ts-expect-error
74
72
  gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
75
73
  if (deleteFramebuffer) {
76
74
  framebuffer.delete();
@@ -78,8 +76,12 @@ export function readPixelsToArray(source, options = {}) {
78
76
  return target;
79
77
  }
80
78
 
81
- // NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
82
- // Copies data from a Framebuffer or a Texture object into a Buffer object.
79
+ /**
80
+ * Copies data from a Framebuffer or a Texture object into a Buffer object.
81
+ * NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
82
+ * @param source
83
+ * @param options
84
+ */
83
85
  export function readPixelsToBuffer(
84
86
  source: Framebuffer | Texture,
85
87
  options?: {
@@ -93,30 +95,23 @@ export function readPixelsToBuffer(
93
95
  sourceHeight?: number;
94
96
  sourceType?: number;
95
97
  }
96
- ): Buffer;
97
-
98
- // NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.
99
- // Copies data from a Framebuffer or a Texture object into a Buffer object.
100
- export function readPixelsToBuffer(
101
- source,
102
- {
103
- sourceX = 0,
104
- sourceY = 0,
105
- sourceFormat = GL.RGBA,
106
- target = null, // A new Buffer object is created when not provided.
107
- targetByteOffset = 0, // byte offset in buffer object
98
+ ): Buffer {
99
+ const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA,
100
+ targetByteOffset = 0
101
+ } = options || {};
108
102
  // following parameters are auto deduced if not provided
103
+ let {
104
+ target,
109
105
  sourceWidth,
110
106
  sourceHeight,
111
- sourceType
112
- }
113
- ) {
107
+ sourceType,
108
+ } = options || {}
114
109
  const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
115
110
  assert(framebuffer);
116
111
  sourceWidth = sourceWidth || framebuffer.width;
117
112
  sourceHeight = sourceHeight || framebuffer.height;
118
113
 
119
- // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature
114
+ // Asynchronous read (PIXEL_PACK_BUFFER) is WebGL2 only feature
120
115
  const gl2 = assertWebGL2Context(framebuffer.gl);
121
116
 
122
117
  // deduce type if not available.
@@ -127,12 +122,11 @@ export function readPixelsToBuffer(
127
122
  const components = glFormatToComponents(sourceFormat);
128
123
  const byteCount = glTypeToBytes(sourceType);
129
124
  const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;
130
- // @ts-expect-error TODO why is WebGL2 context not compatible
131
125
  target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});
132
126
  }
133
127
 
128
+ // @ts-expect-error
134
129
  target.bind({target: GL.PIXEL_PACK_BUFFER});
135
- // @ts-expect-error TODO why is WebGL2 context not compatible
136
130
  withParameters(gl2, {framebuffer}, () => {
137
131
  gl2.readPixels(
138
132
  sourceX,
@@ -204,6 +198,7 @@ export function copyToImage(
204
198
  ): typeof Image {
205
199
  const dataUrl = copyToDataUrl(source, {sourceAttachment: options?.sourceAttachment || GL.COLOR_ATTACHMENT0});
206
200
  const targetImage = options?.targetImage || new Image();
201
+ // @ts-expect-error
207
202
  targetImage.src = dataUrl;
208
203
  // @ts-expect-error
209
204
  return targetImage;
@@ -215,7 +210,7 @@ export function copyToImage(
215
210
  // eslint-disable-next-line complexity, max-statements
216
211
  export function copyToTexture(
217
212
  source: Framebuffer | Texture,
218
- target: Texture,
213
+ target: Texture | GL,
219
214
  options?: {
220
215
  sourceX?: number;
221
216
  sourceY?: number;
@@ -236,14 +231,14 @@ export function copyToTexture(
236
231
  // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer
237
232
  targetMipmaplevel = 0,
238
233
  targetInternalFormat = GL.RGBA
239
- } = options;
234
+ } = options || {};
240
235
  let {
241
236
  targetX,
242
237
  targetY,
243
238
  targetZ,
244
239
  width, // defaults to target width
245
240
  height // defaults to target height
246
- } = options;
241
+ } = options || {};
247
242
 
248
243
  const {framebuffer, deleteFramebuffer} = getFramebuffer(source);
249
244
  assert(framebuffer);
@@ -260,17 +255,20 @@ export function copyToTexture(
260
255
  // const prevBuffer = gl.readBuffer(attachment);
261
256
  assert(target);
262
257
  let texture = null;
258
+ let textureTarget: GL;
263
259
  if (target instanceof Texture) {
264
260
  texture = target;
265
261
  width = Number.isFinite(width) ? width : texture.width;
266
262
  height = Number.isFinite(height) ? height : texture.height;
267
263
  texture.bind(0);
268
- target = texture.target;
264
+ textureTarget = texture.target;
265
+ } else {
266
+ textureTarget = target;
269
267
  }
270
268
 
271
269
  if (!isSubCopy) {
272
270
  gl.copyTexImage2D(
273
- target,
271
+ textureTarget,
274
272
  targetMipmaplevel,
275
273
  targetInternalFormat,
276
274
  sourceX,
@@ -280,11 +278,11 @@ export function copyToTexture(
280
278
  0 /* border must be 0 */
281
279
  );
282
280
  } else {
283
- switch (target) {
281
+ switch (textureTarget) {
284
282
  case GL.TEXTURE_2D:
285
283
  case GL.TEXTURE_CUBE_MAP:
286
284
  gl.copyTexSubImage2D(
287
- target,
285
+ textureTarget,
288
286
  targetMipmaplevel,
289
287
  targetX,
290
288
  targetY,
@@ -298,7 +296,7 @@ export function copyToTexture(
298
296
  case GL.TEXTURE_3D:
299
297
  const gl2 = assertWebGL2Context(gl);
300
298
  gl2.copyTexSubImage3D(
301
- target,
299
+ textureTarget,
302
300
  targetMipmaplevel,
303
301
  targetX,
304
302
  targetY,
@@ -315,7 +313,7 @@ export function copyToTexture(
315
313
  if (texture) {
316
314
  texture.unbind();
317
315
  }
318
- // @ts-ignore
316
+ // @ts-expect-error
319
317
  gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
320
318
  if (deleteFramebuffer) {
321
319
  framebuffer.delete();
@@ -378,7 +376,6 @@ export function blit(
378
376
 
379
377
  assert(srcFramebuffer);
380
378
  assert(dstFramebuffer);
381
- // @ts-ignore
382
379
  const {gl, handle, width, height, readBuffer} = dstFramebuffer;
383
380
  const gl2 = assertWebGL2Context(gl);
384
381
 
@@ -427,9 +424,9 @@ export function blit(
427
424
  filter
428
425
  );
429
426
  gl2.readBuffer(readBuffer);
430
- // @ts-ignore
427
+ // @ts-expect-error
431
428
  gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);
432
- // @ts-ignore
429
+ // @ts-expect-error
433
430
  gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);
434
431
  if (deleteSrcFramebuffer) {
435
432
  srcFramebuffer.delete();
@@ -438,7 +435,7 @@ export function blit(
438
435
  dstFramebuffer.delete();
439
436
  }
440
437
 
441
- return dstFramebuffer;
438
+ // return dstFramebuffer;
442
439
  }
443
440
 
444
441
  // Helper methods
@@ -1,16 +1,14 @@
1
+ import {log, assert} from '@luma.gl/api';
1
2
  import GL from '@luma.gl/constants';
2
- import {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';
3
+ import WebGLDevice from '../adapter/webgl-device';
4
+ import {getWebGL2Context, assertWebGL2Context} from '../context/context/webgl-checks';
5
+ import {getKey} from '../webgl-utils/constants-to-keys';
3
6
  import Resource, {ResourceProps} from './webgl-resource';
4
7
  import Texture2D from './texture-2d';
5
8
  import Renderbuffer from './renderbuffer';
6
9
  import {clear, clearBuffer} from './clear';
7
10
  import {copyToDataUrl} from './copy-and-blit';
8
11
 
9
- import {getLumaContextData} from '../context/luma-context-data';
10
- import {getFeatures} from '../features';
11
- import {getKey} from '../webgl-utils';
12
- import {assert} from '../utils';
13
-
14
12
  const ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';
15
13
 
16
14
  type TextureAttachment = {
@@ -40,7 +38,7 @@ type colorBufferFloatOptions = {colorBufferFloat?: boolean; colorBufferHalfFloat
40
38
 
41
39
  export class ImmutableFramebuffer extends Resource<FramebufferProps> {
42
40
  constructor(gl: WebGLRenderingContext, props?: FramebufferProps) {
43
- super(gl, props, {} as any);
41
+ super(WebGLDevice.attach(gl), props, {} as any);
44
42
  this._initialize({
45
43
  attachments: props?.attachments || {},
46
44
  readBuffer: props?.readBuffer,
@@ -61,7 +59,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
61
59
  const {gl} = this;
62
60
  const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
63
61
  const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
64
- // @ts-ignore
62
+ // @ts-expect-error
65
63
  gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
66
64
  return status;
67
65
  }
@@ -82,7 +80,8 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
82
80
  }
83
81
  message = message || `Framebuffer ${this.id}`;
84
82
  const image = copyToDataUrl(this, {targetMaxHeight: 100});
85
- log.image({logLevel, message, image}, message)();
83
+ // @ts-expect-error probe.gl typings incorrectly require priority...
84
+ log.image({logLevel, message, image})();
86
85
  return this;
87
86
  }
88
87
 
@@ -112,7 +111,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
112
111
  if (drawBuffers) {
113
112
  this._setDrawBuffers(drawBuffers);
114
113
  }
115
- // @ts-ignore
114
+ // @ts-expect-error
116
115
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
117
116
 
118
117
  return this;
@@ -131,7 +130,7 @@ export class ImmutableFramebuffer extends Resource<FramebufferProps> {
131
130
  this._attachOne(attachmentPoint, attachment);
132
131
  }
133
132
 
134
- // @ts-ignore
133
+ // @ts-expect-error
135
134
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
136
135
  }
137
136
 
@@ -280,16 +279,16 @@ export default class Framebuffer extends ImmutableFramebuffer {
280
279
  * Creates a Framebuffer object wrapper for the default WebGL framebuffer (target === null)
281
280
  */
282
281
  static getDefaultFramebuffer(gl: WebGLRenderingContext): Framebuffer {
283
- const lumaContextData = getLumaContextData(gl);
284
- lumaContextData.defaultFramebuffer =
285
- lumaContextData.defaultFramebuffer ||
282
+ const webglDevice = WebGLDevice.fromContext(gl);
283
+ webglDevice.defaultFramebuffer =
284
+ webglDevice.defaultFramebuffer ||
286
285
  new Framebuffer(gl, {
287
286
  id: 'default-framebuffer',
288
287
  handle: null,
289
288
  attachments: {}
290
289
  });
291
290
  // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?
292
- return lumaContextData.defaultFramebuffer;
291
+ return webglDevice.defaultFramebuffer;
293
292
  }
294
293
 
295
294
  get MAX_COLOR_ATTACHMENTS(): number {
@@ -407,13 +406,13 @@ export default class Framebuffer extends ImmutableFramebuffer {
407
406
  this._setDrawBuffers(drawBuffers);
408
407
  this.drawBuffers = drawBuffers;
409
408
  }
410
- // @ts-ignore
409
+ // @ts-expect-error
411
410
  gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
412
411
 
413
412
  return this;
414
413
  }
415
414
 
416
- // Attachment resize is expected to be a noop if size is same
415
+ /** Attachment resize is expected to be a noop if size is same */
417
416
  resize(size?: {width?: number; height?: number}): this {
418
417
  let {width, height} = size || {};
419
418
  // for default framebuffer, just update the stored size
@@ -442,7 +441,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
442
441
  return this;
443
442
  }
444
443
 
445
- // Attach from a map of attachments
444
+ /** Attach from a map of attachments */
446
445
  attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {
447
446
  const newAttachments = {};
448
447
 
@@ -480,7 +479,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
480
479
  }
481
480
  }
482
481
 
483
- // @ts-ignore
482
+ // @ts-expect-error
484
483
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
485
484
 
486
485
  // Assign to attachments and remove any nulls to get a clean attachment map
@@ -506,7 +505,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
506
505
  clearBuffer(this.gl, {drawBuffer, value});
507
506
  });
508
507
 
509
- // @ts-ignore
508
+ // @ts-expect-error
510
509
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
511
510
 
512
511
  return this;
@@ -531,10 +530,10 @@ export default class Framebuffer extends ImmutableFramebuffer {
531
530
  gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);
532
531
  } else {
533
532
  // TODO - why does type checking fail on this line
534
- // @ts-ignore
533
+ // @ts-expect-error
535
534
  gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);
536
535
  }
537
- // @ts-ignore
536
+ // @ts-expect-error
538
537
  gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);
539
538
  return this;
540
539
  }
@@ -549,7 +548,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
549
548
  this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);
550
549
  }
551
550
  if (keys && value > 1000) {
552
- // @ts-ignore
551
+ // @ts-expect-error
553
552
  value = getKey(this.gl, value);
554
553
  }
555
554
  return value;
@@ -558,7 +557,7 @@ export default class Framebuffer extends ImmutableFramebuffer {
558
557
  getAttachmentParameters(
559
558
  attachment = GL.COLOR_ATTACHMENT0,
560
559
  keys,
561
- // @ts-ignore
560
+ // @ts-expect-error
562
561
  parameters = this.constructor.ATTACHMENT_PARAMETERS || []
563
562
  ) {
564
563
  const values = {};
@@ -672,32 +671,36 @@ export default class Framebuffer extends ImmutableFramebuffer {
672
671
  delete this.attachments[attachment];
673
672
  }
674
673
 
675
- // Attempt to provide workable defaults for WebGL2 symbols under WebGL1
676
- // null means OK to query
677
- // TODO - move to webgl1 polyfills
678
- /* eslint-disable complexity */
674
+ /**
675
+ * Attempt to provide workable defaults for WebGL2 symbols under WebGL1
676
+ * null means OK to query
677
+ * TODO - move to webgl1 polyfills
678
+ * @param pname
679
+ * @returns
680
+ */
681
+ // eslint-disable-next-line complexity
679
682
  _getAttachmentParameterFallback(pname) {
680
- const caps = getFeatures(this.gl);
683
+ const webglDevice = WebGLDevice.fromContext(this.gl);
684
+ const features = webglDevice.features;
681
685
 
682
686
  switch (pname) {
683
687
  case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint
684
- return !caps.WEBGL2 ? 0 : null;
688
+ return !features.has('webgl2') ? 0 : null;
685
689
  case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint
686
690
  case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint
687
691
  case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint
688
692
  case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint
689
693
  case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint
690
694
  case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint
691
- return !caps.WEBGL2 ? 8 : null;
695
+ return !features.has('webgl2') ? 8 : null;
692
696
  case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum
693
- return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;
697
+ return !features.has('webgl2') ? GL.UNSIGNED_INT : null;
694
698
  case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
695
- return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;
699
+ return !features.has('webgl2') && !features.has('webgl-color-encoding-srgb') ? GL.LINEAR : null;
696
700
  default:
697
701
  return null;
698
702
  }
699
703
  }
700
- /* eslint-enable complexity */
701
704
  }
702
705
 
703
706
  // PUBLIC METHODS
@@ -713,7 +716,7 @@ function mapIndexToCubeMapFace(layer) {
713
716
  // Get a string describing the framebuffer error if installed
714
717
  function _getFrameBufferStatus(status) {
715
718
  // Use error mapping if installed
716
- // @ts-ignore
719
+ // @ts-expect-error
717
720
  const STATUS = Framebuffer.STATUS || {};
718
721
  return STATUS[status] || `Framebuffer error ${status}`;
719
722
  }
@@ -1,8 +1,9 @@
1
1
  // Contains metadata describing attribute configurations for a program's shaders
2
2
  // Much of this is automatically extracted from shaders after program linking
3
- import Accessor from './accessor';
4
- import {isWebGL2} from '@luma.gl/gltools';
5
- import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
3
+ // import Accessor from './accessor';
4
+ import type Program from './program';
5
+ import type {AttributeBinding, VaryingBinding} from '../helpers/program-bindings';
6
+ import {getProgramBindings} from '../helpers/get-program-bindings';
6
7
 
7
8
  /**
8
9
  * is a mechanism for taking a program object and querying information
@@ -12,22 +13,32 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
12
13
  */
13
14
  export default class ProgramConfiguration {
14
15
  id: string;
15
- attributeInfos = [];
16
- attributeInfosByName = {};
16
+ attributeInfos: AttributeBinding[] = [];
17
+ attributeInfosByName: Record<string, AttributeBinding> = {};
17
18
  // Locations may not be contiguous the case of matrix attributes
18
19
  // so keep a separate location->attribute map.
19
- attributeInfosByLocation = [];
20
- varyingInfos = [];
21
- varyingInfosByName = {};
20
+ attributeInfosByLocation: AttributeBinding[] = [];
21
+ varyingInfos: VaryingBinding[] = [];
22
+ varyingInfosByName: Record<string, VaryingBinding> = {};
22
23
 
23
- constructor(program) {
24
+ constructor(program: Program) {
24
25
  this.id = program.id;
25
26
  Object.seal(this);
26
- this._readAttributesFromProgram(program);
27
- this._readVaryingsFromProgram(program);
27
+
28
+ const bindings = getProgramBindings(program.gl2, program.handle);
29
+
30
+ this.attributeInfos = bindings.attributes;
31
+ for (const attributeInfo of bindings.attributes) {
32
+ this.attributeInfosByName[attributeInfo.name] = attributeInfo;
33
+ this.attributeInfosByLocation[attributeInfo.location] = attributeInfo;
34
+ }
35
+
36
+ for (const varyingInfo of bindings.varyings) {
37
+ this.varyingInfosByName[varyingInfo.name] = varyingInfo;
38
+ }
28
39
  }
29
40
 
30
- getAttributeInfo(locationOrName) {
41
+ getAttributeInfo(locationOrName: number | string): AttributeBinding {
31
42
  const location = Number(locationOrName);
32
43
  if (Number.isFinite(location)) {
33
44
  return this.attributeInfosByLocation[location];
@@ -36,17 +47,17 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
36
47
  }
37
48
 
38
49
  // Resolves an attribute name or index to an index
39
- getAttributeLocation(locationOrName) {
50
+ getAttributeLocation(locationOrName: number | string): number {
40
51
  const attributeInfo = this.getAttributeInfo(locationOrName);
41
52
  return attributeInfo ? attributeInfo.location : -1;
42
53
  }
43
54
 
44
- getAttributeAccessor(locationOrName) {
55
+ getAttributeAccessor(locationOrName: number | string) {
45
56
  const attributeInfo = this.getAttributeInfo(locationOrName);
46
57
  return attributeInfo ? attributeInfo.accessor : null;
47
58
  }
48
59
 
49
- getVaryingInfo(locationOrName) {
60
+ getVaryingInfo(locationOrName: number | string): VaryingBinding {
50
61
  const location = Number(locationOrName);
51
62
  if (Number.isFinite(location)) {
52
63
  return this.varyingInfos[location];
@@ -54,77 +65,13 @@ import {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';
54
65
  return this.varyingInfosByName[locationOrName] || null;
55
66
  }
56
67
 
57
- getVaryingIndex(locationOrName) {
68
+ getVaryingIndex(locationOrName: number | string): number {
58
69
  const varying = this.getVaryingInfo(locationOrName);
59
70
  return varying ? varying.location : -1;
60
71
  }
61
72
 
62
- getVaryingAccessor(locationOrName) {
73
+ getVaryingAccessor(locationOrName: number | string) {
63
74
  const varying = this.getVaryingInfo(locationOrName);
64
75
  return varying ? varying.accessor : null;
65
76
  }
66
-
67
- // PRIVATE METHODS
68
-
69
- // linkProgram needs to have been called, although linking does not need to have been successful
70
- _readAttributesFromProgram(program) {
71
- const {gl} = program;
72
- const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);
73
-
74
- for (let index = 0; index < count; index++) {
75
- const {name, type, size} = gl.getActiveAttrib(program.handle, index);
76
- const location = gl.getAttribLocation(program.handle, name);
77
- // Add only user provided attributes, for built-in attributes like
78
- // `gl_InstanceID` locaiton will be < 0
79
- if (location >= 0) {
80
- this._addAttribute(location, name, type, size);
81
- }
82
- }
83
-
84
- this.attributeInfos.sort((a, b) => a.location - b.location);
85
- }
86
-
87
- // linkProgram needs to have been called, although linking does not need to have been successful
88
- _readVaryingsFromProgram(program) {
89
- const {gl} = program;
90
- if (!isWebGL2(gl)) {
91
- return;
92
- }
93
-
94
- const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);
95
- for (let location = 0; location < count; location++) {
96
- const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);
97
- this._addVarying(location, name, type, size);
98
- }
99
-
100
- this.varyingInfos.sort((a, b) => a.location - b.location);
101
- }
102
-
103
- _addAttribute(location, name, compositeType, size) {
104
- const {type, components} = decomposeCompositeGLType(compositeType);
105
- const accessor = {type, size: size * components};
106
- this._inferProperties(location, name, accessor);
107
-
108
- const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values
109
- this.attributeInfos.push(attributeInfo);
110
- this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup
111
- this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup
112
- }
113
-
114
- // Extract additional attribute metadata from shader names (based on attribute naming conventions)
115
- _inferProperties(location, name, accessor) {
116
- if (/instance/i.test(name)) {
117
- // Any attribute containing the word "instance" will be assumed to be instanced
118
- accessor.divisor = 1;
119
- }
120
- }
121
-
122
- _addVarying(location, name, compositeType, size) {
123
- const {type, components} = decomposeCompositeGLType(compositeType);
124
- const accessor = new Accessor({type, size: size * components});
125
-
126
- const varying = {location, name, accessor}; // Base values
127
- this.varyingInfos.push(varying);
128
- this.varyingInfosByName[varying.name] = varying; // For quick name based lookup
129
- }
130
77
  }