@luma.gl/webgl 9.0.0-alpha.3 → 9.0.0-alpha.31

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 (512) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +14 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +28 -46
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +48 -16
  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 +13 -20
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  36. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  38. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  39. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  40. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  42. package/dist/adapter/helpers/get-shader-info.js +25 -0
  43. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  44. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  45. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  46. package/dist/adapter/helpers/get-shader-layout.js +58 -113
  47. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  48. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  52. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  53. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  54. package/dist/adapter/helpers/set-uniform.js +3 -33
  55. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  56. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  58. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  59. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  60. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  61. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  62. package/dist/adapter/objects/constants-to-keys.js +1 -28
  63. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  64. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  66. package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
  67. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  68. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  69. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  70. package/dist/adapter/objects/webgl-resource.js +19 -75
  71. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  72. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +39 -11
  73. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  74. package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
  75. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  76. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  77. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-buffer.js +43 -71
  79. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  80. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  81. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-command-buffer.js +169 -41
  83. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  84. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  85. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  86. package/dist/adapter/resources/webgl-command-encoder.js +9 -18
  87. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  88. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  89. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  90. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-framebuffer.js +41 -149
  92. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  93. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  94. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-render-pass.js +88 -9
  96. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  97. package/dist/adapter/resources/webgl-render-pipeline.d.ts +52 -14
  98. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-render-pipeline.js +119 -182
  100. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  101. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  102. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-sampler.js +7 -15
  104. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  105. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  106. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  107. package/dist/adapter/resources/webgl-shader.js +9 -22
  108. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  109. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  110. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  111. package/dist/adapter/resources/webgl-texture.js +98 -213
  112. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  113. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  114. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  115. package/dist/adapter/webgl-canvas-context.js +8 -20
  116. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  117. package/dist/adapter/webgl-device.d.ts +64 -41
  118. package/dist/adapter/webgl-device.d.ts.map +1 -1
  119. package/dist/adapter/webgl-device.js +133 -113
  120. package/dist/adapter/webgl-device.js.map +1 -1
  121. package/dist/classic/accessor.d.ts +3 -3
  122. package/dist/classic/accessor.d.ts.map +1 -1
  123. package/dist/classic/accessor.js +14 -38
  124. package/dist/classic/accessor.js.map +1 -1
  125. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
  126. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  127. package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
  128. package/dist/classic/buffer-with-accessor.js.map +1 -0
  129. package/dist/classic/clear.d.ts +22 -0
  130. package/dist/classic/clear.d.ts.map +1 -0
  131. package/dist/classic/clear.js +88 -0
  132. package/dist/classic/clear.js.map +1 -0
  133. package/dist/classic/copy-and-blit.d.ts +62 -0
  134. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  135. package/dist/classic/copy-and-blit.js +202 -0
  136. package/dist/classic/copy-and-blit.js.map +1 -0
  137. package/dist/classic/format-utils.d.ts +3 -0
  138. package/dist/classic/format-utils.d.ts.map +1 -0
  139. package/dist/classic/format-utils.js +38 -0
  140. package/dist/classic/format-utils.js.map +1 -0
  141. package/dist/classic/typed-array-utils.d.ts +15 -17
  142. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  143. package/dist/classic/typed-array-utils.js +1 -21
  144. package/dist/classic/typed-array-utils.js.map +1 -1
  145. package/dist/context/context/create-browser-context.d.ts +40 -0
  146. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  147. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
  148. package/dist/context/context/create-browser-context.js.map +1 -0
  149. package/dist/context/context/create-headless-context.d.ts +9 -0
  150. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  151. package/dist/context/context/create-headless-context.js +42 -0
  152. package/dist/context/context/create-headless-context.js.map +1 -0
  153. package/dist/context/context/webgl-checks.js +1 -4
  154. package/dist/context/context/webgl-checks.js.map +1 -1
  155. package/dist/context/debug/spector.d.ts +1 -2
  156. package/dist/context/debug/spector.d.ts.map +1 -1
  157. package/dist/context/debug/spector.js +8 -20
  158. package/dist/context/debug/spector.js.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  160. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.js +11 -34
  162. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
  164. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.js +8 -18
  166. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  168. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  170. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  171. package/dist/context/polyfill/context-data.d.ts +13 -0
  172. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  173. package/dist/context/polyfill/context-data.js +12 -0
  174. package/dist/context/polyfill/context-data.js.map +1 -0
  175. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  176. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  177. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  178. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  179. package/dist/context/polyfill/polyfill-context.js +21 -29
  180. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  182. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  183. package/dist/context/polyfill/polyfill-table.js +10 -32
  184. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  187. package/dist/context/polyfill/polyfill-vertex-array-object.js.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 +16 -51
  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 +7 -9
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +10245 -0
  198. package/dist/index.cjs +6550 -0
  199. package/dist/index.d.ts +25 -22
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  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 +37 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +88 -35
  209. package/src/adapter/converters/sampler-parameters.ts +19 -9
  210. package/src/adapter/converters/shader-formats.ts +41 -0
  211. package/src/adapter/converters/texture-formats.ts +264 -194
  212. package/src/adapter/converters/vertex-formats.ts +68 -10
  213. package/src/adapter/device-helpers/device-features.ts +10 -3
  214. package/src/adapter/device-helpers/device-limits.ts +3 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +14 -10
  216. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +36 -21
  217. package/src/adapter/helpers/get-shader-info.ts +40 -0
  218. package/src/adapter/helpers/get-shader-layout.ts +120 -146
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  220. package/src/adapter/helpers/set-uniform.ts +7 -6
  221. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +4 -5
  222. package/src/adapter/objects/constants-to-keys.ts +3 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
  224. package/src/adapter/objects/webgl-resource.ts +14 -23
  225. package/src/adapter/objects/webgl-vertex-array-object.ts +202 -37
  226. package/src/adapter/resources/webgl-buffer.ts +56 -58
  227. package/src/adapter/resources/webgl-command-buffer.ts +332 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +17 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +2 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +88 -133
  231. package/src/adapter/resources/webgl-render-pass.ts +155 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +232 -131
  233. package/src/adapter/resources/webgl-sampler.ts +13 -8
  234. package/src/adapter/resources/webgl-shader.ts +11 -10
  235. package/src/adapter/resources/webgl-texture.ts +113 -85
  236. package/src/adapter/webgl-canvas-context.ts +14 -14
  237. package/src/adapter/webgl-device.ts +192 -77
  238. package/src/classic/accessor.ts +4 -17
  239. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
  240. package/src/classic/clear.ts +110 -0
  241. package/src/classic/copy-and-blit.ts +308 -0
  242. package/src/classic/format-utils.ts +43 -0
  243. package/src/classic/typed-array-utils.ts +18 -27
  244. package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
  245. package/src/context/context/create-headless-context.ts +48 -0
  246. package/src/context/context/webgl-checks.ts +1 -1
  247. package/src/context/debug/spector.ts +7 -6
  248. package/src/context/debug/webgl-developer-tools.ts +21 -15
  249. package/src/context/parameters/unified-parameter-api.ts +20 -14
  250. package/src/context/parameters/webgl-parameter-tables.ts +117 -98
  251. package/src/context/polyfill/context-data.ts +27 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
  253. package/src/context/polyfill/polyfill-context.ts +7 -9
  254. package/src/context/polyfill/polyfill-table.ts +18 -16
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  256. package/src/context/state-tracker/track-context-state.ts +14 -13
  257. package/src/context/state-tracker/with-parameters.ts +8 -2
  258. package/src/index.ts +42 -33
  259. package/src/types.ts +2 -0
  260. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  262. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  263. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  264. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  265. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  267. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  268. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  269. package/dist/adapter/helpers/uniforms.js.map +0 -1
  270. package/dist/bundle.d.ts +0 -2
  271. package/dist/bundle.d.ts.map +0 -1
  272. package/dist/bundle.js +0 -5
  273. package/dist/bundle.js.map +0 -1
  274. package/dist/classic/buffer.d.ts.map +0 -1
  275. package/dist/classic/buffer.js.map +0 -1
  276. package/dist/context/context/context-state.d.ts +0 -18
  277. package/dist/context/context/context-state.d.ts.map +0 -1
  278. package/dist/context/context/context-state.js +0 -26
  279. package/dist/context/context/context-state.js.map +0 -1
  280. package/dist/context/context/create-context.d.ts +0 -41
  281. package/dist/context/context/create-context.d.ts.map +0 -1
  282. package/dist/context/context/create-context.js +0 -49
  283. package/dist/context/context/create-context.js.map +0 -1
  284. package/dist/context/context/device-pixels.d.ts +0 -25
  285. package/dist/context/context/device-pixels.d.ts.map +0 -1
  286. package/dist/context/context/device-pixels.js +0 -98
  287. package/dist/context/context/device-pixels.js.map +0 -1
  288. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  289. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  290. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  291. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  292. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  293. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  294. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  295. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  296. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  297. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  298. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  299. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  300. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  301. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  302. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  303. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  304. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  305. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  306. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  307. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  308. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  309. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  310. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  311. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  312. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  313. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  314. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  315. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  316. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  317. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  318. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  319. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  320. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  321. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  322. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  323. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  324. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  325. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  326. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  327. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  328. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  329. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  330. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  331. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  332. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  333. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  335. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  337. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  339. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  341. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  343. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  344. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  345. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  346. package/dist/es5/adapter/webgl-device.js +0 -399
  347. package/dist/es5/adapter/webgl-device.js.map +0 -1
  348. package/dist/es5/bundle.js +0 -7
  349. package/dist/es5/bundle.js.map +0 -1
  350. package/dist/es5/classic/accessor.js +0 -181
  351. package/dist/es5/classic/accessor.js.map +0 -1
  352. package/dist/es5/classic/buffer.js +0 -470
  353. package/dist/es5/classic/buffer.js.map +0 -1
  354. package/dist/es5/classic/typed-array-utils.js +0 -126
  355. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  356. package/dist/es5/context/context/context-state.js +0 -31
  357. package/dist/es5/context/context/context-state.js.map +0 -1
  358. package/dist/es5/context/context/create-context.js +0 -69
  359. package/dist/es5/context/context/create-context.js.map +0 -1
  360. package/dist/es5/context/context/device-pixels.js +0 -115
  361. package/dist/es5/context/context/device-pixels.js.map +0 -1
  362. package/dist/es5/context/context/webgl-checks.js +0 -54
  363. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  364. package/dist/es5/context/debug/spector.js +0 -133
  365. package/dist/es5/context/debug/spector.js.map +0 -1
  366. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  367. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  368. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  369. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  370. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  371. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  372. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  373. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  374. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  375. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  376. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  377. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  378. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  379. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  380. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  381. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  382. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  383. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  384. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  385. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  386. package/dist/es5/index.js +0 -276
  387. package/dist/es5/index.js.map +0 -1
  388. package/dist/es5/init.js +0 -10
  389. package/dist/es5/init.js.map +0 -1
  390. package/dist/es5/types/webgl.js +0 -6
  391. package/dist/es5/types/webgl.js.map +0 -1
  392. package/dist/es5/types.js +0 -2
  393. package/dist/es5/types.js.map +0 -1
  394. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  395. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  396. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  397. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  398. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  399. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  400. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  401. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  402. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  403. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  404. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  405. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  406. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  407. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  408. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  409. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  410. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  411. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  412. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  413. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  414. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  415. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  416. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  417. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  418. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  419. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  420. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  421. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  422. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  423. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  424. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  425. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  426. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  427. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  428. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  429. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  430. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  431. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  432. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  433. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  434. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  435. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  436. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  437. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  438. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  439. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  441. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  443. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  445. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  447. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  449. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  450. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  451. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  452. package/dist/esm/adapter/webgl-device.js +0 -280
  453. package/dist/esm/adapter/webgl-device.js.map +0 -1
  454. package/dist/esm/bundle.js +0 -5
  455. package/dist/esm/bundle.js.map +0 -1
  456. package/dist/esm/classic/accessor.js +0 -144
  457. package/dist/esm/classic/accessor.js.map +0 -1
  458. package/dist/esm/classic/buffer.js +0 -384
  459. package/dist/esm/classic/buffer.js.map +0 -1
  460. package/dist/esm/classic/typed-array-utils.js +0 -112
  461. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  462. package/dist/esm/context/context/context-state.js +0 -26
  463. package/dist/esm/context/context/context-state.js.map +0 -1
  464. package/dist/esm/context/context/create-context.js.map +0 -1
  465. package/dist/esm/context/context/device-pixels.js +0 -98
  466. package/dist/esm/context/context/device-pixels.js.map +0 -1
  467. package/dist/esm/context/context/webgl-checks.js +0 -34
  468. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  469. package/dist/esm/context/debug/spector.js +0 -76
  470. package/dist/esm/context/debug/spector.js.map +0 -1
  471. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  472. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  473. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  474. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  475. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  476. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  477. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  478. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  479. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  480. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  481. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  482. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  483. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  484. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  485. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  486. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  487. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  488. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  489. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  490. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  491. package/dist/esm/index.js +0 -27
  492. package/dist/esm/index.js.map +0 -1
  493. package/dist/esm/init.js +0 -4
  494. package/dist/esm/init.js.map +0 -1
  495. package/dist/esm/types/webgl.js +0 -2
  496. package/dist/esm/types/webgl.js.map +0 -1
  497. package/dist/esm/types.js +0 -2
  498. package/dist/esm/types.js.map +0 -1
  499. package/dist/init.d.ts +0 -2
  500. package/dist/init.d.ts.map +0 -1
  501. package/dist/init.js +0 -4
  502. package/dist/init.js.map +0 -1
  503. package/dist/types/webgl.d.ts +0 -144
  504. package/dist/types/webgl.d.ts.map +0 -1
  505. package/dist/types/webgl.js +0 -2
  506. package/dist/types/webgl.js.map +0 -1
  507. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  508. package/src/bundle.ts +0 -4
  509. package/src/context/context/context-state.ts +0 -41
  510. package/src/context/context/device-pixels.ts +0 -152
  511. package/src/init.ts +0 -4
  512. package/src/types/webgl.ts +0 -283
