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

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 +92 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +205 -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 +9344 -0
  198. package/dist/index.cjs +6556 -0
  199. package/dist/index.d.ts +23 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -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 +327 -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 +65 -39
  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 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/helpers/attribute-utils.ts"],"names":["GL","getPrimitiveDrawMode","drawMode","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Error","getPrimitiveCount","options","vertexCount","getVertexCount","primitiveCount"],"mappings":"AAAA,OAAOA,EAAP,MAAe,oBAAf;AAIA,OAAO,SAASC,oBAAT,CAA8BC,QAA9B,EAAiE;AACtE,UAAQA,QAAR;AACE,SAAKF,EAAE,CAACG,MAAR;AACE,aAAOH,EAAE,CAACG,MAAV;;AACF,SAAKH,EAAE,CAACI,KAAR;AACE,aAAOJ,EAAE,CAACI,KAAV;;AACF,SAAKJ,EAAE,CAACK,UAAR;AACE,aAAOL,EAAE,CAACI,KAAV;;AACF,SAAKJ,EAAE,CAACM,SAAR;AACE,aAAON,EAAE,CAACI,KAAV;;AACF,SAAKJ,EAAE,CAACO,SAAR;AACE,aAAOP,EAAE,CAACO,SAAV;;AACF,SAAKP,EAAE,CAACQ,cAAR;AACE,aAAOR,EAAE,CAACO,SAAV;;AACF,SAAKP,EAAE,CAACS,YAAR;AACE,aAAOT,EAAE,CAACO,SAAV;;AACF;AACE,YAAM,IAAIG,KAAJ,CAAU,UAAV,CAAN;AAhBJ;AAkBD;AAGD,OAAO,SAASC,iBAAT,CAA2BC,OAA3B,EAAyF;AAC9F,QAAM;AAACV,IAAAA,QAAD;AAAWW,IAAAA;AAAX,MAA0BD,OAAhC;;AACA,UAAQV,QAAR;AACE,SAAKF,EAAE,CAACG,MAAR;AACA,SAAKH,EAAE,CAACM,SAAR;AACE,aAAOO,WAAP;;AACF,SAAKb,EAAE,CAACI,KAAR;AACE,aAAOS,WAAW,GAAG,CAArB;;AACF,SAAKb,EAAE,CAACK,UAAR;AACE,aAAOQ,WAAW,GAAG,CAArB;;AACF,SAAKb,EAAE,CAACO,SAAR;AACE,aAAOM,WAAW,GAAG,CAArB;;AACF,SAAKb,EAAE,CAACQ,cAAR;AACA,SAAKR,EAAE,CAACS,YAAR;AACE,aAAOI,WAAW,GAAG,CAArB;;AACF;AACE,YAAM,IAAIH,KAAJ,CAAU,UAAV,CAAN;AAdJ;AAgBD;AAGD,OAAO,SAASI,cAAT,CAAwBF,OAAxB,EAAsF;AAC3F,QAAM;AAACV,IAAAA,QAAD;AAAWW,IAAAA;AAAX,MAA0BD,OAAhC;AACA,QAAMG,cAAc,GAAGJ,iBAAiB,CAAC;AAACT,IAAAA,QAAD;AAAWW,IAAAA;AAAX,GAAD,CAAxC;;AACA,UAAQZ,oBAAoB,CAACC,QAAD,CAA5B;AACE,SAAKF,EAAE,CAACG,MAAR;AACE,aAAOY,cAAP;;AACF,SAAKf,EAAE,CAACI,KAAR;AACE,aAAOW,cAAc,GAAG,CAAxB;;AACF,SAAKf,EAAE,CAACO,SAAR;AACE,aAAOQ,cAAc,GAAG,CAAxB;;AACF;AACE,YAAM,IAAIL,KAAJ,CAAU,UAAV,CAAN;AARJ;AAUD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {GLDrawMode, GLPrimitive} from '../../types/webgl';\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {\n switch (drawMode) {\n case GL.POINTS:\n return GL.POINTS;\n case GL.LINES:\n return GL.LINES;\n case GL.LINE_STRIP:\n return GL.LINES;\n case GL.LINE_LOOP:\n return GL.LINES;\n case GL.TRIANGLES:\n return GL.TRIANGLES;\n case GL.TRIANGLE_STRIP:\n return GL.TRIANGLES;\n case GL.TRIANGLE_FAN:\n return GL.TRIANGLES;\n default:\n throw new Error('drawMode');\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {\n const {drawMode, vertexCount} = options;\n switch (drawMode) {\n case GL.POINTS:\n case GL.LINE_LOOP:\n return vertexCount;\n case GL.LINES:\n return vertexCount / 2;\n case GL.LINE_STRIP:\n return vertexCount - 1;\n case GL.TRIANGLES:\n return vertexCount / 3;\n case GL.TRIANGLE_STRIP:\n case GL.TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n throw new Error('drawMode');\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {\n const {drawMode, vertexCount} = options;\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL.POINTS:\n return primitiveCount;\n case GL.LINES:\n return primitiveCount * 2;\n case GL.TRIANGLES:\n return primitiveCount * 3;\n default:\n throw new Error('drawMode');\n }\n}\n"],"file":"attribute-utils.js"}
@@ -1,330 +0,0 @@
1
- import GL from '@luma.gl/constants';
2
- import { isWebGL2 } from '../../context/context/webgl-checks';
3
- import Accessor from '../../classic/accessor';
4
- import { decodeUniformType, decodeAttributeType } from './uniforms';
5
- import { getVertexFormat } from '../converters/vertex-formats';
6
- import { isSamplerUniform } from './uniforms';
7
- export function getShaderLayout(gl, program) {
8
- var _programBindings$unif, _programBindings$vary;
9
-
10
- const programBindings = getProgramBindings(gl, program);
11
- const shaderLayout = {
12
- attributes: [],
13
- bindings: []
14
- };
15
-
16
- for (const attribute of programBindings.attributes) {
17
- const format = getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
18
- shaderLayout.attributes.push({
19
- name: attribute.name,
20
- location: attribute.location,
21
- format,
22
- stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
23
- });
24
- }
25
-
26
- for (const uniformBlock of programBindings.uniformBlocks) {
27
- const uniforms = uniformBlock.uniforms.map(uniform => ({
28
- name: uniform.name,
29
- format: uniform.format,
30
- byteOffset: uniform.byteOffset,
31
- byteStride: uniform.byteStride,
32
- arrayLength: uniform.arrayLength
33
- }));
34
- shaderLayout.bindings.push({
35
- type: 'uniform',
36
- name: uniformBlock.name,
37
- location: uniformBlock.location,
38
- visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),
39
- minBindingSize: uniformBlock.byteLength,
40
- uniforms
41
- });
42
- }
43
-
44
- let textureUnit = 0;
45
-
46
- for (const uniform of programBindings.uniforms) {
47
- if (isSamplerUniform(uniform.type)) {
48
- const {
49
- viewDimension,
50
- sampleType
51
- } = getSamplerInfo(uniform.type);
52
- shaderLayout.bindings.push({
53
- type: 'texture',
54
- name: uniform.name,
55
- location: textureUnit,
56
- viewDimension,
57
- sampleType
58
- });
59
- uniform.textureUnit = textureUnit;
60
- textureUnit += 1;
61
- }
62
- }
63
-
64
- const uniforms = ((_programBindings$unif = programBindings.uniforms) === null || _programBindings$unif === void 0 ? void 0 : _programBindings$unif.filter(uniform => uniform.location !== null)) || [];
65
-
66
- if (uniforms.length) {
67
- shaderLayout.uniforms = uniforms;
68
- }
69
-
70
- if ((_programBindings$vary = programBindings.varyings) !== null && _programBindings$vary !== void 0 && _programBindings$vary.length) {
71
- shaderLayout.varyings = programBindings.varyings;
72
- }
73
-
74
- return shaderLayout;
75
- }
76
- export function getProgramBindings(gl, program) {
77
- const config = {
78
- attributes: readAttributeBindings(gl, program),
79
- uniforms: readUniformBindings(gl, program),
80
- uniformBlocks: readUniformBlocks(gl, program),
81
- varyings: readVaryings(gl, program)
82
- };
83
- Object.seal(config);
84
- return config;
85
- }
86
-
87
- function readAttributeBindings(gl, program) {
88
- const attributes = [];
89
- const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
90
-
91
- for (let index = 0; index < count; index++) {
92
- const activeInfo = gl.getActiveAttrib(program, index);
93
-
94
- if (!activeInfo) {
95
- throw new Error('activeInfo');
96
- }
97
-
98
- const {
99
- name,
100
- type: compositeType,
101
- size
102
- } = activeInfo;
103
- const location = gl.getAttribLocation(program, name);
104
-
105
- if (location >= 0) {
106
- const {
107
- glType,
108
- components
109
- } = decodeAttributeType(compositeType);
110
- ;
111
- const accessor = {
112
- type: glType,
113
- size: size * components
114
- };
115
-
116
- if (/instance/i.test(name)) {
117
- accessor.divisor = 1;
118
- }
119
-
120
- const attributeInfo = {
121
- location,
122
- name,
123
- accessor: new Accessor(accessor)
124
- };
125
- attributes.push(attributeInfo);
126
- }
127
- }
128
-
129
- attributes.sort((a, b) => a.location - b.location);
130
- return attributes;
131
- }
132
-
133
- function readVaryings(gl, program) {
134
- if (!isWebGL2(gl)) {
135
- return [];
136
- }
137
-
138
- const gl2 = gl;
139
- const varyings = [];
140
- const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
141
-
142
- for (let location = 0; location < count; location++) {
143
- const activeInfo = gl2.getTransformFeedbackVarying(program, location);
144
-
145
- if (!activeInfo) {
146
- throw new Error('activeInfo');
147
- }
148
-
149
- const {
150
- name,
151
- type: compositeType,
152
- size
153
- } = activeInfo;
154
- const {
155
- glType,
156
- components
157
- } = decodeUniformType(compositeType);
158
- ;
159
- const accessor = new Accessor({
160
- type: glType,
161
- size: size * components
162
- });
163
- const varying = {
164
- location,
165
- name,
166
- accessor
167
- };
168
- varyings.push(varying);
169
- }
170
-
171
- varyings.sort((a, b) => a.location - b.location);
172
- return varyings;
173
- }
174
-
175
- function readUniformBindings(gl, program) {
176
- const uniforms = [];
177
- const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
178
-
179
- for (let i = 0; i < uniformCount; i++) {
180
- const activeInfo = gl.getActiveUniform(program, i);
181
-
182
- if (!activeInfo) {
183
- throw new Error('activeInfo');
184
- }
185
-
186
- const {
187
- name: rawName,
188
- size,
189
- type
190
- } = activeInfo;
191
- const {
192
- name,
193
- isArray
194
- } = parseUniformName(rawName);
195
- let webglLocation = gl.getUniformLocation(program, name);
196
- const uniformInfo = {
197
- location: webglLocation,
198
- name,
199
- size,
200
- type,
201
- isArray
202
- };
203
- uniforms.push(uniformInfo);
204
-
205
- if (uniformInfo.size > 1) {
206
- for (let j = 0; j < uniformInfo.size; j++) {
207
- const elementName = "".concat(name, "[").concat(j, "]");
208
- webglLocation = gl.getUniformLocation(program, elementName);
209
- const arrayElementUniformInfo = { ...uniformInfo,
210
- name: elementName,
211
- location: webglLocation
212
- };
213
- uniforms.push(arrayElementUniformInfo);
214
- }
215
- }
216
- }
217
-
218
- return uniforms;
219
- }
220
-
221
- function readUniformBlocks(gl, program) {
222
- if (!isWebGL2(gl)) {
223
- return [];
224
- }
225
-
226
- const gl2 = gl;
227
-
228
- const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
229
-
230
- const uniformBlocks = [];
231
- const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
232
-
233
- for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
234
- const blockInfo = {
235
- name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
236
- location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
237
- byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
238
- vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
239
- fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
240
- uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
241
- uniforms: []
242
- };
243
- const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) || [];
244
- const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE);
245
- const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE);
246
- const uniformBlockIndex = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_BLOCK_INDEX);
247
- const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET);
248
- const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE);
249
- const uniformMatrixStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_MATRIX_STRIDE);
250
- const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
251
-
252
- for (let i = 0; i < blockInfo.uniformCount; ++i) {
253
- const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
254
-
255
- if (!activeInfo) {
256
- throw new Error('activeInfo');
257
- }
258
-
259
- blockInfo.uniforms.push({
260
- name: activeInfo.name,
261
- format: decodeUniformType(uniformType[i]).format,
262
- type: uniformType[i],
263
- arrayLength: uniformArrayLength[i],
264
- byteOffset: uniformOffset[i],
265
- byteStride: uniformStride[i]
266
- });
267
- }
268
-
269
- uniformBlocks.push(blockInfo);
270
- }
271
-
272
- uniformBlocks.sort((a, b) => a.location - b.location);
273
- return uniformBlocks;
274
- }
275
-
276
- const SAMPLER_UNIFORMS_GL_TO_GPU = {
277
- [GL.SAMPLER_2D]: ['2d', 'float'],
278
- [GL.SAMPLER_CUBE]: ['cube', 'float'],
279
- [GL.SAMPLER_3D]: ['3d', 'float'],
280
- [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],
281
- [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],
282
- [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],
283
- [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],
284
- [GL.INT_SAMPLER_2D]: ['2d', 'sint'],
285
- [GL.INT_SAMPLER_3D]: ['3d', 'sint'],
286
- [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],
287
- [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],
288
- [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],
289
- [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],
290
- [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],
291
- [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
292
- };
293
-
294
- function getSamplerInfo(type) {
295
- let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
296
-
297
- if (!sampler) {
298
- throw new Error('sampler');
299
- }
300
-
301
- const [viewDimension, sampleType] = sampler;
302
- return {
303
- viewDimension,
304
- sampleType
305
- };
306
- }
307
-
308
- function parseUniformName(name) {
309
- if (name[name.length - 1] !== ']') {
310
- return {
311
- name,
312
- length: 1,
313
- isArray: false
314
- };
315
- }
316
-
317
- const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
318
- const matches = name.match(UNIFORM_NAME_REGEXP);
319
-
320
- if (!matches || matches.length < 2) {
321
- throw new Error("Failed to parse GLSL uniform name ".concat(name));
322
- }
323
-
324
- return {
325
- name: matches[1],
326
- length: matches[2] ? 1 : 0,
327
- isArray: Boolean(matches[2])
328
- };
329
- }
330
- //# sourceMappingURL=get-shader-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/helpers/get-shader-layout.ts"],"names":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","format","accessor","type","FLOAT","size","push","name","location","stepMode","divisor","uniformBlock","uniformBlocks","uniforms","map","uniform","byteOffset","byteStride","arrayLength","visibility","vertex","fragment","minBindingSize","byteLength","textureUnit","viewDimension","sampleType","getSamplerInfo","filter","length","varyings","config","readAttributeBindings","readUniformBindings","readUniformBlocks","readVaryings","Object","seal","count","getProgramParameter","ACTIVE_ATTRIBUTES","index","activeInfo","getActiveAttrib","Error","compositeType","getAttribLocation","glType","components","test","attributeInfo","sort","a","b","gl2","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","getActiveUniform","rawName","isArray","parseUniformName","webglLocation","getUniformLocation","uniformInfo","j","elementName","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","ACTIVE_UNIFORM_BLOCKS","blockInfo","getActiveUniformBlockName","UNIFORM_BLOCK_BINDING","UNIFORM_BLOCK_DATA_SIZE","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","UNIFORM_BLOCK_ACTIVE_UNIFORMS","uniformIndices","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","uniformType","getActiveUniforms","UNIFORM_TYPE","uniformArrayLength","UNIFORM_SIZE","uniformBlockIndex","UNIFORM_BLOCK_INDEX","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","uniformMatrixStride","UNIFORM_MATRIX_STRIDE","uniformRowMajor","UNIFORM_IS_ROW_MAJOR","SAMPLER_UNIFORMS_GL_TO_GPU","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","sampler","UNIFORM_NAME_REGEXP","matches","match","Boolean"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n\nimport {\n ShaderLayout,\n BindingLayout,\n UniformBinding,\n UniformBlockBinding,\n ProgramBindings,\n AttributeBinding,\n VaryingBinding,\n AttributeLayout,\n AccessorObject\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../../context/context/webgl-checks';\nimport Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API\nimport {decodeUniformType, decodeAttributeType} from './uniforms';\nimport {getVertexFormat} from '../converters/vertex-formats';\nimport {isSamplerUniform} from './uniforms';\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {\n const programBindings = getProgramBindings(gl, program);\n\n const shaderLayout: ShaderLayout = {\n attributes: [],\n bindings: []\n };\n\n for (const attribute of programBindings.attributes) {\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);\n shaderLayout.attributes.push({\n name: attribute.name,\n location: attribute.location,\n format,\n stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'\n });\n }\n\n // Uniform blocks\n for (const uniformBlock of programBindings.uniformBlocks) {\n const uniforms = uniformBlock.uniforms.map((uniform) => ({\n name: uniform.name,\n format: uniform.format,\n byteOffset: uniform.byteOffset,\n byteStride: uniform.byteStride,\n arrayLength: uniform.arrayLength\n }));\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniformBlock.name,\n location: uniformBlock.location,\n visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),\n minBindingSize: uniformBlock.byteLength,\n uniforms\n });\n }\n\n let textureUnit = 0;\n for (const uniform of programBindings.uniforms) {\n if (isSamplerUniform(uniform.type)) {\n const {viewDimension, sampleType} = getSamplerInfo(uniform.type);\n shaderLayout.bindings.push({\n type: 'texture',\n name: uniform.name,\n location: textureUnit,\n viewDimension,\n sampleType\n });\n\n // @ts-expect-error\n uniform.textureUnit = textureUnit;\n textureUnit += 1;\n }\n }\n\n const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];\n if (uniforms.length) {\n shaderLayout.uniforms = uniforms;\n }\n if (programBindings.varyings?.length) {\n shaderLayout.varyings = programBindings.varyings;\n }\n\n return shaderLayout;\n}\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n */\nexport function getProgramBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): ProgramBindings {\n const config: ProgramBindings = {\n attributes: readAttributeBindings(gl, program),\n uniforms: readUniformBindings(gl, program),\n uniformBlocks: readUniformBlocks(gl, program),\n varyings: readVaryings(gl, program)\n };\n\n Object.seal(config);\n return config;\n // generateWebGPUStyleBindings(bindings);\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeBindings(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): AttributeBinding[] {\n const attributes: AttributeBinding[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const activeInfo = gl.getActiveAttrib(program, index);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n const {glType, components} = decodeAttributeType(compositeType);;\n const accessor: AccessorObject = {type: glType, size: size * components};\n // Any attribute name containing the word \"instance\" will be assumed to be instanced\n if (/instance/i.test(name)) {\n accessor.divisor = 1;\n }\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n attributes.push(attributeInfo);\n }\n }\n\n attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const varyings: VaryingBinding[] = [];\n\n const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const activeInfo = gl2.getTransformFeedbackVarying(program, location);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name, type: compositeType, size} = activeInfo;\n const {glType, components} = decodeUniformType(compositeType);;\n const accessor = new Accessor({type: glType, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const activeInfo = gl.getActiveUniform(program, i);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n const {name: rawName, size, type} = activeInfo;\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n *\n * (\"Active\" just means that unused (aka inactive) blocks may have been\n * optimized away during linking)\n */\nfunction readUniformBlocks(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n): UniformBlockBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n const gl2 = gl as WebGL2RenderingContext;\n\n const getBlockParameter = (blockIndex: number, pname: GL): any =>\n gl2.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n const blockInfo: UniformBlockBinding = {\n name: gl2.getActiveUniformBlockName(program, blockIndex) || '',\n location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniforms: [] as any[]\n };\n\n const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[] || [];\n\n const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.\n const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.\n const uniformBlockIndex = gl2.getActiveUniforms(\n program,\n uniformIndices,\n GL.UNIFORM_BLOCK_INDEX\n ); // Array of GLint indicating the block indices of the uniforms.\n const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.\n const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.\n const uniformMatrixStride = gl2.getActiveUniforms(\n program,\n uniformIndices,\n GL.UNIFORM_MATRIX_STRIDE\n ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.\n const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);\n for (let i = 0; i < blockInfo.uniformCount; ++i) {\n const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);\n if (!activeInfo) {\n throw new Error('activeInfo');\n }\n \n blockInfo.uniforms.push({\n name: activeInfo.name,\n format: decodeUniformType(uniformType[i]).format,\n type: uniformType[i],\n arrayLength: uniformArrayLength[i],\n byteOffset: uniformOffset[i],\n byteStride: uniformStride[i],\n // matrixStride: uniformStride[i],\n // rowMajor: uniformRowMajor[i]\n });\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU: Record<\n number,\n [\n '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d',\n 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint'\n ]\n> = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']\n};\n\ntype SamplerInfo = | {\n viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';\n sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';\n};\n\nfunction getSamplerInfo(type: GL): SamplerInfo {\n let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];\n if (!sampler) {\n throw new Error('sampler');\n }\n const [viewDimension, sampleType] = sampler;\n return {viewDimension, sampleType};\n}\n\n// HELPERS\n\nfunction parseUniformName(name: string): {name: string; length: number; isArray: boolean} {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] ? 1 : 0,\n isArray: Boolean(matches[2])\n };\n}\n\n/**\n * TODO - verify this is a copy of above and delete\n * import type {TextureFormat} from '@luma.gl/api';\n* Extract info about all \"active\" uniform blocks\n * (\"Active\" just means that unused (inactive) blocks may have been optimized away during linking)\n *\n function getUniformBlockBindings(gl, program): Binding[] {\n if (!isWebGL2(gl)) {\n return;\n }\n const bindings: Binding[] = [];\n const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < count; blockIndex++) {\n const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n const visibility = (vertex) + (fragment);\n const binding: BufferBinding = {\n location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),\n // name: gl.getActiveUniformBlockName(program, blockIndex),\n type: 'uniform',\n visibility,\n minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n }\n bindings.push(binding);\n }\n return bindings;\n}\n\nfunction setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {\n for (const bindGroup of bindings) {\n for (const binding of bindGroup) {\n\n }\n }\n\n // Set up indirection table\n // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n}\n */\n"],"file":"get-shader-layout.js"}
@@ -1,37 +0,0 @@
1
- const MESSAGE_TYPES = ['warning', 'error', 'info'];
2
- export function parseShaderCompilerLog(errLog) {
3
- const lines = errLog.split(/\r?\n/);
4
- const messages = [];
5
-
6
- for (const line of lines) {
7
- if (line.length <= 1) {
8
- continue;
9
- }
10
-
11
- const segments = line.split(':');
12
- const [messageType, linePosition, lineNumber, ...rest] = segments;
13
- let lineNum = parseInt(lineNumber, 10);
14
-
15
- if (isNaN(lineNum)) {
16
- lineNum = 0;
17
- }
18
-
19
- let linePos = parseInt(linePosition, 10);
20
-
21
- if (isNaN(linePos)) {
22
- linePos = 0;
23
- }
24
-
25
- const lowerCaseType = messageType.toLowerCase();
26
- const type = MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info';
27
- messages.push({
28
- message: rest.join(':').trim(),
29
- type,
30
- lineNum,
31
- linePos
32
- });
33
- }
34
-
35
- return messages;
36
- }
37
- //# sourceMappingURL=parse-shader-compiler-log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"names":["MESSAGE_TYPES","parseShaderCompilerLog","errLog","lines","split","messages","line","length","segments","messageType","linePosition","lineNumber","rest","lineNum","parseInt","isNaN","linePos","lowerCaseType","toLowerCase","type","includes","push","message","join","trim"],"mappings":"AAGA,MAAMA,aAAa,GAAG,CAAC,SAAD,EAAY,OAAZ,EAAqB,MAArB,CAAtB;AAOA,OAAO,SAASC,sBAAT,CAAgCC,MAAhC,EAA6E;AAElF,QAAMC,KAAK,GAAGD,MAAM,CAACE,KAAP,CAAa,OAAb,CAAd;AAEA,QAAMC,QAA2B,GAAG,EAApC;;AAEA,OAAK,MAAMC,IAAX,IAAmBH,KAAnB,EAA0B;AACxB,QAAIG,IAAI,CAACC,MAAL,IAAe,CAAnB,EAAsB;AACpB;AACD;;AAED,UAAMC,QAAkB,GAAGF,IAAI,CAACF,KAAL,CAAW,GAAX,CAA3B;AACA,UAAM,CAACK,WAAD,EAAcC,YAAd,EAA4BC,UAA5B,EAAwC,GAAGC,IAA3C,IAAmDJ,QAAzD;AAEA,QAAIK,OAAO,GAAGC,QAAQ,CAACH,UAAD,EAAa,EAAb,CAAtB;;AACA,QAAII,KAAK,CAACF,OAAD,CAAT,EAAoB;AAClBA,MAAAA,OAAO,GAAG,CAAV;AACD;;AAED,QAAIG,OAAO,GAAGF,QAAQ,CAACJ,YAAD,EAAe,EAAf,CAAtB;;AACA,QAAIK,KAAK,CAACC,OAAD,CAAT,EAAoB;AAClBA,MAAAA,OAAO,GAAG,CAAV;AACD;;AAGD,UAAMC,aAAa,GAAGR,WAAW,CAACS,WAAZ,EAAtB;AACA,UAAMC,IAAI,GAAInB,aAAa,CAACoB,QAAd,CAAuBH,aAAvB,IAAwCA,aAAxC,GAAwD,MAAtE;AAEAZ,IAAAA,QAAQ,CAACgB,IAAT,CAAc;AACZC,MAAAA,OAAO,EAAEV,IAAI,CAACW,IAAL,CAAU,GAAV,EAAeC,IAAf,EADG;AAEZL,MAAAA,IAFY;AAGZN,MAAAA,OAHY;AAIZG,MAAAA;AAJY,KAAd;AAMD;;AAED,SAAOX,QAAP;AACD","sourcesContent":["// luma.gl, MIT license\nimport type {CompilerMessage} from '@luma.gl/shadertools';\n\nconst MESSAGE_TYPES = ['warning', 'error', 'info'];\n\n/**\n * Parse a WebGL-format GLSL compilation log into an array of WebGPU style message records.\n * This follows documented WebGL conventions for compilation logs.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\nexport function parseShaderCompilerLog(errLog: string) : readonly CompilerMessage[] {\n // Parse the error - note: browser and driver dependent\n const lines = errLog.split(/\\r?\\n/);\n\n const messages: CompilerMessage[] = [];\n\n for (const line of lines) {\n if (line.length <= 1) {\n continue;\n }\n\n const segments: string[] = line.split(':');\n const [messageType, linePosition, lineNumber, ...rest] = segments;\n\n let lineNum = parseInt(lineNumber, 10);\n if (isNaN(lineNum)) {\n lineNum = 0;\n }\n\n let linePos = parseInt(linePosition, 10);\n if (isNaN(linePos)) {\n linePos = 0;\n }\n\n // Ensure supported type\n const lowerCaseType = messageType.toLowerCase();\n const type = (MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info') as 'warning' | 'error' | 'info';\n\n messages.push({\n message: rest.join(':').trim(),\n type,\n lineNum,\n linePos // TODO\n })\n }\n\n return messages;\n}\n"],"file":"parse-shader-compiler-log.js"}
@@ -1,115 +0,0 @@
1
- import GL from '@luma.gl/constants';
2
- export function setUniform(gl, location, type, value) {
3
- const gl2 = gl;
4
-
5
- if (typeof value === 'number') {
6
- switch (type) {
7
- case GL.SAMPLER_2D:
8
- case GL.SAMPLER_CUBE:
9
- case GL.SAMPLER_3D:
10
- case GL.SAMPLER_2D_SHADOW:
11
- case GL.SAMPLER_2D_ARRAY:
12
- case GL.SAMPLER_2D_ARRAY_SHADOW:
13
- case GL.SAMPLER_CUBE_SHADOW:
14
- case GL.INT_SAMPLER_2D:
15
- case GL.INT_SAMPLER_3D:
16
- case GL.INT_SAMPLER_CUBE:
17
- case GL.INT_SAMPLER_2D_ARRAY:
18
- case GL.UNSIGNED_INT_SAMPLER_2D:
19
- case GL.UNSIGNED_INT_SAMPLER_3D:
20
- case GL.UNSIGNED_INT_SAMPLER_CUBE:
21
- case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:
22
- return gl.uniform1i(location, value);
23
- }
24
- }
25
-
26
- if (value === true) {
27
- value = 1;
28
- }
29
-
30
- if (value === false) {
31
- value = 1;
32
- }
33
-
34
- const arrayValue = typeof value === 'number' ? [value] : value;
35
-
36
- switch (type) {
37
- case GL.FLOAT:
38
- return gl.uniform1fv(location, arrayValue);
39
-
40
- case GL.FLOAT_VEC2:
41
- return gl.uniform2fv(location, arrayValue);
42
-
43
- case GL.FLOAT_VEC3:
44
- return gl.uniform3fv(location, arrayValue);
45
-
46
- case GL.FLOAT_VEC4:
47
- return gl.uniform4fv(location, arrayValue);
48
-
49
- case GL.INT:
50
- return gl.uniform1iv(location, arrayValue);
51
-
52
- case GL.INT_VEC2:
53
- return gl.uniform2iv(location, arrayValue);
54
-
55
- case GL.INT_VEC3:
56
- return gl.uniform3iv(location, arrayValue);
57
-
58
- case GL.INT_VEC4:
59
- return gl.uniform4iv(location, arrayValue);
60
-
61
- case GL.BOOL:
62
- return gl.uniform1iv(location, arrayValue);
63
-
64
- case GL.BOOL_VEC2:
65
- return gl.uniform2iv(location, arrayValue);
66
-
67
- case GL.BOOL_VEC3:
68
- return gl.uniform3iv(location, arrayValue);
69
-
70
- case GL.BOOL_VEC4:
71
- gl.uniform4iv(location, arrayValue);
72
-
73
- case GL.UNSIGNED_INT:
74
- return gl2.uniform1uiv(location, arrayValue, 1);
75
-
76
- case GL.UNSIGNED_INT_VEC2:
77
- return gl2.uniform2uiv(location, arrayValue, 2);
78
-
79
- case GL.UNSIGNED_INT_VEC3:
80
- return gl2.uniform3uiv(location, arrayValue, 3);
81
-
82
- case GL.UNSIGNED_INT_VEC4:
83
- return gl2.uniform4uiv(location, arrayValue, 4);
84
-
85
- case GL.FLOAT_MAT2:
86
- return gl.uniformMatrix2fv(location, false, arrayValue);
87
-
88
- case GL.FLOAT_MAT3:
89
- return gl.uniformMatrix3fv(location, false, arrayValue);
90
-
91
- case GL.FLOAT_MAT4:
92
- return gl.uniformMatrix4fv(location, false, arrayValue);
93
-
94
- case GL.FLOAT_MAT2x3:
95
- return gl2.uniformMatrix2x3fv(location, false, arrayValue);
96
-
97
- case GL.FLOAT_MAT2x4:
98
- return gl2.uniformMatrix2x4fv(location, false, arrayValue);
99
-
100
- case GL.FLOAT_MAT3x2:
101
- return gl2.uniformMatrix3x2fv(location, false, arrayValue);
102
-
103
- case GL.FLOAT_MAT3x4:
104
- return gl2.uniformMatrix3x4fv(location, false, arrayValue);
105
-
106
- case GL.FLOAT_MAT4x2:
107
- return gl2.uniformMatrix4x2fv(location, false, arrayValue);
108
-
109
- case GL.FLOAT_MAT4x3:
110
- return gl2.uniformMatrix4x3fv(location, false, arrayValue);
111
- }
112
-
113
- throw new Error('Illegal uniform');
114
- }
115
- //# sourceMappingURL=set-uniform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/helpers/set-uniform.ts"],"names":["GL","setUniform","gl","location","type","value","gl2","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","uniform1i","arrayValue","FLOAT","uniform1fv","FLOAT_VEC2","uniform2fv","FLOAT_VEC3","uniform3fv","FLOAT_VEC4","uniform4fv","INT","uniform1iv","INT_VEC2","uniform2iv","INT_VEC3","uniform3iv","INT_VEC4","uniform4iv","BOOL","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","UNSIGNED_INT","uniform1uiv","UNSIGNED_INT_VEC2","uniform2uiv","UNSIGNED_INT_VEC3","uniform3uiv","UNSIGNED_INT_VEC4","uniform4uiv","FLOAT_MAT2","uniformMatrix2fv","FLOAT_MAT3","uniformMatrix3fv","FLOAT_MAT4","uniformMatrix4fv","FLOAT_MAT2x3","uniformMatrix2x3fv","FLOAT_MAT2x4","uniformMatrix2x4fv","FLOAT_MAT3x2","uniformMatrix3x2fv","FLOAT_MAT3x4","uniformMatrix3x4fv","FLOAT_MAT4x2","uniformMatrix4x2fv","FLOAT_MAT4x3","uniformMatrix4x3fv","Error"],"mappings":"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","sourcesContent":["// Uniforms\nimport GL from '@luma.gl/constants';\n\n/** Set a raw uniform (without type conversion and caching) */\n/* eslint-disable max-len */\nexport function setUniform(\n gl: WebGLRenderingContext,\n location: WebGLUniformLocation,\n type: GL,\n value: number | Float32Array | Int32Array | Uint32Array\n): void {\n const gl2 = gl as WebGL2RenderingContext;\n\n if (typeof value === 'number') {\n // prettier-ignore\n switch (type) {\n // WebGL1 samplers\n case GL.SAMPLER_2D:\n case GL.SAMPLER_CUBE:\n // WebGL2 samplers\n case GL.SAMPLER_3D:\n case GL.SAMPLER_2D_SHADOW:\n case GL.SAMPLER_2D_ARRAY:\n case GL.SAMPLER_2D_ARRAY_SHADOW:\n case GL.SAMPLER_CUBE_SHADOW:\n case GL.INT_SAMPLER_2D:\n case GL.INT_SAMPLER_3D:\n case GL.INT_SAMPLER_CUBE:\n case GL.INT_SAMPLER_2D_ARRAY:\n case GL.UNSIGNED_INT_SAMPLER_2D:\n case GL.UNSIGNED_INT_SAMPLER_3D:\n case GL.UNSIGNED_INT_SAMPLER_CUBE:\n case GL.UNSIGNED_INT_SAMPLER_2D_ARRAY:\n return gl.uniform1i(location, value);\n }\n }\n\n // @ts-expect-error\n if (value === true) {\n value = 1;\n }\n // @ts-expect-error\n if (value === false) {\n value = 1;\n }\n const arrayValue = (typeof value === 'number') ? [value] : value;\n\n // prettier-ignore\n switch (type) {\n case GL.FLOAT: return gl.uniform1fv(location, arrayValue);\n case GL.FLOAT_VEC2: return gl.uniform2fv(location, arrayValue);\n case GL.FLOAT_VEC3: return gl.uniform3fv(location, arrayValue);\n case GL.FLOAT_VEC4: return gl.uniform4fv(location, arrayValue);\n\n case GL.INT: return gl.uniform1iv(location, arrayValue);\n case GL.INT_VEC2: return gl.uniform2iv(location, arrayValue);\n case GL.INT_VEC3: return gl.uniform3iv(location, arrayValue);\n case GL.INT_VEC4: return gl.uniform4iv(location, arrayValue);\n\n case GL.BOOL: return gl.uniform1iv(location, arrayValue);\n case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);\n case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);\n case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);\n\n // WEBGL2 - unsigned integers\n case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);\n case GL.UNSIGNED_INT_VEC2: return gl2.uniform2uiv(location, arrayValue, 2);\n case GL.UNSIGNED_INT_VEC3: return gl2.uniform3uiv(location, arrayValue, 3);\n case GL.UNSIGNED_INT_VEC4: return gl2.uniform4uiv(location, arrayValue, 4);\n\n // WebGL2 - quadratic matrices\n // false: don't transpose the matrix\n case GL.FLOAT_MAT2: return gl.uniformMatrix2fv(location, false, arrayValue);\n case GL.FLOAT_MAT3: return gl.uniformMatrix3fv(location, false, arrayValue);\n case GL.FLOAT_MAT4: return gl.uniformMatrix4fv(location, false, arrayValue);\n\n // WebGL2 - rectangular matrices\n case GL.FLOAT_MAT2x3: return gl2.uniformMatrix2x3fv(location, false, arrayValue);\n case GL.FLOAT_MAT2x4: return gl2.uniformMatrix2x4fv(location, false, arrayValue);\n case GL.FLOAT_MAT3x2: return gl2.uniformMatrix3x2fv(location, false, arrayValue);\n case GL.FLOAT_MAT3x4: return gl2.uniformMatrix3x4fv(location, false, arrayValue);\n case GL.FLOAT_MAT4x2: return gl2.uniformMatrix4x2fv(location, false, arrayValue);\n case GL.FLOAT_MAT4x3: return gl2.uniformMatrix4x3fv(location, false, arrayValue);\n }\n\n throw new Error('Illegal uniform');\n}\n"],"file":"set-uniform.js"}