@luma.gl/webgl 9.0.0-alpha.14 → 9.0.0-alpha.16

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 (367) hide show
  1. package/dist/adapter/converters/device-parameters.js +199 -136
  2. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  3. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +62 -176
  5. package/dist/adapter/converters/sampler-parameters.js +149 -206
  6. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  7. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  8. package/dist/adapter/converters/texture-formats.js +437 -890
  9. package/dist/adapter/converters/vertex-formats.js +15 -33
  10. package/dist/adapter/device-helpers/device-features.js +119 -100
  11. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  12. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  13. package/dist/adapter/device-helpers/device-limits.js +88 -86
  14. package/dist/adapter/device-helpers/get-device-info.js +42 -43
  15. package/dist/adapter/device-helpers/is-old-ie.js +9 -6
  16. package/dist/adapter/helpers/attribute-utils.js +50 -74
  17. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  18. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  19. package/dist/adapter/helpers/get-shader-info.js +27 -0
  20. package/dist/adapter/helpers/get-shader-layout.js +307 -296
  21. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  22. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  23. package/dist/adapter/helpers/parse-shader-compiler-log.js +32 -33
  24. package/dist/adapter/helpers/set-uniform.js +67 -110
  25. package/dist/adapter/helpers/uniforms.js +80 -85
  26. package/dist/adapter/objects/constants-to-keys.js +33 -33
  27. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  28. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
  30. package/dist/adapter/objects/webgl-resource.js +213 -205
  31. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  32. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  33. package/dist/adapter/objects/webgl-vertex-array-object.js +74 -76
  34. package/dist/adapter/resources/webgl-buffer.js +150 -147
  35. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  36. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgl-command-buffer.js +39 -55
  38. package/dist/adapter/resources/webgl-command-encoder.js +25 -49
  39. package/dist/adapter/resources/webgl-external-texture.js +91 -1
  40. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  41. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-framebuffer.js +231 -258
  43. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  44. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-render-pass.js +8 -18
  46. package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
  47. package/dist/adapter/resources/webgl-sampler.js +42 -47
  48. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  49. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgl-shader.js +58 -68
  51. package/dist/adapter/resources/webgl-texture.d.ts +5 -5
  52. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgl-texture.js +661 -815
  54. package/dist/adapter/webgl-canvas-context.js +55 -49
  55. package/dist/adapter/webgl-device.js +288 -338
  56. package/dist/bundle.js +1 -2
  57. package/dist/classic/accessor.js +120 -127
  58. package/dist/classic/buffer.d.ts +1 -1
  59. package/dist/classic/buffer.d.ts.map +1 -1
  60. package/dist/classic/buffer.js +325 -356
  61. package/dist/classic/typed-array-utils.d.ts +1 -1
  62. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  63. package/dist/classic/typed-array-utils.js +91 -101
  64. package/dist/context/context/create-browser-context.d.ts +1 -2
  65. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  66. package/dist/context/context/create-browser-context.js +61 -52
  67. package/dist/context/context/create-headless-context.d.ts +1 -1
  68. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  69. package/dist/context/context/create-headless-context.js +26 -33
  70. package/dist/context/context/webgl-checks.js +25 -20
  71. package/dist/context/debug/spector.d.ts +1 -2
  72. package/dist/context/debug/spector.d.ts.map +1 -1
  73. package/dist/context/debug/spector.js +53 -62
  74. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  75. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  76. package/dist/context/debug/webgl-developer-tools.js +106 -93
  77. package/dist/context/parameters/unified-parameter-api.js +91 -55
  78. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  79. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  80. package/dist/context/parameters/webgl-parameter-tables.js +462 -423
  81. package/dist/context/polyfill/context-data.js +16 -12
  82. package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
  83. package/dist/context/polyfill/polyfill-context.js +75 -80
  84. package/dist/context/polyfill/polyfill-table.js +133 -139
  85. package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
  86. package/dist/context/state-tracker/deep-array-equal.js +16 -18
  87. package/dist/context/state-tracker/track-context-state.js +183 -161
  88. package/dist/context/state-tracker/with-parameters.js +43 -35
  89. package/dist/dist.min.js +1 -0
  90. package/dist/es5/adapter/converters/device-parameters.js +3 -38
  91. package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
  92. package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
  93. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
  94. package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
  95. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
  96. package/dist/es5/adapter/converters/texture-formats.js +9 -81
  97. package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
  98. package/dist/es5/adapter/converters/vertex-formats.js +0 -12
  99. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
  100. package/dist/es5/adapter/device-helpers/device-features.js +6 -40
  101. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  102. package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
  103. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  104. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
  105. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  106. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
  107. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
  108. package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
  109. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
  110. package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
  111. package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
  112. package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
  113. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
  114. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
  115. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  116. package/dist/es5/adapter/helpers/set-uniform.js +0 -33
  117. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
  118. package/dist/es5/adapter/helpers/uniforms.js +13 -37
  119. package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
  120. package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
  121. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
  122. package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
  123. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
  124. package/dist/es5/adapter/objects/webgl-resource.js +6 -60
  125. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
  126. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
  127. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  128. package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
  129. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
  130. package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
  131. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
  132. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
  133. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
  134. package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
  135. package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
  136. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
  137. package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
  138. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
  139. package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
  140. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
  141. package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
  142. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
  143. package/dist/es5/adapter/resources/webgl-shader.js +13 -52
  144. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
  145. package/dist/es5/adapter/resources/webgl-texture.js +137 -291
  146. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
  147. package/dist/es5/adapter/webgl-canvas-context.js +0 -24
  148. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  149. package/dist/es5/adapter/webgl-device.js +40 -127
  150. package/dist/es5/adapter/webgl-device.js.map +1 -1
  151. package/dist/es5/bundle.js +0 -1
  152. package/dist/es5/bundle.js.map +1 -1
  153. package/dist/es5/classic/accessor.js +1 -31
  154. package/dist/es5/classic/accessor.js.map +1 -1
  155. package/dist/es5/classic/buffer.js +32 -102
  156. package/dist/es5/classic/buffer.js.map +1 -1
  157. package/dist/es5/classic/typed-array-utils.js +10 -37
  158. package/dist/es5/classic/typed-array-utils.js.map +1 -1
  159. package/dist/es5/context/context/create-browser-context.js +4 -21
  160. package/dist/es5/context/context/create-browser-context.js.map +1 -1
  161. package/dist/es5/context/context/create-headless-context.js +8 -21
  162. package/dist/es5/context/context/create-headless-context.js.map +1 -1
  163. package/dist/es5/context/context/webgl-checks.js +4 -14
  164. package/dist/es5/context/context/webgl-checks.js.map +1 -1
  165. package/dist/es5/context/debug/spector.js +20 -54
  166. package/dist/es5/context/debug/spector.js.map +1 -1
  167. package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
  168. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
  169. package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
  170. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  171. package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
  172. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/es5/context/polyfill/context-data.js +0 -3
  174. package/dist/es5/context/polyfill/context-data.js.map +1 -1
  175. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
  176. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/es5/context/polyfill/polyfill-context.js +8 -33
  178. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  179. package/dist/es5/context/polyfill/polyfill-table.js +3 -27
  180. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
  182. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  183. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
  184. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  185. package/dist/es5/context/state-tracker/track-context-state.js +10 -53
  186. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  187. package/dist/es5/context/state-tracker/with-parameters.js +1 -13
  188. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  189. package/dist/es5/index.js +72 -99
  190. package/dist/es5/index.js.map +1 -1
  191. package/dist/es5/init.js +0 -3
  192. package/dist/es5/init.js.map +1 -1
  193. package/dist/es5/types/webgl.js +0 -1
  194. package/dist/es5/types/webgl.js.map +1 -1
  195. package/dist/es5/types.js.map +1 -1
  196. package/dist/esm/adapter/converters/device-parameters.js +0 -20
  197. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  198. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
  199. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
  200. package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
  201. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
  202. package/dist/esm/adapter/converters/texture-formats.js +8 -52
  203. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  204. package/dist/esm/adapter/converters/vertex-formats.js +0 -9
  205. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  206. package/dist/esm/adapter/device-helpers/device-features.js +2 -19
  207. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  208. package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
  209. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  210. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
  211. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  212. package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
  213. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
  214. package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
  215. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
  216. package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
  217. package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
  218. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
  219. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  220. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
  221. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  222. package/dist/esm/adapter/helpers/set-uniform.js +0 -30
  223. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  224. package/dist/esm/adapter/helpers/uniforms.js +0 -10
  225. package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
  226. package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
  227. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  228. package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
  229. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  230. package/dist/esm/adapter/objects/webgl-resource.js +10 -57
  231. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  232. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
  233. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  234. package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
  235. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  236. package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
  237. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
  238. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
  239. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  240. package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
  241. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
  242. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  243. package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
  244. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
  245. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
  246. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  247. package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
  248. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  249. package/dist/esm/adapter/resources/webgl-shader.js +2 -16
  250. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  251. package/dist/esm/adapter/resources/webgl-texture.js +36 -154
  252. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  253. package/dist/esm/adapter/webgl-canvas-context.js +0 -14
  254. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  255. package/dist/esm/adapter/webgl-device.js +19 -89
  256. package/dist/esm/adapter/webgl-device.js.map +1 -1
  257. package/dist/esm/bundle.js +0 -1
  258. package/dist/esm/bundle.js.map +1 -1
  259. package/dist/esm/classic/accessor.js +10 -34
  260. package/dist/esm/classic/accessor.js.map +1 -1
  261. package/dist/esm/classic/buffer.js +15 -71
  262. package/dist/esm/classic/buffer.js.map +1 -1
  263. package/dist/esm/classic/typed-array-utils.js +0 -20
  264. package/dist/esm/classic/typed-array-utils.js.map +1 -1
  265. package/dist/esm/context/context/create-browser-context.js +6 -14
  266. package/dist/esm/context/context/create-browser-context.js.map +1 -1
  267. package/dist/esm/context/context/create-headless-context.js +2 -6
  268. package/dist/esm/context/context/create-headless-context.js.map +1 -1
  269. package/dist/esm/context/context/webgl-checks.js +0 -3
  270. package/dist/esm/context/context/webgl-checks.js.map +1 -1
  271. package/dist/esm/context/debug/spector.js +2 -14
  272. package/dist/esm/context/debug/spector.js.map +1 -1
  273. package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
  274. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  275. package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
  276. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  277. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
  278. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  279. package/dist/esm/context/polyfill/context-data.js +0 -2
  280. package/dist/esm/context/polyfill/context-data.js.map +1 -1
  281. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
  282. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  283. package/dist/esm/context/polyfill/polyfill-context.js +14 -21
  284. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  285. package/dist/esm/context/polyfill/polyfill-table.js +0 -23
  286. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  287. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
  288. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  289. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
  290. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  291. package/dist/esm/context/state-tracker/track-context-state.js +11 -45
  292. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  293. package/dist/esm/context/state-tracker/with-parameters.js +0 -6
  294. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  295. package/dist/esm/index.js.map +1 -1
  296. package/dist/esm/init.js.map +1 -1
  297. package/dist/esm/types/webgl.js.map +1 -1
  298. package/dist/esm/types.js.map +1 -1
  299. package/dist/index.js +39 -25
  300. package/dist/init.js +1 -2
  301. package/dist/types/webgl.d.ts +20 -20
  302. package/dist/types/webgl.d.ts.map +1 -1
  303. package/dist/types/webgl.js +0 -1
  304. package/dist/types.d.ts +1 -1
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +0 -1
  307. package/package.json +8 -8
  308. package/src/adapter/helpers/get-shader-info.ts +37 -0
  309. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  310. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  311. package/src/adapter/resources/webgl-shader.ts +2 -2
  312. package/src/adapter/webgl-device.ts +1 -1
  313. package/src/context/debug/webgl-developer-tools.ts +0 -1
  314. package/src/types/webgl.ts +4 -4
  315. package/dist/adapter/converters/device-parameters.js.map +0 -1
  316. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  317. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  318. package/dist/adapter/converters/texture-formats.js.map +0 -1
  319. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  320. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  321. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  323. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  324. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  326. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  327. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/adapter/helpers/uniforms.js.map +0 -1
  329. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  330. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  331. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  333. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  334. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  335. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  336. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  338. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  339. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  341. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  343. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  344. package/dist/adapter/webgl-device.js.map +0 -1
  345. package/dist/bundle.js.map +0 -1
  346. package/dist/classic/accessor.js.map +0 -1
  347. package/dist/classic/buffer.js.map +0 -1
  348. package/dist/classic/typed-array-utils.js.map +0 -1
  349. package/dist/context/context/create-browser-context.js.map +0 -1
  350. package/dist/context/context/create-headless-context.js.map +0 -1
  351. package/dist/context/context/webgl-checks.js.map +0 -1
  352. package/dist/context/debug/spector.js.map +0 -1
  353. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  354. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  355. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  356. package/dist/context/polyfill/context-data.js.map +0 -1
  357. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  358. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  359. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  360. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  361. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  362. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  363. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/init.js.map +0 -1
  366. package/dist/types/webgl.js.map +0 -1
  367. package/dist/types.js.map +0 -1
