@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.41

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 (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +42 -47
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +51 -19
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +14 -21
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +60 -115
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +27 -57
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +34 -41
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +49 -78
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +169 -43
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +46 -155
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +91 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +108 -230
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +10 -19
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +19 -31
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +119 -235
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +166 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +74 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +214 -128
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +23 -48
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
  127. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  128. package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
  129. package/dist/classic/buffer-with-accessor.js.map +1 -0
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +200 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +38 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +15 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +1 -21
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +16 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +10 -32
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +10391 -0
  202. package/dist/index.cjs +6625 -0
  203. package/dist/index.d.ts +27 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +37 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +124 -36
  213. package/src/adapter/converters/sampler-parameters.ts +22 -9
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +267 -194
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +13 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +17 -10
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +59 -58
  231. package/src/adapter/resources/webgl-command-buffer.ts +333 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +89 -133
  235. package/src/adapter/resources/webgl-render-pass.ts +160 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +265 -170
  237. package/src/adapter/resources/webgl-sampler.ts +15 -9
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +120 -90
  240. package/src/adapter/resources/webgl-vertex-array.ts +279 -0
  241. package/src/adapter/webgl-canvas-context.ts +16 -14
  242. package/src/adapter/webgl-device.ts +321 -78
  243. package/src/classic/accessor.ts +7 -17
  244. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +314 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +19 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +20 -16
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +69 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  273. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  274. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  275. package/dist/adapter/helpers/uniforms.js.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  277. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  279. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  280. package/dist/bundle.d.ts +0 -2
  281. package/dist/bundle.d.ts.map +0 -1
  282. package/dist/bundle.js +0 -5
  283. package/dist/bundle.js.map +0 -1
  284. package/dist/classic/buffer.d.ts.map +0 -1
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -144
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/context/context/context-state.ts +0 -41
  522. package/src/context/context/create-context.ts +0 -110
  523. package/src/context/context/device-pixels.ts +0 -152
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -283
@@ -1,48 +1,36 @@
1
- import {
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import type {
2
5
  ShaderLayout,
3
- BindingLayout,
4
6
  UniformBinding,
5
7
  UniformBlockBinding,
6
- ProgramBindings,
7
- AttributeBinding,
8
- VaryingBinding,
9
- AttributeLayout,
10
- AccessorObject
11
- } from '@luma.gl/api';
12
- import GL from '@luma.gl/constants';
8
+ AttributeDeclaration,
9
+ VaryingBinding
10
+ } from '@luma.gl/core';
11
+
12
+ import {GL} from '@luma.gl/constants';
13
13
  import {isWebGL2} from '../../context/context/webgl-checks';
14
- import Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API
15
- import {decodeUniformType, decodeAttributeType} from './uniforms';
16
- import {getVertexFormat} from '../converters/vertex-formats';
17
- import {isSamplerUniform} from './uniforms';
14
+ import {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API
15
+ import {decodeGLUniformType, decodeGLAttributeType, isSamplerUniform} from './decode-webgl-types';
16
+
18
17
  /**
19
18
  * Extract metadata describing binding information for a program's shaders
20
19
  * Note: `linkProgram()` needs to have been called
21
20
  * (although linking does not need to have been successful).
22
21
  */
23
22
  export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {
24
- const programBindings = getProgramBindings(gl, program);
25
-
26
23
  const shaderLayout: ShaderLayout = {
27
24
  attributes: [],
28
25
  bindings: []
29
26
  };
30
27
 
31
- for (const attribute of programBindings.attributes) {
32
- const format =
33
- // attribute.accessor.format ||
34
- getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
35
- shaderLayout.attributes.push({
36
- name: attribute.name,
37
- location: attribute.location,
38
- format,
39
- stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
40
- });
41
- }
28
+ shaderLayout.attributes = readAttributeDeclarations(gl, program);
42
29
 
43
30
  // Uniform blocks
44
- for (const uniformBlock of programBindings.uniformBlocks) {
45
- const uniforms = uniformBlock.uniforms.map((uniform) => ({
31
+ const uniformBlocks: UniformBlockBinding[] = readUniformBlocks(gl, program);
32
+ for (const uniformBlock of uniformBlocks) {
33
+ const uniforms = uniformBlock.uniforms.map(uniform => ({
46
34
  name: uniform.name,
47
35
  format: uniform.format,
48
36
  byteOffset: uniform.byteOffset,
@@ -59,8 +47,9 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
59
47
  });
60
48
  }
61
49
 
50
+ const uniforms: UniformBinding[] = readUniformBindings(gl, program);
62
51
  let textureUnit = 0;
63
- for (const uniform of programBindings.uniforms) {
52
+ for (const uniform of uniforms) {
64
53
  if (isSamplerUniform(uniform.type)) {
65
54
  const {viewDimension, sampleType} = getSamplerInfo(uniform.type);
66
55
  shaderLayout.bindings.push({
@@ -77,69 +66,64 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
77
66
  }
78
67
  }
79
68
 
80
- const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];
81
69
  if (uniforms.length) {
82
70
  shaderLayout.uniforms = uniforms;
83
71
  }
84
- if (programBindings.varyings?.length) {
85
- shaderLayout.varyings = programBindings.varyings;
72
+
73
+ // Varyings
74
+ const varyings: VaryingBinding[] = readVaryings(gl, program);
75
+ // Note - samplers are always in unform bindings, even if uniform blocks are used
76
+ if (varyings?.length) {
77
+ shaderLayout.varyings = varyings;
86
78
  }
87
79
 
88
80
  return shaderLayout;
89
81
  }
90
82
 
91
- /**
92
- * Extract metadata describing binding information for a program's shaders
93
- * Note: `linkProgram()` needs to have been called
94
- * (although linking does not need to have been successful).
95
- */
96
- export function getProgramBindings(
97
- gl: WebGLRenderingContext,
98
- program: WebGLProgram
99
- ): ProgramBindings {
100
- const config: ProgramBindings = {
101
- attributes: readAttributeBindings(gl, program),
102
- uniforms: readUniformBindings(gl, program),
103
- uniformBlocks: readUniformBlocks(gl, program),
104
- varyings: readVaryings(gl, program)
105
- };
106
-
107
- Object.seal(config);
108
- return config;
109
- // generateWebGPUStyleBindings(bindings);
110
- }
83
+ // HELPERS
111
84
 
112
85
  /**
113
86
  * Extract info about all transform feedback varyings
114
87
  *
115
88
  * linkProgram needs to have been called, although linking does not need to have been successful
116
89
  */
117
- function readAttributeBindings(
90
+ function readAttributeDeclarations(
118
91
  gl: WebGLRenderingContext,
119
92
  program: WebGLProgram
120
- ): AttributeBinding[] {
121
- const attributes: AttributeBinding[] = [];
93
+ ): AttributeDeclaration[] {
94
+ const attributes: AttributeDeclaration[] = [];
122
95
 
123
96
  const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
124
97
 
125
98
  for (let index = 0; index < count; index++) {
126
- const {name, type: compositeType, size} = gl.getActiveAttrib(program, index);
99
+ const activeInfo = gl.getActiveAttrib(program, index);
100
+ if (!activeInfo) {
101
+ throw new Error('activeInfo');
102
+ }
103
+ const {name, type: compositeType /* , size*/} = activeInfo;
127
104
  const location = gl.getAttribLocation(program, name);
128
- // Add only user provided attributes, for built-in attributes like
129
- // `gl_InstanceID` locaiton will be < 0
105
+ // Add only user provided attributes, for built-in attributes like `gl_InstanceID` location will be < 0
130
106
  if (location >= 0) {
131
- const {glType, components} = decodeAttributeType(compositeType);
132
- const accessor: AccessorObject = {type: glType, size: size * components};
133
- // Any attribute name containing the word "instance" will be assumed to be instanced
134
- if (/instance/i.test(name)) {
135
- accessor.divisor = 1;
136
- }
137
- const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values
138
- attributes.push(attributeInfo);
107
+ const {attributeType} = decodeGLAttributeType(compositeType);
108
+
109
+ // Whether an attribute is instanced is essentially fixed by the structure of the shader code,
110
+ // so it is arguably a static property of the shader.
111
+ // There is no hint in the shader declarations
112
+ // Heuristic: Any attribute name containing the word "instance" will be assumed to be instanced
113
+ const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';
114
+
115
+ attributes.push({
116
+ name,
117
+ location,
118
+ stepMode,
119
+ type: attributeType,
120
+ // size - for arrays, size is the number of elements in the array
121
+ });
139
122
  }
140
123
  }
141
124
 
142
- attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);
125
+ // Sort by declaration order
126
+ attributes.sort((a: AttributeDeclaration, b: AttributeDeclaration) => a.location - b.location);
143
127
  return attributes;
144
128
  }
145
129
 
@@ -158,8 +142,12 @@ function readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): Varying
158
142
 
159
143
  const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
160
144
  for (let location = 0; location < count; location++) {
161
- const {name, type: compositeType, size} = gl2.getTransformFeedbackVarying(program, location);
162
- const {glType, components} = decodeUniformType(compositeType);
145
+ const activeInfo = gl2.getTransformFeedbackVarying(program, location);
146
+ if (!activeInfo) {
147
+ throw new Error('activeInfo');
148
+ }
149
+ const {name, type: compositeType, size} = activeInfo;
150
+ const {glType, components} = decodeGLUniformType(compositeType);
163
151
  const accessor = new Accessor({type: glType, size: size * components});
164
152
  const varying = {location, name, accessor}; // Base values
165
153
  varyings.push(varying);
@@ -179,7 +167,11 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
179
167
 
180
168
  const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
181
169
  for (let i = 0; i < uniformCount; i++) {
182
- const {name: rawName, size, type} = gl.getActiveUniform(program, i);
170
+ const activeInfo = gl.getActiveUniform(program, i);
171
+ if (!activeInfo) {
172
+ throw new Error('activeInfo');
173
+ }
174
+ const {name: rawName, size, type} = activeInfo;
183
175
  const {name, isArray} = parseUniformName(rawName);
184
176
  let webglLocation = gl.getUniformLocation(program, name);
185
177
  const uniformInfo = {
@@ -214,9 +206,7 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
214
206
 
215
207
  /**
216
208
  * Extract info about all "active" uniform blocks
217
- *
218
- * ("Active" just means that unused (aka inactive) blocks may have been
219
- * optimized away during linking)
209
+ * @note In WebGL, "active" just means that unused (inactive) blocks may have been optimized away during linking)
220
210
  */
221
211
  function readUniformBlocks(
222
212
  gl: WebGLRenderingContext,
@@ -234,8 +224,8 @@ function readUniformBlocks(
234
224
 
235
225
  const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
236
226
  for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
237
- const blockInfo = {
238
- name: gl2.getActiveUniformBlockName(program, blockIndex),
227
+ const blockInfo: UniformBlockBinding = {
228
+ name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
239
229
  location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
240
230
  byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
241
231
  vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
@@ -244,33 +234,39 @@ function readUniformBlocks(
244
234
  uniforms: [] as any[]
245
235
  };
246
236
 
247
- const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES);
237
+ const uniformIndices =
238
+ (getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];
248
239
 
249
240
  const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
250
241
  const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
251
- const uniformBlockIndex = gl2.getActiveUniforms(
252
- program,
253
- uniformIndices,
254
- GL.UNIFORM_BLOCK_INDEX
255
- ); // Array of GLint indicating the block indices of the uniforms.
242
+ // const uniformBlockIndex = gl2.getActiveUniforms(
243
+ // program,
244
+ // uniformIndices,
245
+ // GL.UNIFORM_BLOCK_INDEX
246
+ // ); // Array of GLint indicating the block indices of the uniforms.
256
247
  const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
257
248
  const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
258
- const uniformMatrixStride = gl2.getActiveUniforms(
259
- program,
260
- uniformIndices,
261
- GL.UNIFORM_MATRIX_STRIDE
262
- ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
263
- const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
249
+ // const uniformMatrixStride = gl2.getActiveUniforms(
250
+ // program,
251
+ // uniformIndices,
252
+ // GL.UNIFORM_MATRIX_STRIDE
253
+ // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
254
+ // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
264
255
  for (let i = 0; i < blockInfo.uniformCount; ++i) {
256
+ const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
257
+ if (!activeInfo) {
258
+ throw new Error('activeInfo');
259
+ }
260
+
265
261
  blockInfo.uniforms.push({
266
- name: gl2.getActiveUniform(program, uniformIndices[i]).name,
267
- format: decodeUniformType(uniformType[i]).format,
262
+ name: activeInfo.name,
263
+ format: decodeGLUniformType(uniformType[i]).format,
268
264
  type: uniformType[i],
269
265
  arrayLength: uniformArrayLength[i],
270
266
  byteOffset: uniformOffset[i],
271
- byteStride: uniformStride[i],
272
- matrixStride: uniformStride[i],
273
- rowMajor: uniformRowMajor[i]
267
+ byteStride: uniformStride[i]
268
+ // matrixStride: uniformStride[i],
269
+ // rowMajor: uniformRowMajor[i]
274
270
  });
275
271
  }
276
272
 
@@ -281,6 +277,27 @@ function readUniformBlocks(
281
277
  return uniformBlocks;
282
278
  }
283
279
 
280
+ /**
281
+ * TOOD - compare with a above, confirm copy, then delete
282
+ const bindings: Binding[] = [];
283
+ const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
284
+ for (let blockIndex = 0; blockIndex < count; blockIndex++) {
285
+ const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
286
+ const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
287
+ const visibility = (vertex) + (fragment);
288
+ const binding: BufferBinding = {
289
+ location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
290
+ // name: gl.getActiveUniformBlockName(program, blockIndex),
291
+ type: 'uniform',
292
+ visibility,
293
+ minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
294
+ // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
295
+ // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
296
+ }
297
+ bindings.push(binding);
298
+ }
299
+ */
300
+
284
301
  const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
285
302
  number,
286
303
  [
@@ -305,18 +322,18 @@ const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
305
322
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
306
323
  };
307
324
 
308
- function getSamplerInfo(type: GL):
309
- | {
310
- viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
311
- sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
312
- }
313
- | undefined {
314
- let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
315
- if (sampler) {
316
- const [viewDimension, sampleType] = sampler;
317
- return {viewDimension, sampleType};
325
+ type SamplerInfo = {
326
+ viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
327
+ sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
328
+ };
329
+
330
+ function getSamplerInfo(type: GL): SamplerInfo {
331
+ const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
332
+ if (!sampler) {
333
+ throw new Error('sampler');
318
334
  }
319
- return null;
335
+ const [viewDimension, sampleType] = sampler;
336
+ return {viewDimension, sampleType};
320
337
  }
321
338
 
322
339
  // HELPERS
@@ -333,7 +350,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
333
350
 
334
351
  // if array name then clean the array brackets
335
352
  const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
336
- const matches = name.match(UNIFORM_NAME_REGEXP);
353
+ const matches = UNIFORM_NAME_REGEXP.exec(name);
337
354
  if (!matches || matches.length < 2) {
338
355
  throw new Error(`Failed to parse GLSL uniform name ${name}`);
339
356
  }
@@ -344,45 +361,3 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
344
361
  isArray: Boolean(matches[2])
345
362
  };
346
363
  }
347
-
348
- /**
349
- * TODO - verify this is a copy of above and delete
350
- * import type {TextureFormat} from '@luma.gl/api';
351
- * Extract info about all "active" uniform blocks
352
- * ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
353
- *
354
- function getUniformBlockBindings(gl, program): Binding[] {
355
- if (!isWebGL2(gl)) {
356
- return;
357
- }
358
- const bindings: Binding[] = [];
359
- const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
360
- for (let blockIndex = 0; blockIndex < count; blockIndex++) {
361
- const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
362
- const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
363
- const visibility = (vertex) + (fragment);
364
- const binding: BufferBinding = {
365
- location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
366
- // name: gl.getActiveUniformBlockName(program, blockIndex),
367
- type: 'uniform',
368
- visibility,
369
- minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
370
- // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
371
- // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
372
- }
373
- bindings.push(binding);
374
- }
375
- return bindings;
376
- }
377
-
378
- function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
379
- for (const bindGroup of bindings) {
380
- for (const binding of bindGroup) {
381
-
382
- }
383
- }
384
-
385
- // Set up indirection table
386
- // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
387
- }
388
- */
@@ -1,5 +1,7 @@
1
1
  // luma.gl, MIT license
2
- import type {CompilerMessage} from '@luma.gl/shadertools';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import type {CompilerMessage} from '@luma.gl/core';
3
5
 
4
6
  const MESSAGE_TYPES = ['warning', 'error', 'info'];
5
7
 
@@ -16,7 +18,7 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
16
18
 
17
19
  for (const line of lines) {
18
20
  if (line.length <= 1) {
19
- continue;
21
+ continue; // eslint-disable-line no-continue
20
22
  }
21
23
 
22
24
  const segments: string[] = line.split(':');
@@ -1,52 +1,56 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ /* eslint-disable */
5
+
1
6
  // Uniforms
2
- import GL from '@luma.gl/constants';
7
+ import type {UniformValue} from '@luma.gl/core';
8
+ import {GL, GLCompositeType, GLSamplerType} from '@luma.gl/constants';
3
9
 
4
10
  /** Set a raw uniform (without type conversion and caching) */
5
11
  /* eslint-disable max-len */
6
12
  export function setUniform(
7
13
  gl: WebGLRenderingContext,
8
14
  location: WebGLUniformLocation,
9
- type: GL,
10
- value: number | Float32Array | Int32Array | Uint32Array
15
+ type: GLCompositeType | GLSamplerType,
16
+ value: UniformValue
11
17
  ): void {
12
18
  const gl2 = gl as WebGL2RenderingContext;
13
19
 
14
- if (typeof value === 'number') {
15
- // prettier-ignore
16
- switch (type) {
17
- // WebGL1 samplers
18
- case GL.SAMPLER_2D:
19
- case GL.SAMPLER_CUBE:
20
- // WebGL2 samplers
21
- case GL.SAMPLER_3D:
22
- case GL.SAMPLER_2D_SHADOW:
23
- case GL.SAMPLER_2D_ARRAY:
24
- case GL.SAMPLER_2D_ARRAY_SHADOW:
25
- case GL.SAMPLER_CUBE_SHADOW:
26
- case GL.INT_SAMPLER_2D:
27
- case GL.INT_SAMPLER_3D:
28
- case GL.INT_SAMPLER_CUBE:
29
- case GL.INT_SAMPLER_2D_ARRAY:
30
- case GL.UNSIGNED_INT_SAMPLER_2D:
31
- case GL.UNSIGNED_INT_SAMPLER_3D:
32
- case GL.UNSIGNED_INT_SAMPLER_CUBE:
33
- case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
34
- return gl.uniform1i(location, value);
35
- }
20
+ // Prepare the value for WebGL setters
21
+ let uniformValue = value;
22
+ if (uniformValue === true) {
23
+ uniformValue = 1;
36
24
  }
37
-
38
- // @ts-expect-error
39
- if (value === true) {
40
- value = 1;
25
+ if (uniformValue === false) {
26
+ uniformValue = 0;
41
27
  }
42
- // @ts-expect-error
43
- if (value === false) {
44
- value = 1;
45
- }
46
- const arrayValue = (typeof value === 'number') ? [value] : value;
28
+ const arrayValue = typeof uniformValue === 'number' ? [uniformValue] : uniformValue;
47
29
 
48
30
  // prettier-ignore
49
31
  switch (type) {
32
+ // WebGL1 samplers
33
+ case GL.SAMPLER_2D:
34
+ case GL.SAMPLER_CUBE:
35
+ // WebGL2 samplers
36
+ case GL.SAMPLER_3D:
37
+ case GL.SAMPLER_2D_SHADOW:
38
+ case GL.SAMPLER_2D_ARRAY:
39
+ case GL.SAMPLER_2D_ARRAY_SHADOW:
40
+ case GL.SAMPLER_CUBE_SHADOW:
41
+ case GL.INT_SAMPLER_2D:
42
+ case GL.INT_SAMPLER_3D:
43
+ case GL.INT_SAMPLER_CUBE:
44
+ case GL.INT_SAMPLER_2D_ARRAY:
45
+ case GL.UNSIGNED_INT_SAMPLER_2D:
46
+ case GL.UNSIGNED_INT_SAMPLER_3D:
47
+ case GL.UNSIGNED_INT_SAMPLER_CUBE:
48
+ case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
49
+ if (typeof value !== 'number') {
50
+ throw new Error('samplers must be set to integers');
51
+ }
52
+ return gl.uniform1i(location, value);
53
+
50
54
  case GL.FLOAT: return gl.uniform1fv(location, arrayValue);
51
55
  case GL.FLOAT_VEC2: return gl.uniform2fv(location, arrayValue);
52
56
  case GL.FLOAT_VEC3: return gl.uniform3fv(location, arrayValue);
@@ -60,7 +64,7 @@ export function setUniform(
60
64
  case GL.BOOL: return gl.uniform1iv(location, arrayValue);
61
65
  case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);
62
66
  case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);
63
- case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);
67
+ case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);
64
68
 
65
69
  // WEBGL2 - unsigned integers
66
70
  case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);
@@ -1,8 +1,10 @@
1
- import GL from '@luma.gl/constants';
2
- import {GLDrawMode, GLPrimitive} from '../../types/webgl';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {GL, GLPrimitiveTopology, GLPrimitive} from '@luma.gl/constants';
3
5
 
4
6
  // Counts the number of complete primitives given a number of vertices and a drawMode
5
- export function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {
7
+ export function getPrimitiveDrawMode(drawMode: GLPrimitiveTopology): GLPrimitive {
6
8
  switch (drawMode) {
7
9
  case GL.POINTS:
8
10
  return GL.POINTS;
@@ -24,7 +26,7 @@ export function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {
24
26
  }
25
27
 
26
28
  // Counts the number of complete "primitives" given a number of vertices and a drawMode
27
- export function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {
29
+ export function getPrimitiveCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
28
30
  const {drawMode, vertexCount} = options;
29
31
  switch (drawMode) {
30
32
  case GL.POINTS:
@@ -45,7 +47,7 @@ export function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: n
45
47
  }
46
48
 
47
49
  // Counts the number of vertices after splitting the vertex stream into separate "primitives"
48
- export function getVertexCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {
50
+ export function getVertexCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
49
51
  const {drawMode, vertexCount} = options;
50
52
  const primitiveCount = getPrimitiveCount({drawMode, vertexCount});
51
53
  switch (getPrimitiveDrawMode(drawMode)) {
@@ -1,5 +1,8 @@
1
- import {assert} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {assert} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
3
6
 
4
7
  // Resolve a WebGL enumeration name (returns itself if already a number)
5
8
  export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
@@ -16,30 +19,8 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
16
19
 
17
20
  // Look up string, after removing any 'GL.' or 'gl.' prefix
18
21
  name = name.replace(/^.*\./, '');
22
+ // @ts-ignore expect-error depends on settings
19
23
  const value = gl[name];
20
24
  assert(value !== undefined, `Accessing undefined constant GL.${name}`);
21
25
  return value;
22
26
  }
23
-
24
- export function getKey(gl: WebGLRenderingContext, value: any): string {
25
- // @ts-expect-error
26
- gl = gl.gl || gl;
27
- value = Number(value);
28
- for (const key in gl) {
29
- if (gl[key] === value) {
30
- return `GL.${key}`;
31
- }
32
- }
33
- return String(value);
34
- }
35
-
36
- export function getKeyType(gl: WebGLRenderingContext, value: any): string {
37
- assert(value !== undefined, 'undefined key');
38
- value = Number(value);
39
- for (const key in gl) {
40
- if (gl[key] === value) {
41
- return `GL.${key}`;
42
- }
43
- }
44
- return String(value);
45
- }