@@ -1,22 +1,80 @@
1
- import GL from '@luma.gl/constants';
2
- import {VertexFormat} from '@luma.gl/api';
1
+ import {GL} from '@luma.gl/constants';
2
+ import {VertexFormat, VertexType} from '@luma.gl/core';
3
3
 
4
- export function getVertexFormat(type: GL, components: number): VertexFormat {
5
- const base = getDataFormat(type);
4
+ type GLDataType =
5
+ | GL.UNSIGNED_BYTE
6
+ | GL.BYTE
7
+ | GL.UNSIGNED_SHORT
8
+ | GL.SHORT
9
+ | GL.UNSIGNED_INT
10
+ | GL.INT
11
+ | GL.HALF_FLOAT
12
+ | GL.FLOAT;
13
+
14
+
15
+ /** Get vertex format from GL constants */
16
+ export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 | 4): VertexFormat {
17
+ const base = getVertexTypeFromGL(type);
18
+ // prettier-ignore
6
19
  switch (components) {
20
+ // @ts-expect-error TODO deal with lack of formats
7
21
  case 1: return base;
8
22
  case 2: return `${base}x2`;
23
+ // @ts-expect-error TODO deal with lack of formats
9
24
  case 3: return `${base}x3`;
10
25
  case 4: return `${base}x4`;
11
26
  }
27
+ // @ts-ignore unreachable
28
+ throw new Error(String(components));
12
29
  }