@@ -6,13 +6,11 @@ import { getVertexFormat } from '../converters/vertex-formats';
6
6
  import { isSamplerUniform } from './uniforms';
7
7
  export function getShaderLayout(gl, program) {
8
8
  var _programBindings$unif, _programBindings$vary;
9
-
10
9
  const programBindings = getProgramBindings(gl, program);
11
10
  const shaderLayout = {
12
11
  attributes: [],
13
12
  bindings: []
14
13
  };
15
-
16
14
  for (const attribute of programBindings.attributes) {
17
15
  const size = Math.min(attribute.accessor.size, 4);
18
16
  const format = getVertexFormat(attribute.accessor.type || GL.FLOAT, size);
@@ -23,7 +21,6 @@ export function getShaderLayout(gl, program) {
23
21
  stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
24
22
  });
25
23
  }
26
-
27
24
  for (const uniformBlock of programBindings.uniformBlocks) {
28
25
  const uniforms = uniformBlock.uniforms.map(uniform => ({
29
26
  name: uniform.name,
@@ -41,9 +38,7 @@ export function getShaderLayout(gl, program) {
41
38
  uniforms
42
39
  });
43
40
  }
44
-
45
41
  let textureUnit = 0;
46
-
47
42
  for (const uniform of programBindings.uniforms) {
48
43
  if (isSamplerUniform(uniform.type)) {
49
44
  const {
@@ -61,17 +56,13 @@ export function getShaderLayout(gl, program) {
61
56
  textureUnit += 1;
62
57
  }
63
58
  }
64
-
65
59
  const uniforms = ((_programBindings$unif = programBindings.uniforms) === null || _programBindings$unif === void 0 ? void 0 : _programBindings$unif.filter(uniform => uniform.location !== null)) || [];
66
-
67
60
  if (uniforms.length) {
68
61
  shaderLayout.uniforms = uniforms;
69
62
  }
70
-
71
63
  if ((_programBindings$vary = programBindings.varyings) !== null && _programBindings$vary !== void 0 && _programBindings$vary.length) {
72
64
  shaderLayout.varyings = programBindings.varyings;
73
65
  }
74
-
75
66
  return shaderLayout;
76
67
  }
77
68
  export function getProgramBindings(gl, program) {
@@ -84,25 +75,20 @@ export function getProgramBindings(gl, program) {
84
75
  Object.seal(config);
85
76
  return config;
86
77
  }
87
-
88
78
  function readAttributeBindings(gl, program) {
89
79
  const attributes = [];
90
80
  const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
91
-
92
81
  for (let index = 0; index < count; index++) {
93
82
  const activeInfo = gl.getActiveAttrib(program, index);
94
-
95
83
  if (!activeInfo) {
96
84
  throw new Error('activeInfo');
97
85
  }
98
-
99
86
  const {
100
87
  name,
101
88
  type: compositeType,
102
89
  size
103
90
  } = activeInfo;
104
91
  const location = gl.getAttribLocation(program, name);
105
-
106
92
  if (location >= 0) {
107
93
  const {
108
94
  glType,
@@ -113,11 +99,9 @@ function readAttributeBindings(gl, program) {
113
99
  type: glType,
114
100
  size: size * components
115
101
  };
116
-
117
102
  if (/instance/i.test(name)) {
118
103
  accessor.divisor = 1;
119
104
  }
120
-
121
105
  const attributeInfo = {
122
106
  location,
123
107
  name,
@@ -126,27 +110,21 @@ function readAttributeBindings(gl, program) {
126
110
  attributes.push(attributeInfo);
127
111
  }
128
112
  }
129
-
130
113
  attributes.sort((a, b) => a.location - b.location);
131
114
  return attributes;
132
115
  }
133
-
134
116
  function readVaryings(gl, program) {
135
117
  if (!isWebGL2(gl)) {
136
118
  return [];
137
119
  }
138
-
139
120
  const gl2 = gl;
140
121
  const varyings = [];
141
122
  const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
142
-
143
123
  for (let location = 0; location < count; location++) {
144
124
  const activeInfo = gl2.getTransformFeedbackVarying(program, location);
145
-
146
125
  if (!activeInfo) {
147
126
  throw new Error('activeInfo');
148
127
  }
149
-
150
128
  const {
151
129
  name,
152
130
  type: compositeType,
@@ -168,22 +146,17 @@ function readVaryings(gl, program) {
168
146
  };
169
147
  varyings.push(varying);
170
148
  }
171
-
172
149
  varyings.sort((a, b) => a.location - b.location);
173
150
  return varyings;
174
151
  }
175
-
176
152
  function readUniformBindings(gl, program) {
177
153
  const uniforms = [];
178
154
  const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
179
-
180
155
  for (let i = 0; i < uniformCount; i++) {
181
156
  const activeInfo = gl.getActiveUniform(program, i);
182
-
183
157
  if (!activeInfo) {
184
158
  throw new Error('activeInfo');
185
159
  }
186
-
187
160
  const {
188
161
  name: rawName,
189
162
  size,
@@ -202,12 +175,12 @@ function readUniformBindings(gl, program) {
202
175
  isArray
203
176
  };
204
177
  uniforms.push(uniformInfo);
205
-
206
178
  if (uniformInfo.size > 1) {
207
179
  for (let j = 0; j < uniformInfo.size; j++) {
208
180
  const elementName = "".concat(name, "[").concat(j, "]");
209
181
  webglLocation = gl.getUniformLocation(program, elementName);
210
- const arrayElementUniformInfo = { ...uniformInfo,
182
+ const arrayElementUniformInfo = {
183
+ ...uniformInfo,
211
184
  name: elementName,
212
185
  location: webglLocation
213
186
  };
@@ -215,22 +188,16 @@ function readUniformBindings(gl, program) {
215
188
  }
216
189
  }
217
190
  }
218
-
219
191
  return uniforms;
220
192
  }
221
-
222
193
  function readUniformBlocks(gl, program) {
223
194
  if (!isWebGL2(gl)) {
224
195
  return [];
225
196
  }
226
-
227
197
  const gl2 = gl;
228
-
229
198
  const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
230
-
231
199
  const uniformBlocks = [];
232
200
  const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
233
-
234
201
  for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
235
202
  const blockInfo = {
236
203
  name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
@@ -246,14 +213,11 @@ function readUniformBlocks(gl, program) {
246
213
  const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE);
247
214
  const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET);
248
215
  const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE);
249
-
250
216
  for (let i = 0; i < blockInfo.uniformCount; ++i) {
251
217
  const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
252
-
253
218
  if (!activeInfo) {
254
219
  throw new Error('activeInfo');
255
220
  }
256
-
257
221
  blockInfo.uniforms.push({
258
222
  name: activeInfo.name,
259
223
  format: decodeUniformType(uniformType[i]).format,
@@ -263,14 +227,11 @@ function readUniformBlocks(gl, program) {
263
227
  byteStride: uniformStride[i]
264
228
  });
265
229
  }
266
-
267
230
  uniformBlocks.push(blockInfo);
268
231
  }
269
-
270
232
  uniformBlocks.sort((a, b) => a.location - b.location);
271
233
  return uniformBlocks;
272
234
  }
273
-
274
235
  const SAMPLER_UNIFORMS_GL_TO_GPU = {
275
236
  [GL.SAMPLER_2D]: ['2d', 'float'],
276
237
  [GL.SAMPLER_CUBE]: ['cube', 'float'],
@@ -288,21 +249,17 @@ const SAMPLER_UNIFORMS_GL_TO_GPU = {
288
249
  [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],
289
250
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
290
251
  };
291
-
292
252
  function getSamplerInfo(type) {
293
253
  let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
294
-
295
254
  if (!sampler) {
296
255
  throw new Error('sampler');
297
256
  }
298
-
299
257
  const [viewDimension, sampleType] = sampler;
300
258
  return {
301
259
  viewDimension,
302
260
  sampleType
303
261
  };
304
262
  }
305
-
306
263
  function parseUniformName(name) {
307
264
  if (name[name.length - 1] !== ']') {
308
265
  return {
@@ -311,14 +268,11 @@ function parseUniformName(name) {
311
268
  isArray: false
312
269
  };
313
270
  }
314
-
315
271
  const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
316
272
  const matches = name.match(UNIFORM_NAME_REGEXP);
317
-
318
273
  if (!matches || matches.length < 2) {
319
274
  throw new Error("Failed to parse GLSL uniform name ".concat(name));
320
275
  }
321
-
322
276
  return {
323
277
  name: matches[1],
324
278
  length: matches[2] ? 1 : 0,
@@ -1 +1 @@
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","size","Math","min","accessor","format","type","FLOAT","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","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","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/**\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 // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...\n const size = Math.min(attribute.accessor.size, 4);\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, 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: WebGLRenderingContext, 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
+ {"version":3,"file":"get-shader-layout.js","names":["GL","isWebGL2","Accessor","decodeUniformType","decodeAttributeType","getVertexFormat","isSamplerUniform","getShaderLayout","gl","program","_programBindings$unif","_programBindings$vary","programBindings","getProgramBindings","shaderLayout","attributes","bindings","attribute","size","Math","min","accessor","format","type","FLOAT","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","concat","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","uniformOffset","UNIFORM_OFFSET","uniformStride","UNIFORM_ARRAY_STRIDE","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"],"sources":["../../../../src/adapter/helpers/get-shader-layout.ts"],"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/**\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 // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...\n const size = Math.min(attribute.accessor.size, 4);\n const format =\n // attribute.accessor.format ||\n getVertexFormat(attribute.accessor.type || GL.FLOAT, 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: WebGLRenderingContext, 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"],"mappings":"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"}
@@ -2,26 +2,20 @@ const MESSAGE_TYPES = ['warning', 'error', 'info'];
2
2
  export function parseShaderCompilerLog(errLog) {
3
3
  const lines = errLog.split(/\r?\n/);
4
4
  const messages = [];
5
-
6
5
  for (const line of lines) {
7
6
  if (line.length <= 1) {
8
7
  continue;
9
8
  }
10
-
11
9
  const segments = line.split(':');
12
10
  const [messageType, linePosition, lineNumber, ...rest] = segments;
13
11
  let lineNum = parseInt(lineNumber, 10);
14
-
15
12
  if (isNaN(lineNum)) {
16
13
  lineNum = 0;
17
14
  }
18
-
19
15
  let linePos = parseInt(linePosition, 10);
20
-
21
16
  if (isNaN(linePos)) {
22
17
  linePos = 0;
23
18
  }
24
-
25
19
  const lowerCaseType = messageType.toLowerCase();
26
20
  const type = MESSAGE_TYPES.includes(lowerCaseType) ? lowerCaseType : 'info';
27
21
  messages.push({
@@ -31,7 +25,6 @@ export function parseShaderCompilerLog(errLog) {
31
25
  linePos
32
26
  });
33
27
  }
34
-
35
28
  return messages;
36
29
  }
37
30
  //# sourceMappingURL=parse-shader-compiler-log.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"parse-shader-compiler-log.js","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"],"sources":["../../../../src/adapter/helpers/parse-shader-compiler-log.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {CompilerMessage} from '@luma.gl/api';\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"],"mappings":"AAGA,MAAMA,aAAa,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAOlD,OAAO,SAASC,sBAAsBA,CAACC,MAAc,EAA+B;EAElF,MAAMC,KAAK,GAAGD,MAAM,CAACE,KAAK,CAAC,OAAO,CAAC;EAEnC,MAAMC,QAA2B,GAAG,EAAE;EAEtC,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;IACxB,IAAIG,IAAI,CAACC,MAAM,IAAI,CAAC,EAAE;MACpB;IACF;IAEA,MAAMC,QAAkB,GAAGF,IAAI,CAACF,KAAK,CAAC,GAAG,CAAC;IAC1C,MAAM,CAACK,WAAW,EAAEC,YAAY,EAAEC,UAAU,EAAE,GAAGC,IAAI,CAAC,GAAGJ,QAAQ;IAEjE,IAAIK,OAAO,GAAGC,QAAQ,CAACH,UAAU,EAAE,EAAE,CAAC;IACtC,IAAII,KAAK,CAACF,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAEA,IAAIG,OAAO,GAAGF,QAAQ,CAACJ,YAAY,EAAE,EAAE,CAAC;IACxC,IAAIK,KAAK,CAACC,OAAO,CAAC,EAAE;MAClBA,OAAO,GAAG,CAAC;IACb;IAGA,MAAMC,aAAa,GAAGR,WAAW,CAACS,WAAW,EAAE;IAC/C,MAAMC,IAAI,GAAInB,aAAa,CAACoB,QAAQ,CAACH,aAAa,CAAC,GAAGA,aAAa,GAAG,MAAuC;IAE7GZ,QAAQ,CAACgB,IAAI,CAAC;MACZC,OAAO,EAAEV,IAAI,CAACW,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,EAAE;MAC9BL,IAAI;MACJN,OAAO;MACPG;IACF,CAAC,CAAC;EACJ;EAEA,OAAOX,QAAQ;AACjB"}
@@ -1,7 +1,6 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  export function setUniform(gl, location, type, value) {
3
3
  const gl2 = gl;
4
-
5
4
  if (typeof value === 'number') {
6
5
  switch (type) {
7
6
  case GL.SAMPLER_2D:
@@ -22,94 +21,65 @@ export function setUniform(gl, location, type, value) {
22
21
  return gl.uniform1i(location, value);
23
22
  }
24
23
  }
25
-
26
24
  if (value === true) {
27
25
  value = 1;
28
26
  }
29
-
30
27
  if (value === false) {
31
28
  value = 1;
32
29
  }
33
-
34
30
  const arrayValue = typeof value === 'number' ? [value] : value;
35
-
36
31
  switch (type) {
37
32
  case GL.FLOAT:
38
33
  return gl.uniform1fv(location, arrayValue);
39
-
40
34
  case GL.FLOAT_VEC2:
41
35
  return gl.uniform2fv(location, arrayValue);
42
-
43
36
  case GL.FLOAT_VEC3:
44
37
  return gl.uniform3fv(location, arrayValue);
45
-
46
38
  case GL.FLOAT_VEC4:
47
39
  return gl.uniform4fv(location, arrayValue);
48
-
49
40
  case GL.INT:
50
41
  return gl.uniform1iv(location, arrayValue);
51
-
52
42
  case GL.INT_VEC2:
53
43
  return gl.uniform2iv(location, arrayValue);
54
-
55
44
  case GL.INT_VEC3:
56
45
  return gl.uniform3iv(location, arrayValue);
57
-
58
46
  case GL.INT_VEC4:
59
47
  return gl.uniform4iv(location, arrayValue);
60
-
61
48
  case GL.BOOL:
62
49
  return gl.uniform1iv(location, arrayValue);
63
-
64
50
  case GL.BOOL_VEC2:
65
51
  return gl.uniform2iv(location, arrayValue);
66
-
67
52
  case GL.BOOL_VEC3:
68
53
  return gl.uniform3iv(location, arrayValue);
69
-
70
54
  case GL.BOOL_VEC4:
71
55
  return gl.uniform4iv(location, arrayValue);
72
-
73
56
  case GL.UNSIGNED_INT:
74
57
  return gl2.uniform1uiv(location, arrayValue, 1);
75
-
76
58
  case GL.UNSIGNED_INT_VEC2:
77
59
  return gl2.uniform2uiv(location, arrayValue, 2);
78
-
79
60
  case GL.UNSIGNED_INT_VEC3:
80
61
  return gl2.uniform3uiv(location, arrayValue, 3);
81
-
82
62
  case GL.UNSIGNED_INT_VEC4:
83
63
  return gl2.uniform4uiv(location, arrayValue, 4);
84
-
85
64
  case GL.FLOAT_MAT2:
86
65
  return gl.uniformMatrix2fv(location, false, arrayValue);
87
-
88
66
  case GL.FLOAT_MAT3:
89
67
  return gl.uniformMatrix3fv(location, false, arrayValue);
90
-
91
68
  case GL.FLOAT_MAT4:
92
69
  return gl.uniformMatrix4fv(location, false, arrayValue);
93
-
94
70
  case GL.FLOAT_MAT2x3:
95
71
  return gl2.uniformMatrix2x3fv(location, false, arrayValue);
96
-
97
72
  case GL.FLOAT_MAT2x4:
98
73
  return gl2.uniformMatrix2x4fv(location, false, arrayValue);
99
-
100
74
  case GL.FLOAT_MAT3x2:
101
75
  return gl2.uniformMatrix3x2fv(location, false, arrayValue);
102
-
103
76
  case GL.FLOAT_MAT3x4:
104
77
  return gl2.uniformMatrix3x4fv(location, false, arrayValue);
105
-
106
78
  case GL.FLOAT_MAT4x2:
107
79
  return gl2.uniformMatrix4x2fv(location, false, arrayValue);
108
-
109
80
  case GL.FLOAT_MAT4x3:
110
81
  return gl2.uniformMatrix4x3fv(location, false, arrayValue);
111
82
  }
112
-
113
83
  throw new Error('Illegal uniform');
114
84
  }
115
85
  //# sourceMappingURL=set-uniform.js.map
@@ -1 +1 @@
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":"AACA,OAAOA,EAAP,MAAe,oBAAf;AAIA,OAAO,SAASC,UAAT,CACLC,EADK,EAELC,QAFK,EAGLC,IAHK,EAILC,KAJK,EAKC;AACN,QAAMC,GAAG,GAAGJ,EAAZ;;AAEA,MAAI,OAAOG,KAAP,KAAiB,QAArB,EAA+B;AAE7B,YAAQD,IAAR;AAEE,WAAKJ,EAAE,CAACO,UAAR;AACA,WAAKP,EAAE,CAACQ,YAAR;AAEA,WAAKR,EAAE,CAACS,UAAR;AACA,WAAKT,EAAE,CAACU,iBAAR;AACA,WAAKV,EAAE,CAACW,gBAAR;AACA,WAAKX,EAAE,CAACY,uBAAR;AACA,WAAKZ,EAAE,CAACa,mBAAR;AACA,WAAKb,EAAE,CAACc,cAAR;AACA,WAAKd,EAAE,CAACe,cAAR;AACA,WAAKf,EAAE,CAACgB,gBAAR;AACA,WAAKhB,EAAE,CAACiB,oBAAR;AACA,WAAKjB,EAAE,CAACkB,uBAAR;AACA,WAAKlB,EAAE,CAACmB,uBAAR;AACA,WAAKnB,EAAE,CAACoB,yBAAR;AACA,WAAKpB,EAAE,CAACqB,6BAAR;AACE,eAAOnB,EAAE,CAACoB,SAAH,CAAanB,QAAb,EAAuBE,KAAvB,CAAP;AAlBJ;AAoBD;;AAGD,MAAIA,KAAK,KAAK,IAAd,EAAoB;AAClBA,IAAAA,KAAK,GAAG,CAAR;AACD;;AAED,MAAIA,KAAK,KAAK,KAAd,EAAqB;AACnBA,IAAAA,KAAK,GAAG,CAAR;AACD;;AACD,QAAMkB,UAAU,GAAI,OAAOlB,KAAP,KAAiB,QAAlB,GAA8B,CAACA,KAAD,CAA9B,GAAwCA,KAA3D;;AAGA,UAAQD,IAAR;AACE,SAAKJ,EAAE,CAACwB,KAAR;AAAe,aAAOtB,EAAE,CAACuB,UAAH,CAActB,QAAd,EAAwBoB,UAAxB,CAAP;;AACf,SAAKvB,EAAE,CAAC0B,UAAR;AAAoB,aAAOxB,EAAE,CAACyB,UAAH,CAAcxB,QAAd,EAAwBoB,UAAxB,CAAP;;AACpB,SAAKvB,EAAE,CAAC4B,UAAR;AAAoB,aAAO1B,EAAE,CAAC2B,UAAH,CAAc1B,QAAd,EAAwBoB,UAAxB,CAAP;;AACpB,SAAKvB,EAAE,CAAC8B,UAAR;AAAoB,aAAO5B,EAAE,CAAC6B,UAAH,CAAc5B,QAAd,EAAwBoB,UAAxB,CAAP;;AAEpB,SAAKvB,EAAE,CAACgC,GAAR;AAAa,aAAO9B,EAAE,CAAC+B,UAAH,CAAc9B,QAAd,EAAwBoB,UAAxB,CAAP;;AACb,SAAKvB,EAAE,CAACkC,QAAR;AAAkB,aAAOhC,EAAE,CAACiC,UAAH,CAAchC,QAAd,EAAwBoB,UAAxB,CAAP;;AAClB,SAAKvB,EAAE,CAACoC,QAAR;AAAkB,aAAOlC,EAAE,CAACmC,UAAH,CAAclC,QAAd,EAAwBoB,UAAxB,CAAP;;AAClB,SAAKvB,EAAE,CAACsC,QAAR;AAAkB,aAAOpC,EAAE,CAACqC,UAAH,CAAcpC,QAAd,EAAwBoB,UAAxB,CAAP;;AAElB,SAAKvB,EAAE,CAACwC,IAAR;AAAc,aAAOtC,EAAE,CAAC+B,UAAH,CAAc9B,QAAd,EAAwBoB,UAAxB,CAAP;;AACd,SAAKvB,EAAE,CAACyC,SAAR;AAAmB,aAAOvC,EAAE,CAACiC,UAAH,CAAchC,QAAd,EAAwBoB,UAAxB,CAAP;;AACnB,SAAKvB,EAAE,CAAC0C,SAAR;AAAmB,aAAOxC,EAAE,CAACmC,UAAH,CAAclC,QAAd,EAAwBoB,UAAxB,CAAP;;AACnB,SAAKvB,EAAE,CAAC2C,SAAR;AAAmB,aAAOzC,EAAE,CAACqC,UAAH,CAAcpC,QAAd,EAAwBoB,UAAxB,CAAP;;AAGnB,SAAKvB,EAAE,CAAC4C,YAAR;AAAsB,aAAOtC,GAAG,CAACuC,WAAJ,CAAgB1C,QAAhB,EAA0BoB,UAA1B,EAAsC,CAAtC,CAAP;;AACtB,SAAKvB,EAAE,CAAC8C,iBAAR;AAA2B,aAAOxC,GAAG,CAACyC,WAAJ,CAAgB5C,QAAhB,EAA0BoB,UAA1B,EAAsC,CAAtC,CAAP;;AAC3B,SAAKvB,EAAE,CAACgD,iBAAR;AAA2B,aAAO1C,GAAG,CAAC2C,WAAJ,CAAgB9C,QAAhB,EAA0BoB,UAA1B,EAAsC,CAAtC,CAAP;;AAC3B,SAAKvB,EAAE,CAACkD,iBAAR;AAA2B,aAAO5C,GAAG,CAAC6C,WAAJ,CAAgBhD,QAAhB,EAA0BoB,UAA1B,EAAsC,CAAtC,CAAP;;AAI3B,SAAKvB,EAAE,CAACoD,UAAR;AAAoB,aAAOlD,EAAE,CAACmD,gBAAH,CAAoBlD,QAApB,EAA8B,KAA9B,EAAqCoB,UAArC,CAAP;;AACpB,SAAKvB,EAAE,CAACsD,UAAR;AAAoB,aAAOpD,EAAE,CAACqD,gBAAH,CAAoBpD,QAApB,EAA8B,KAA9B,EAAqCoB,UAArC,CAAP;;AACpB,SAAKvB,EAAE,CAACwD,UAAR;AAAoB,aAAOtD,EAAE,CAACuD,gBAAH,CAAoBtD,QAApB,EAA8B,KAA9B,EAAqCoB,UAArC,CAAP;;AAGpB,SAAKvB,EAAE,CAAC0D,YAAR;AAAsB,aAAOpD,GAAG,CAACqD,kBAAJ,CAAuBxD,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;;AACtB,SAAKvB,EAAE,CAAC4D,YAAR;AAAsB,aAAOtD,GAAG,CAACuD,kBAAJ,CAAuB1D,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;;AACtB,SAAKvB,EAAE,CAAC8D,YAAR;AAAsB,aAAOxD,GAAG,CAACyD,kBAAJ,CAAuB5D,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;;AACtB,SAAKvB,EAAE,CAACgE,YAAR;AAAsB,aAAO1D,GAAG,CAAC2D,kBAAJ,CAAuB9D,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;;AACtB,SAAKvB,EAAE,CAACkE,YAAR;AAAsB,aAAO5D,GAAG,CAAC6D,kBAAJ,CAAuBhE,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;;AACtB,SAAKvB,EAAE,CAACoE,YAAR;AAAsB,aAAO9D,GAAG,CAAC+D,kBAAJ,CAAuBlE,QAAvB,EAAiC,KAAjC,EAAwCoB,UAAxC,CAAP;AAlCxB;;AAqCA,QAAM,IAAI+C,KAAJ,CAAU,iBAAV,CAAN;AACD","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: return 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"}
1
+ {"version":3,"file":"set-uniform.js","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"],"sources":["../../../../src/adapter/helpers/set-uniform.ts"],"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: return 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"],"mappings":"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"}
@@ -32,11 +32,9 @@ const COMPOSITE_GL_TYPES = {
32
32
  };
33
33
  export function decodeUniformType(uniformType) {
34
34
  const typeAndSize = COMPOSITE_GL_TYPES[uniformType];
35
-
36
35
  if (!typeAndSize) {
37
36
  throw new Error('uniform');
38
37
  }
39
-
40
38
  const [glType, components,, format] = typeAndSize;
41
39
  return {
42
40
  format,
@@ -46,11 +44,9 @@ export function decodeUniformType(uniformType) {
46
44
  }
47
45
  export function decodeAttributeType(attributeType) {
48
46
  const typeAndSize = COMPOSITE_GL_TYPES[attributeType];
49
-
50
47
  if (!typeAndSize) {
51
48
  throw new Error('attribute');
52
49
  }
53
-
54
50
  const [glType, components,,, format] = typeAndSize;
55
51
  return {
56
52
  format,
@@ -60,11 +56,9 @@ export function decodeAttributeType(attributeType) {
60
56
  }
61
57
  export function decomposeCompositeGLType(compositeGLType) {
62
58
  const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];
63
-
64
59
  if (!typeAndSize) {
65
60
  return null;
66
61
  }
67
-
68
62
  const [type, components] = typeAndSize;
69
63
  return {
70
64
  type,
@@ -79,13 +73,10 @@ export function getCompositeGLType(type, components) {
79
73
  case GL.UNSIGNED_SHORT:
80
74
  type = GL.FLOAT;
81
75
  break;
82
-
83
76
  default:
84
77
  }
85
-
86
78
  for (const glType in COMPOSITE_GL_TYPES) {
87
79
  const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];
88
-
89
80
  if (compType === type && compComponents === components) {
90
81
  return {
91
82
  glType: Number(glType),
@@ -93,7 +84,6 @@ export function getCompositeGLType(type, components) {
93
84
  };
94
85
  }
95
86
  }
96
-
97
87
  return null;
98
88
  }
99
89
  //# sourceMappingURL=uniforms.js.map