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

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 +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  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 +52 -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 +306 -343
  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 +53 -22
  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 +9 -25
  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 +54 -58
  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 +49 -22
  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/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  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 +167 -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 +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +100 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +217 -158
  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 +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9296 -0
  198. package/dist/index.cjs +6469 -0
  199. package/dist/index.d.ts +20 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +25 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +343 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +42 -42
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,50 +1,36 @@
1
1
  // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
2
3
 
3
- import {
4
+ import type {
4
5
  ShaderLayout,
5
- BindingLayout,
6
6
  UniformBinding,
7
7
  UniformBlockBinding,
8
- ProgramBindings,
9
- AttributeBinding,
10
- VaryingBinding,
11
- AttributeLayout,
12
- AccessorObject
13
- } from '@luma.gl/api';
14
- import GL from '@luma.gl/constants';
8
+ AttributeDeclaration,
9
+ VaryingBinding
10
+ } from '@luma.gl/core';
11
+
12
+ import {GL} from '@luma.gl/constants';
15
13
  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';
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
22
  export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {
26
- const programBindings = getProgramBindings(gl, program);
27
-
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(
90
+ function readAttributeDeclarations(
120
91
  gl: WebGLRenderingContext,
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
 
@@ -169,7 +147,7 @@ function readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): Varying
169
147
  throw new Error('activeInfo');
170
148
  }
171
149
  const {name, type: compositeType, size} = activeInfo;
172
- const {glType, components} = decodeUniformType(compositeType);;
150
+ const {glType, components} = decodeGLUniformType(compositeType);
173
151
  const accessor = new Accessor({type: glType, size: size * components});
174
152
  const varying = {location, name, accessor}; // Base values
175
153
  varyings.push(varying);
@@ -228,9 +206,7 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
228
206
 
229
207
  /**
230
208
  * 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)
209
+ * @note In WebGL, "active" just means that unused (inactive) blocks may have been optimized away during linking)
234
210
  */
235
211
  function readUniformBlocks(
236
212
  gl: WebGLRenderingContext,
@@ -258,36 +234,37 @@ function readUniformBlocks(
258
234
  uniforms: [] as any[]
259
235
  };
260
236
 
261
- const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[] || [];
237
+ const uniformIndices =
238
+ (getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];
262
239
 
263
240
  const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
264
241
  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.
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.
270
247
  const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
271
248
  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);
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);
278
255
  for (let i = 0; i < blockInfo.uniformCount; ++i) {
279
256
  const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
280
257
  if (!activeInfo) {
281
258
  throw new Error('activeInfo');
282
259
  }
283
-
260
+
284
261
  blockInfo.uniforms.push({
285
262
  name: activeInfo.name,
286
- format: decodeUniformType(uniformType[i]).format,
263
+ format: decodeGLUniformType(uniformType[i]).format,
287
264
  type: uniformType[i],
288
265
  arrayLength: uniformArrayLength[i],
289
266
  byteOffset: uniformOffset[i],
290
- byteStride: uniformStride[i],
267
+ byteStride: uniformStride[i]
291
268
  // matrixStride: uniformStride[i],
292
269
  // rowMajor: uniformRowMajor[i]
293
270
  });
@@ -300,6 +277,27 @@ function readUniformBlocks(
300
277
  return uniformBlocks;
301
278
  }
302
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
+
303
301
  const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
304
302
  number,
305
303
  [
@@ -324,13 +322,13 @@ const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
324
322
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
325
323
  };
326
324
 
327
- type SamplerInfo = | {
325
+ type SamplerInfo = {
328
326
  viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
329
327
  sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
330
328
  };
331
329
 
332
330
  function getSamplerInfo(type: GL): SamplerInfo {
333
- let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
331
+ const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
334
332
  if (!sampler) {
335
333
  throw new Error('sampler');
336
334
  }
@@ -352,7 +350,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
352
350
 
353
351
  // if array name then clean the array brackets
354
352
  const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
355
- const matches = name.match(UNIFORM_NAME_REGEXP);
353
+ const matches = UNIFORM_NAME_REGEXP.exec(name);
356
354
  if (!matches || matches.length < 2) {
357
355
  throw new Error(`Failed to parse GLSL uniform name ${name}`);
358
356
  }
@@ -363,45 +361,3 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
363
361
  isArray: Boolean(matches[2])
364
362
  };
365
363
  }
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,7 +1,7 @@
1
1
  // luma.gl, MIT license
2
- import type {CompilerMessage} from '@luma.gl/shadertools';
2
+ // Copyright (c) vis.gl contributors
3
3
 
4
- const MESSAGE_TYPES = ['warning', 'error', 'info'];
4
+ import type {CompilerMessage} from '@luma.gl/core';
5
5
 
6
6
  /**
7
7
  * Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.
@@ -16,10 +16,23 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
16
16
 
17
17
  for (const line of lines) {
18
18
  if (line.length <= 1) {
19
- continue;
19
+ continue; // eslint-disable-line no-continue
20
20
  }
21
21
 
22
22
  const segments: string[] = line.split(':');
23
+
24
+ // Check for messages with no line information `ERROR: unsupported shader version`
25
+ if (segments.length === 2) {
26
+ const [messageType, message] = segments;
27
+ messages.push({
28
+ message: message.trim(),
29
+ type: getMessageType(messageType),
30
+ lineNum: 0,
31
+ linePos: 0
32
+ });
33
+ continue; // eslint-disable-line no-continue
34
+ }
35
+
23
36
  const [messageType, linePosition, lineNumber, ...rest] = segments;
24
37
 
25
38
  let lineNum = parseInt(lineNumber, 10);
@@ -32,13 +45,9 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
32
45
  linePos = 0;
33
46
  }
34
47
 
35
- // Ensure supported type
36
- const lowerCaseType = messageType.toLowerCase();
37
- const type = (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
38
-
39
48
  messages.push({
40
49
  message: rest.join(':').trim(),
41
- type,
50
+ type: getMessageType(messageType),
42
51
  lineNum,
43
52
  linePos // TODO
44
53
  })
@@ -46,3 +55,10 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
46
55
 
47
56
  return messages;
48
57
  }
58
+
59
+ /** Ensure supported type */
60
+ function getMessageType(messageType: string): 'warning' | 'error' | 'info' {
61
+ const MESSAGE_TYPES = ['warning', 'error', 'info'];
62
+ const lowerCaseType = messageType.toLowerCase();
63
+ return (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';
64
+ }
@@ -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);
@@ -0,0 +1,103 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {GL, GLPrimitiveTopology, GLPrimitive} from '@luma.gl/constants';
5
+ import {PrimitiveTopology} from '@luma.gl/core';
6
+
7
+ // Counts the number of complete primitives given a number of vertices and a drawMode
8
+ export function getPrimitiveDrawMode(drawMode: GLPrimitiveTopology): GLPrimitive {
9
+ switch (drawMode) {
10
+ case GL.POINTS:
11
+ return GL.POINTS;
12
+ case GL.LINES:
13
+ return GL.LINES;
14
+ case GL.LINE_STRIP:
15
+ return GL.LINES;
16
+ case GL.LINE_LOOP:
17
+ return GL.LINES;
18
+ case GL.TRIANGLES:
19
+ return GL.TRIANGLES;
20
+ case GL.TRIANGLE_STRIP:
21
+ return GL.TRIANGLES;
22
+ case GL.TRIANGLE_FAN:
23
+ return GL.TRIANGLES;
24
+ default:
25
+ throw new Error('drawMode');
26
+ }
27
+ }
28
+
29
+ // Counts the number of complete "primitives" given a number of vertices and a drawMode
30
+ export function getPrimitiveCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
31
+ const {drawMode, vertexCount} = options;
32
+ switch (drawMode) {
33
+ case GL.POINTS:
34
+ case GL.LINE_LOOP:
35
+ return vertexCount;
36
+ case GL.LINES:
37
+ return vertexCount / 2;
38
+ case GL.LINE_STRIP:
39
+ return vertexCount - 1;
40
+ case GL.TRIANGLES:
41
+ return vertexCount / 3;
42
+ case GL.TRIANGLE_STRIP:
43
+ case GL.TRIANGLE_FAN:
44
+ return vertexCount - 2;
45
+ default:
46
+ throw new Error('drawMode');
47
+ }
48
+ }
49
+
50
+ // Counts the number of vertices after splitting the vertex stream into separate "primitives"
51
+ export function getVertexCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
52
+ const {drawMode, vertexCount} = options;
53
+ const primitiveCount = getPrimitiveCount({drawMode, vertexCount});
54
+ switch (getPrimitiveDrawMode(drawMode)) {
55
+ case GL.POINTS:
56
+ return primitiveCount;
57
+ case GL.LINES:
58
+ return primitiveCount * 2;
59
+ case GL.TRIANGLES:
60
+ return primitiveCount * 3;
61
+ default:
62
+ throw new Error('drawMode');
63
+ }
64
+ }
65
+
66
+ /** Get the primitive type for draw */
67
+ export function getGLDrawMode(
68
+ topology: PrimitiveTopology
69
+ ):
70
+ | GL.POINTS
71
+ | GL.LINES
72
+ | GL.LINE_STRIP
73
+ | GL.LINE_LOOP
74
+ | GL.TRIANGLES
75
+ | GL.TRIANGLE_STRIP
76
+ | GL.TRIANGLE_FAN {
77
+ // prettier-ignore
78
+ switch (topology) {
79
+ case 'point-list': return GL.POINTS;
80
+ case 'line-list': return GL.LINES;
81
+ case 'line-strip': return GL.LINE_STRIP;
82
+ case 'line-loop-webgl': return GL.LINE_LOOP;
83
+ case 'triangle-list': return GL.TRIANGLES;
84
+ case 'triangle-strip': return GL.TRIANGLE_STRIP;
85
+ case 'triangle-fan-webgl': return GL.TRIANGLE_FAN;
86
+ default: throw new Error(topology);
87
+ }
88
+ }
89
+
90
+ /** Get the primitive type for transform feedback */
91
+ export function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
92
+ // prettier-ignore
93
+ switch (topology) {
94
+ case 'point-list': return GL.POINTS;
95
+ case 'line-list': return GL.LINES;
96
+ case 'line-strip': return GL.LINES;
97
+ case 'line-loop-webgl': return GL.LINES;
98
+ case 'triangle-list': return GL.TRIANGLES;
99
+ case 'triangle-strip': return GL.TRIANGLES;
100
+ case 'triangle-fan-webgl': return GL.TRIANGLES;
101
+ default: throw new Error(topology);
102
+ }
103
+ }
@@ -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
- }