13
30
 
14
- function getDataFormat(type: GL): 'sint32' | 'uint32' | 'float32' {
31
+ /** Get data type from GL constants */
32
+ export function getVertexTypeFromGL(type: GLDataType, normalized = false): VertexType {
33
+ // prettier-ignore
15
34
  switch (type) {
16
- // TODO
17
- case GL.INT: return 'sint32';
18
- case GL.UNSIGNED_INT: return 'uint32';
35
+ // WebGPU does not support normalized 32 bit integer attributes
36
+ case GL.INT: return normalized ? 'sint32' : 'sint32';
37
+ case GL.UNSIGNED_INT: return normalized ? 'uint32' : 'uint32';
38
+ case GL.SHORT: return normalized ? 'sint16' : 'unorm16';
39
+ case GL.UNSIGNED_SHORT: return normalized ? 'uint16' : 'unorm16';
40
+ case GL.BYTE: return normalized ? 'sint8' : 'snorm16';
41
+ case GL.UNSIGNED_BYTE: return normalized ? 'uint8' : 'unorm8';
19
42
  case GL.FLOAT: return 'float32';
20
- default: throw new Error(String(type));
43
+ case GL.HALF_FLOAT: return 'float16';
44
+ }
45
+ // @ts-ignore unreachable
46
+ throw new Error(String(type));
47
+ }
48
+
49
+ export function getGLFromVertexType(
50
+ dataType: VertexType
51
+ ):
52
+ | GL.UNSIGNED_BYTE
53
+ | GL.BYTE
54
+ | GL.UNSIGNED_SHORT
55
+ | GL.SHORT
56
+ | GL.UNSIGNED_INT
57
+ | GL.INT
58
+ | GL.HALF_FLOAT
59
+ | GL.FLOAT {
60
+ // prettier-ignore
61
+ switch (dataType) {
62
+ case 'uint8': return GL.UNSIGNED_BYTE;
63
+ case 'sint8': return GL.BYTE;
64
+ case 'unorm8': return GL.UNSIGNED_BYTE;
65
+ case 'snorm8': return GL.BYTE;
66
+ case 'uint16': return GL.UNSIGNED_SHORT;
67
+ case 'sint16': return GL.SHORT;
68
+ case 'unorm16': return GL.UNSIGNED_SHORT;
69
+ case 'snorm16': return GL.SHORT;
70
+ case 'uint32': return GL.UNSIGNED_INT;
71
+ case 'sint32': return GL.INT;
72
+ // WebGPU does not support normalized 32 bit integer attributes
73
+ // case 'unorm32': return GL.UNSIGNED_INT;
74
+ // case 'snorm32': return GL.INT;
75
+ case 'float16': return GL.HALF_FLOAT;
76
+ case 'float32': return GL.FLOAT;
21
77
  }
22
- }
78
+ // @ts-ignore unreachable
79
+ throw new Error(String(dataType));
80
+ }
@@ -2,8 +2,7 @@
2
2
  // Provides a function that enables simple checking of which WebGL features are
