@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10

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