3
3
  // available in an WebGL1 or WebGL2 environment.
4
4
 
5
- import {DeviceFeature} from '@luma.gl/api';
6
- import GL from '@luma.gl/constants';
5
+ import {DeviceFeature} from '@luma.gl/core';
7
6
  import {isWebGL2} from '../../context/context/webgl-checks';
8
7
  import {isOldIE} from './is-old-ie';
9
8
  import {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';
@@ -47,7 +46,12 @@ export function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature>
47
46
  }
48
47
 
49
48
  function isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {
50
- const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;
49
+ const featureInfo = WEBGL_FEATURES[feature];
50
+ if (!featureInfo) {
51
+ return false;
52
+ }
53
+
54
+ const [webgl1Feature, webgl2Feature] = featureInfo || [];
51
55
 
52
56
  // Get extension name from table
53
57
  const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
@@ -100,6 +104,9 @@ export function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName
100
104
  const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
101
105
 
102
106
  const shader = gl.createShader(gl.VERTEX_SHADER);
107
+ if (!shader) {
108
+ throw new Error('shader');
109
+ }
103
110
  gl.shaderSource(shader, source);
104
111
  gl.compileShader(shader);
105
112
  const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
@@ -1,11 +1,11 @@
1
1
  // luma.gl, MIT license
2
- import type {DeviceLimits} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
2
+ import type {DeviceLimits} from '@luma.gl/core';
3
+ import {GL} from '@luma.gl/constants';
4
4
  import {getWebGL2Context} from '../../context/context/webgl-checks';
5
5
 
6
6
  /** Populate a WebGPU style device limits */
7
7
  export function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {
8
- const gl2: WebGL2RenderingContext = getWebGL2Context(gl);
8
+ const gl2: WebGL2RenderingContext | null = getWebGL2Context(gl);
9
9
  return {
10
10
  maxTextureDimension1D: 0, // WebGL does not support 1D textures
11
11
  maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
@@ -1,5 +1,5 @@
1
- import {DeviceInfo} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ import {DeviceInfo} from '@luma.gl/core';
2
+ import {GL} from '@luma.gl/constants';
3
3
  import {isWebGL2} from '../../context/context/webgl-checks';
4
4
 
5
5
  /** @returns strings identifying the GPU vendor and driver. */
@@ -27,23 +27,27 @@ export function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo {
27
27
  };
28
28
  }
29
29
 
30
- function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'unknown' {
31
- if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
30
+ function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'software' | 'unknown' {
31
+ if ((/NVIDIA/i.exec(vendor)) || (/NVIDIA/i.exec(renderer))) {
32
32
  return 'nvidia';
33
33
  }
34
- if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
34
+ if ((/INTEL/i.exec(vendor)) || (/INTEL/i.exec(renderer))) {
35
35
  return 'intel';
36
36
  }
37
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
37
+ if ((/Apple/i.exec(vendor)) || (/Apple/i.exec(renderer))) {
38
38
  return 'apple';
39
39
  }
40
40
  if (
41
- vendor.match(/AMD/i) ||
42
- renderer.match(/AMD/i) ||
43
- vendor.match(/ATI/i) ||
44
- renderer.match(/ATI/i)
41
+ (/AMD/i.exec(vendor)) ||
42
+ (/AMD/i.exec(renderer)) ||
43
+ (/ATI/i.exec(vendor)) ||
44
+ (/ATI/i.exec(renderer))
45
45
  ) {
46
46
  return 'amd';
47
47
  }
48
+ if ((/SwiftShader/i.exec(vendor)) || (/SwiftShader/i.exec(renderer))) {
49
+ return 'software';
50
+ }
51
+
48
52
  return 'unknown';
49
53
  }
@@ -1,6 +1,5 @@
1
- import {UniformFormat, VertexFormat} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
3
- import {GLUniformType, GLSamplerType, GLCompositeType, GLType} from '../../types/webgl'
1
+ import {ShaderUniformType, ShaderAttributeType, VertexFormat} from '@luma.gl/core';
2
+ import {GL, GLUniformType, GLSamplerType, GLCompositeType, GLDataType} from '@luma.gl/constants';
4
3
 
5
4
  /** Check is uniform is of sampler type */
6
5
  export function isSamplerUniform(type: GLUniformType): boolean {
@@ -25,8 +24,11 @@ const SAMPLER_TYPES: GLSamplerType[] = [
25
24
  GL.UNSIGNED_INT_SAMPLER_2D_ARRAY
26
25
  ];
27
26
 
28
- // Composite types table
29
- const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, UniformFormat, VertexFormat?]> = {
27
+ // Composite types table
28
+ const COMPOSITE_GL_TYPES: Record<
29
+ GLCompositeType,
30
+ [GLDataType, number, string, ShaderUniformType, VertexFormat?]
31
+ > = {
30
32
  [GL.FLOAT]: [GL.FLOAT, 1, 'float', 'f32', 'float32'],
31
33
  [GL.FLOAT_VEC2]: [GL.FLOAT, 2, 'vec2', 'vec2<f32>', 'float32x2'],
32
34
  [GL.FLOAT_VEC3]: [GL.FLOAT, 3, 'vec3', 'vec3<f32>', 'float32x3'],
@@ -42,11 +44,12 @@ const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, Unifo
42
44
  [GL.UNSIGNED_INT_VEC3]: [GL.UNSIGNED_INT, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
43
45
  [GL.UNSIGNED_INT_VEC4]: [GL.UNSIGNED_INT, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
44
46
 
45
- [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32x2'],
46
- [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>'],
47
- [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>'],
48
- [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>'],
47
+ [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32'],
48
+ [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
49
+ [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
50
+ [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
49
51
 
52
+ // TODO - are sizes/components below correct?
50
53
  [GL.FLOAT_MAT2]: [GL.FLOAT, 8, 'mat2', 'mat2x2<f32>'], // 4
51
54
  [GL.FLOAT_MAT2x3]: [GL.FLOAT, 8, 'mat2x3', 'mat2x3<f32>'], // 6
52
55
  [GL.FLOAT_MAT2x4]: [GL.FLOAT, 8, 'mat2x4', 'mat2x4<f32>'], // 8
@@ -60,28 +63,40 @@ const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, Unifo
60
63
  [GL.FLOAT_MAT4]: [GL.FLOAT, 16, 'mat4', 'mat4x4<f32>'] // 16
61
64
  };
62
65
 
63
- /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
64
- export function decodeUniformType(uniformType: GL): {format: UniformFormat, components: number, glType: GLType} {
65
- const typeAndSize = COMPOSITE_GL_TYPES[uniformType];
66
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
67
+ export function decodeGLUniformType(
68
+ glUniformType: GL
69
+ ): {format: ShaderUniformType; components: number; glType: GLDataType} {
70
+ const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
66
71
  if (!typeAndSize) {
67
- return null;
72
+ throw new Error('uniform');
68
73
  }
69
74
  const [glType, components, , format] = typeAndSize;
70
75
  return {format, components, glType};
71
76
  }
72
77
 
73
- export function decodeAttributeType(uniformType: GL): {format: VertexFormat, components: number, glType: GLType} {
74
- const typeAndSize = COMPOSITE_GL_TYPES[uniformType];
78
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
79
+ export function decodeGLAttributeType(glAttributeType: GL): {
80
+ attributeType: ShaderAttributeType;
81
+ vertexFormat: VertexFormat;
82
+ components: number;
83
+ // glType: GLDataType;
84
+ } {
85
+ const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];
75
86
  if (!typeAndSize) {
76
- return null;
87
+ throw new Error('attribute')
77
88
  }
78
- const [glType, components, , , format] = typeAndSize;
79
- return {format, components, glType};
89
+ const [, components, , shaderType, vertexFormat] = typeAndSize;
90
+ // TODO sanity - if (shaderType.startsWith('mat' ...))
91
+ const attributeType = shaderType as unknown as ShaderAttributeType
92
+ return {attributeType, vertexFormat, components}; // , glType};
80
93
  }
81
94
 
82
95
  /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
83
- export function decomposeCompositeGLType(compositeGLType: GLCompositeType): {type: GLType, components: number} | null {
84
- const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];
96
+ export function decomposeCompositeGLDataType(
97
+ compositeGLDataType: GLCompositeType
98
+ ): {type: GLDataType; components: number} | null {
99
+ const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
85
100
  if (!typeAndSize) {
86
101
  return null;
87
102
  }
@@ -89,7 +104,7 @@ export function decomposeCompositeGLType(compositeGLType: GLCompositeType): {typ
89
104
  return {type, components};
90
105
  }
91
106
 
92
- export function getCompositeGLType(type: GL, components): {glType: GLType, name: string} | null {
107
+ export function getCompositeGLDataType(type: GL, components): {glType: GLDataType; name: string} | null {
93
108
  switch (type) {
94
109
  case GL.BYTE:
95
110
  case GL.UNSIGNED_BYTE:
@@ -0,0 +1,40 @@
1
+ // luma.gl, MIT license
2
+
3
+ // Note: This was the only dependency that made @luma.gl/webgl depend on @luma.gl/shadertools
4
+ // This file was coped from shadertools to avoid the dependency
5
+
6
+ /** Information extracted from shader source code */
7
+ export type ShaderInfo = {
8
+ name: string;
9
+ language: 'glsl' | 'wgsl';
10
+ version: number;
11
+ };
12
+
13
+ /** Extracts information from shader source code */
14
+ export function getShaderInfo(source: string, defaultName?: string): ShaderInfo {
15
+ return {
16
+ name: getShaderName(source, defaultName),
17
+ language: 'glsl',
18
+ version: getShaderVersion(source)
19
+ };
20
+ }
21
+
22
+ /** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */
23
+ function getShaderName(shader: string, defaultName: string = 'unnamed'): string {
24
+ const SHADER_NAME_REGEXP = /#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/;
25
+ const match = SHADER_NAME_REGEXP.exec(shader);
26
+ return match ? match[1] : defaultName;
27
+ }
28
+
29
+ /** returns GLSL shader version of given shader string */
30
+ function getShaderVersion(source: string): number {
31
+ let version = 100;
32
+ const words = source.match(/[^\s]+/g);
33
+ if (words && words.length >= 2 && words[0] === '#version') {
34
+ const v = parseInt(words[1], 10);
35
+ if (Number.isFinite(v)) {
36
+ version = v;
37
+ }
38
+ }
39
+ return version;
40
+ }