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

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 (417) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +117 -200
  3. package/dist/adapter/converters/device-parameters.js.map +1 -0
  4. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  6. package/dist/adapter/converters/renderbuffer-formats.js +172 -62
  7. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  8. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.js +151 -149
  10. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +847 -438
  14. package/dist/adapter/converters/texture-formats.js.map +1 -0
  15. package/dist/adapter/converters/vertex-formats.js +24 -15
  16. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  17. package/dist/adapter/device-helpers/device-features.js +84 -120
  18. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  19. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  20. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/device-limits.js +83 -88
  22. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  23. package/dist/adapter/device-helpers/get-device-info.js +37 -42
  24. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  25. package/dist/adapter/device-helpers/is-old-ie.js +8 -10
  26. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  27. package/dist/adapter/helpers/attribute-utils.js +57 -50
  28. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  29. package/dist/adapter/helpers/get-shader-info.d.ts +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-info.js +19 -21
  32. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  33. package/dist/adapter/helpers/get-shader-layout.js +251 -310
  34. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  35. package/dist/adapter/helpers/parse-shader-compiler-log.js +26 -32
  36. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  37. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  38. package/dist/adapter/helpers/set-uniform.js +80 -67
  39. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  40. package/dist/adapter/helpers/uniforms.js +75 -80
  41. package/dist/adapter/helpers/uniforms.js.map +1 -0
  42. package/dist/adapter/objects/constants-to-keys.js +26 -33
  43. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +70 -67
  47. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +158 -213
  50. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  51. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  52. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  53. package/dist/adapter/objects/webgl-vertex-array-object.js +66 -74
  54. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  55. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-buffer.js +118 -150
  57. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  58. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-buffer.js +41 -40
  61. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  62. package/dist/adapter/resources/webgl-command-encoder.js +37 -26
  63. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  64. package/dist/adapter/resources/webgl-external-texture.js +1 -91
  65. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  66. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-framebuffer.js +198 -231
  69. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  70. package/dist/adapter/resources/webgl-render-pass.js +11 -8
  71. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +289 -316
  74. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  75. package/dist/adapter/resources/webgl-sampler.js +35 -42
  76. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  77. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-shader.js +53 -57
  79. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  80. package/dist/adapter/resources/webgl-texture.d.ts +4 -4
  81. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-texture.js +697 -661
  83. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +35 -55
  86. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  87. package/dist/adapter/webgl-device.d.ts +5 -0
  88. package/dist/adapter/webgl-device.d.ts.map +1 -1
  89. package/dist/adapter/webgl-device.js +270 -287
  90. package/dist/adapter/webgl-device.js.map +1 -0
  91. package/dist/classic/accessor.js +103 -120
  92. package/dist/classic/accessor.js.map +1 -0
  93. package/dist/classic/buffer.d.ts +1 -1
  94. package/dist/classic/buffer.d.ts.map +1 -1
  95. package/dist/classic/buffer.js +300 -325
  96. package/dist/classic/buffer.js.map +1 -0
  97. package/dist/classic/typed-array-utils.d.ts +1 -1
  98. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  99. package/dist/classic/typed-array-utils.js +81 -91
  100. package/dist/classic/typed-array-utils.js.map +1 -0
  101. package/dist/context/context/create-browser-context.d.ts +3 -1
  102. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  103. package/dist/context/context/create-browser-context.js +49 -66
  104. package/dist/context/context/create-browser-context.js.map +1 -0
  105. package/dist/context/context/create-headless-context.d.ts +1 -1
  106. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  107. package/dist/context/context/create-headless-context.js +30 -24
  108. package/dist/context/context/create-headless-context.js.map +1 -0
  109. package/dist/context/context/webgl-checks.js +17 -25
  110. package/dist/context/context/webgl-checks.js.map +1 -0
  111. package/dist/context/debug/spector.d.ts +3 -1
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +50 -53
  114. package/dist/context/debug/spector.js.map +1 -0
  115. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  116. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  117. package/dist/context/debug/webgl-developer-tools.js +76 -107
  118. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  119. package/dist/context/parameters/unified-parameter-api.js +46 -93
  120. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  121. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  122. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  123. package/dist/context/parameters/webgl-parameter-tables.js +404 -462
  124. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  125. package/dist/context/polyfill/context-data.js +10 -16
  126. package/dist/context/polyfill/context-data.js.map +1 -0
  127. package/dist/context/polyfill/get-parameter-polyfill.js +71 -91
  128. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  129. package/dist/context/polyfill/polyfill-context.js +73 -75
  130. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  132. package/dist/context/polyfill/polyfill-table.js +116 -133
  133. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  135. package/dist/context/polyfill/polyfill-vertex-array-object.js +227 -255
  136. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +14 -16
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  140. package/dist/context/state-tracker/track-context-state.js +127 -183
  141. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  142. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  143. package/dist/context/state-tracker/with-parameters.js +29 -43
  144. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  145. package/dist/dist.dev.js +9205 -0
  146. package/dist/index.cjs +5948 -0
  147. package/dist/index.d.ts +0 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +25 -41
  150. package/dist/index.js.map +1 -0
  151. package/dist/types/webgl.d.ts +16 -16
  152. package/dist/types/webgl.d.ts.map +1 -1
  153. package/dist/types/webgl.js +1 -0
  154. package/dist/types/webgl.js.map +1 -0
  155. package/dist/types.d.ts +1 -1
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +1 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist.min.js +36 -0
  160. package/package.json +18 -9
  161. package/src/adapter/converters/device-parameters.ts +5 -2
  162. package/src/adapter/converters/sampler-parameters.ts +4 -2
  163. package/src/adapter/converters/texture-formats.ts +3 -1
  164. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  165. package/src/adapter/helpers/get-shader-info.ts +1 -1
  166. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  167. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  168. package/src/adapter/helpers/set-uniform.ts +2 -0
  169. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  170. package/src/adapter/objects/webgl-resource.ts +1 -1
  171. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  172. package/src/adapter/resources/webgl-buffer.ts +6 -6
  173. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  174. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  175. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  176. package/src/adapter/resources/webgl-shader.ts +1 -1
  177. package/src/adapter/resources/webgl-texture.ts +8 -9
  178. package/src/adapter/webgl-canvas-context.ts +2 -2
  179. package/src/adapter/webgl-device.ts +12 -2
  180. package/src/classic/accessor.ts +1 -1
  181. package/src/classic/buffer.ts +3 -3
  182. package/src/classic/typed-array-utils.ts +1 -1
  183. package/src/context/context/create-browser-context.ts +4 -2
  184. package/src/context/context/create-headless-context.ts +2 -2
  185. package/src/context/debug/spector.ts +5 -4
  186. package/src/context/debug/webgl-developer-tools.ts +1 -0
  187. package/src/context/polyfill/polyfill-table.ts +1 -0
  188. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  189. package/src/context/state-tracker/track-context-state.ts +6 -5
  190. package/src/context/state-tracker/with-parameters.ts +1 -1
  191. package/src/index.ts +1 -5
  192. package/src/types/webgl.ts +2 -0
  193. package/dist/bundle.d.ts +0 -2
  194. package/dist/bundle.d.ts.map +0 -1
  195. package/dist/bundle.js +0 -4
  196. package/dist/dist.min.js +0 -1
  197. package/dist/es5/adapter/converters/device-parameters.js +0 -139
  198. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  199. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -151
  200. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  201. package/dist/es5/adapter/converters/sampler-parameters.js +0 -182
  202. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  203. package/dist/es5/adapter/converters/texture-formats.js +0 -950
  204. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  205. package/dist/es5/adapter/converters/vertex-formats.js +0 -36
  206. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  207. package/dist/es5/adapter/device-helpers/device-features.js +0 -121
  208. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  209. package/dist/es5/adapter/device-helpers/device-limits.js +0 -54
  210. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -49
  212. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  213. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -15
  214. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  215. package/dist/es5/adapter/helpers/attribute-utils.js +0 -69
  216. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  217. package/dist/es5/adapter/helpers/get-shader-info.js +0 -31
  218. package/dist/es5/adapter/helpers/get-shader-info.js.map +0 -1
  219. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -311
  220. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  221. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -54
  222. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  223. package/dist/es5/adapter/helpers/set-uniform.js +0 -92
  224. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  225. package/dist/es5/adapter/helpers/uniforms.js +0 -88
  226. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  227. package/dist/es5/adapter/objects/constants-to-keys.js +0 -43
  228. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  229. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -122
  230. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  231. package/dist/es5/adapter/objects/webgl-resource.js +0 -233
  232. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  233. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -109
  234. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  235. package/dist/es5/adapter/resources/webgl-buffer.js +0 -196
  236. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  237. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -70
  238. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  239. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -80
  240. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  241. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  242. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  243. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -275
  244. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  245. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -45
  246. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  247. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -385
  248. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  249. package/dist/es5/adapter/resources/webgl-sampler.js +0 -75
  250. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/es5/adapter/resources/webgl-shader.js +0 -111
  252. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  253. package/dist/es5/adapter/resources/webgl-texture.js +0 -826
  254. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  255. package/dist/es5/adapter/webgl-canvas-context.js +0 -72
  256. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  257. package/dist/es5/adapter/webgl-device.js +0 -387
  258. package/dist/es5/adapter/webgl-device.js.map +0 -1
  259. package/dist/es5/bundle.js +0 -6
  260. package/dist/es5/bundle.js.map +0 -1
  261. package/dist/es5/classic/accessor.js +0 -151
  262. package/dist/es5/classic/accessor.js.map +0 -1
  263. package/dist/es5/classic/buffer.js +0 -398
  264. package/dist/es5/classic/buffer.js.map +0 -1
  265. package/dist/es5/classic/typed-array-utils.js +0 -99
  266. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  267. package/dist/es5/context/context/create-browser-context.js +0 -66
  268. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  269. package/dist/es5/context/context/create-headless-context.js +0 -47
  270. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  271. package/dist/es5/context/context/webgl-checks.js +0 -44
  272. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  273. package/dist/es5/context/debug/spector.js +0 -99
  274. package/dist/es5/context/debug/spector.js.map +0 -1
  275. package/dist/es5/context/debug/webgl-developer-tools.js +0 -146
  276. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  277. package/dist/es5/context/parameters/unified-parameter-api.js +0 -76
  278. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  279. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -346
  280. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  281. package/dist/es5/context/polyfill/context-data.js +0 -18
  282. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  283. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -69
  284. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  285. package/dist/es5/context/polyfill/polyfill-context.js +0 -109
  286. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  287. package/dist/es5/context/polyfill/polyfill-table.js +0 -143
  288. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  289. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -271
  290. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  291. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -23
  292. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  293. package/dist/es5/context/state-tracker/track-context-state.js +0 -167
  294. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  295. package/dist/es5/context/state-tracker/with-parameters.js +0 -40
  296. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  297. package/dist/es5/index.js +0 -249
  298. package/dist/es5/index.js.map +0 -1
  299. package/dist/es5/init.js +0 -7
  300. package/dist/es5/init.js.map +0 -1
  301. package/dist/es5/types/webgl.js +0 -5
  302. package/dist/es5/types/webgl.js.map +0 -1
  303. package/dist/es5/types.js +0 -2
  304. package/dist/es5/types.js.map +0 -1
  305. package/dist/esm/adapter/converters/device-parameters.js +0 -137
  306. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  307. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -181
  308. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  309. package/dist/esm/adapter/converters/sampler-parameters.js +0 -172
  310. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  311. package/dist/esm/adapter/converters/texture-formats.js +0 -901
  312. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  313. package/dist/esm/adapter/converters/vertex-formats.js +0 -29
  314. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  315. package/dist/esm/adapter/device-helpers/device-features.js +0 -95
  316. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  317. package/dist/esm/adapter/device-helpers/device-limits.js +0 -88
  318. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  319. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -42
  320. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  321. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -9
  322. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  323. package/dist/esm/adapter/helpers/attribute-utils.js +0 -64
  324. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/esm/adapter/helpers/get-shader-info.js +0 -25
  326. package/dist/esm/adapter/helpers/get-shader-info.js.map +0 -1
  327. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -282
  328. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  329. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -30
  330. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  331. package/dist/esm/adapter/helpers/set-uniform.js +0 -85
  332. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  333. package/dist/esm/adapter/helpers/uniforms.js +0 -89
  334. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  335. package/dist/esm/adapter/objects/constants-to-keys.js +0 -35
  336. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  337. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -78
  338. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  339. package/dist/esm/adapter/objects/webgl-resource.js +0 -163
  340. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  341. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -74
  342. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  343. package/dist/esm/adapter/resources/webgl-buffer.js +0 -134
  344. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  345. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -50
  346. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  347. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -41
  348. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  349. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  350. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  351. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -207
  352. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  353. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -14
  354. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  355. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -311
  356. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  357. package/dist/esm/adapter/resources/webgl-sampler.js +0 -42
  358. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  359. package/dist/esm/adapter/resources/webgl-shader.js +0 -62
  360. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  361. package/dist/esm/adapter/resources/webgl-texture.js +0 -714
  362. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  363. package/dist/esm/adapter/webgl-canvas-context.js +0 -41
  364. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  365. package/dist/esm/adapter/webgl-device.js +0 -276
  366. package/dist/esm/adapter/webgl-device.js.map +0 -1
  367. package/dist/esm/bundle.js +0 -4
  368. package/dist/esm/bundle.js.map +0 -1
  369. package/dist/esm/classic/accessor.js +0 -120
  370. package/dist/esm/classic/accessor.js.map +0 -1
  371. package/dist/esm/classic/buffer.js +0 -327
  372. package/dist/esm/classic/buffer.js.map +0 -1
  373. package/dist/esm/classic/typed-array-utils.js +0 -92
  374. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  375. package/dist/esm/context/context/create-browser-context.js +0 -53
  376. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  377. package/dist/esm/context/context/create-headless-context.js +0 -39
  378. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  379. package/dist/esm/context/context/webgl-checks.js +0 -31
  380. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  381. package/dist/esm/context/debug/spector.js +0 -64
  382. package/dist/esm/context/debug/spector.js.map +0 -1
  383. package/dist/esm/context/debug/webgl-developer-tools.js +0 -97
  384. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  385. package/dist/esm/context/parameters/unified-parameter-api.js +0 -55
  386. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  387. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -427
  388. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  389. package/dist/esm/context/polyfill/context-data.js +0 -12
  390. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  391. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -86
  392. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  393. package/dist/esm/context/polyfill/polyfill-context.js +0 -84
  394. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  395. package/dist/esm/context/polyfill/polyfill-table.js +0 -138
  396. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  397. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -265
  398. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  399. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -17
  400. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  401. package/dist/esm/context/state-tracker/track-context-state.js +0 -148
  402. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  403. package/dist/esm/context/state-tracker/with-parameters.js +0 -34
  404. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  405. package/dist/esm/index.js +0 -27
  406. package/dist/esm/index.js.map +0 -1
  407. package/dist/esm/init.js +0 -4
  408. package/dist/esm/init.js.map +0 -1
  409. package/dist/esm/types/webgl.js +0 -2
  410. package/dist/esm/types/webgl.js.map +0 -1
  411. package/dist/esm/types.js +0 -2
  412. package/dist/esm/types.js.map +0 -1
  413. package/dist/init.d.ts +0 -2
  414. package/dist/init.d.ts.map +0 -1
  415. package/dist/init.js +0 -3
  416. package/src/bundle.ts +0 -4
  417. package/src/init.ts +0 -4
@@ -1,339 +1,280 @@
1
- // luma.gl, MIT license
2
1
  import GL from '@luma.gl/constants';
3
- import { isWebGL2 } from '../../context/context/webgl-checks.js';
4
- import Accessor from '../../classic/accessor.js'; // TODO - should NOT depend on classic API
5
- import { decodeUniformType, decodeAttributeType } from './uniforms.js';
6
- import { getVertexFormat } from '../converters/vertex-formats.js';
7
- import { isSamplerUniform } from './uniforms.js';
8
- /**
9
- * Extract metadata describing binding information for a program's shaders
10
- * Note: `linkProgram()` needs to have been called
11
- * (although linking does not need to have been successful).
12
- */
2
+ import { isWebGL2 } from "../../context/context/webgl-checks.js";
3
+ import Accessor from "../../classic/accessor.js";
4
+ import { decodeUniformType, decodeAttributeType } from "./uniforms.js";
5
+ import { getVertexFormat } from "../converters/vertex-formats.js";
6
+ import { isSamplerUniform } from "./uniforms.js";
13
7
  export function getShaderLayout(gl, program) {
14
- const programBindings = getProgramBindings(gl, program);
15
- const shaderLayout = {
16
- attributes: [],
17
- bindings: []
18
- };
19
- for (const attribute of programBindings.attributes) {
20
- // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...
21
- const size = Math.min(attribute.accessor.size, 4);
22
- const format =
23
- // attribute.accessor.format ||
24
- getVertexFormat(attribute.accessor.type || GL.FLOAT, size);
25
- shaderLayout.attributes.push({
26
- name: attribute.name,
27
- location: attribute.location,
28
- format,
29
- stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
30
- });
31
- }
32
- // Uniform blocks
33
- for (const uniformBlock of programBindings.uniformBlocks) {
34
- const uniforms = uniformBlock.uniforms.map((uniform) => ({
35
- name: uniform.name,
36
- format: uniform.format,
37
- byteOffset: uniform.byteOffset,
38
- byteStride: uniform.byteStride,
39
- arrayLength: uniform.arrayLength
40
- }));
41
- shaderLayout.bindings.push({
42
- type: 'uniform',
43
- name: uniformBlock.name,
44
- location: uniformBlock.location,
45
- visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),
46
- minBindingSize: uniformBlock.byteLength,
47
- uniforms
48
- });
49
- }
50
- let textureUnit = 0;
51
- for (const uniform of programBindings.uniforms) {
52
- if (isSamplerUniform(uniform.type)) {
53
- const { viewDimension, sampleType } = getSamplerInfo(uniform.type);
54
- shaderLayout.bindings.push({
55
- type: 'texture',
56
- name: uniform.name,
57
- location: textureUnit,
58
- viewDimension,
59
- sampleType
60
- });
61
- // @ts-expect-error
62
- uniform.textureUnit = textureUnit;
63
- textureUnit += 1;
64
- }
65
- }
66
- const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];
67
- if (uniforms.length) {
68
- shaderLayout.uniforms = uniforms;
69
- }
70
- if (programBindings.varyings?.length) {
71
- shaderLayout.varyings = programBindings.varyings;
8
+ var _programBindings$unif, _programBindings$vary;
9
+ const programBindings = getProgramBindings(gl, program);
10
+ const shaderLayout = {
11
+ attributes: [],
12
+ bindings: []
13
+ };
14
+ for (const attribute of programBindings.attributes) {
15
+ const size = Math.min(attribute.accessor.size, 4);
16
+ const format = getVertexFormat(attribute.accessor.type || GL.FLOAT, size);
17
+ shaderLayout.attributes.push({
18
+ name: attribute.name,
19
+ location: attribute.location,
20
+ format,
21
+ stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
22
+ });
23
+ }
24
+ for (const uniformBlock of programBindings.uniformBlocks) {
25
+ const uniforms = uniformBlock.uniforms.map(uniform => ({
26
+ name: uniform.name,
27
+ format: uniform.format,
28
+ byteOffset: uniform.byteOffset,
29
+ byteStride: uniform.byteStride,
30
+ arrayLength: uniform.arrayLength
31
+ }));
32
+ shaderLayout.bindings.push({
33
+ type: 'uniform',
34
+ name: uniformBlock.name,
35
+ location: uniformBlock.location,
36
+ visibility: (uniformBlock.vertex ? 0x1 : 0) & (uniformBlock.fragment ? 0x2 : 0),
37
+ minBindingSize: uniformBlock.byteLength,
38
+ uniforms
39
+ });
40
+ }
41
+ let textureUnit = 0;
42
+ for (const uniform of programBindings.uniforms) {
43
+ if (isSamplerUniform(uniform.type)) {
44
+ const {
45
+ viewDimension,
46
+ sampleType
47
+ } = getSamplerInfo(uniform.type);
48
+ shaderLayout.bindings.push({
49
+ type: 'texture',
50
+ name: uniform.name,
51
+ location: textureUnit,
52
+ viewDimension,
53
+ sampleType
54
+ });
55
+ uniform.textureUnit = textureUnit;
56
+ textureUnit += 1;
72
57
  }
73
- return shaderLayout;
58
+ }
59
+ const uniforms = ((_programBindings$unif = programBindings.uniforms) === null || _programBindings$unif === void 0 ? void 0 : _programBindings$unif.filter(uniform => uniform.location !== null)) || [];
60
+ if (uniforms.length) {
61
+ shaderLayout.uniforms = uniforms;
62
+ }
63
+ if ((_programBindings$vary = programBindings.varyings) !== null && _programBindings$vary !== void 0 && _programBindings$vary.length) {
64
+ shaderLayout.varyings = programBindings.varyings;
65
+ }
66
+ return shaderLayout;
74
67
  }
75
- /**
76
- * Extract metadata describing binding information for a program's shaders
77
- * Note: `linkProgram()` needs to have been called
78
- * (although linking does not need to have been successful).
79
- */
80
68
  export function getProgramBindings(gl, program) {
81
- const config = {
82
- attributes: readAttributeBindings(gl, program),
83
- uniforms: readUniformBindings(gl, program),
84
- uniformBlocks: readUniformBlocks(gl, program),
85
- varyings: readVaryings(gl, program)
86
- };
87
- Object.seal(config);
88
- return config;
89
- // generateWebGPUStyleBindings(bindings);
69
+ const config = {
70
+ attributes: readAttributeBindings(gl, program),
71
+ uniforms: readUniformBindings(gl, program),
72
+ uniformBlocks: readUniformBlocks(gl, program),
73
+ varyings: readVaryings(gl, program)
74
+ };
75
+ Object.seal(config);
76
+ return config;
90
77
  }
91
- /**
92
- * Extract info about all transform feedback varyings
93
- *
94
- * linkProgram needs to have been called, although linking does not need to have been successful
95
- */
96
78
  function readAttributeBindings(gl, program) {
97
- const attributes = [];
98
- const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
99
- for (let index = 0; index < count; index++) {
100
- const activeInfo = gl.getActiveAttrib(program, index);
101
- if (!activeInfo) {
102
- throw new Error('activeInfo');
103
- }
104
- const { name, type: compositeType, size } = activeInfo;
105
- const location = gl.getAttribLocation(program, name);
106
- // Add only user provided attributes, for built-in attributes like
107
- // `gl_InstanceID` locaiton will be < 0
108
- if (location >= 0) {
109
- const { glType, components } = decodeAttributeType(compositeType);
110
- ;
111
- const accessor = { type: glType, size: size * components };
112
- // Any attribute name containing the word "instance" will be assumed to be instanced
113
- if (/instance/i.test(name)) {
114
- accessor.divisor = 1;
115
- }
116
- const attributeInfo = { location, name, accessor: new Accessor(accessor) }; // Base values
117
- attributes.push(attributeInfo);
118
- }
79
+ const attributes = [];
80
+ const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
81
+ for (let index = 0; index < count; index++) {
82
+ const activeInfo = gl.getActiveAttrib(program, index);
83
+ if (!activeInfo) {
84
+ throw new Error('activeInfo');
85
+ }
86
+ const {
87
+ name,
88
+ type: compositeType,
89
+ size
90
+ } = activeInfo;
91
+ const location = gl.getAttribLocation(program, name);
92
+ if (location >= 0) {
93
+ const {
94
+ glType,
95
+ components
96
+ } = decodeAttributeType(compositeType);
97
+ const accessor = {
98
+ type: glType,
99
+ size: size * components
100
+ };
101
+ if (/instance/i.test(name)) {
102
+ accessor.divisor = 1;
103
+ }
104
+ const attributeInfo = {
105
+ location,
106
+ name,
107
+ accessor: new Accessor(accessor)
108
+ };
109
+ attributes.push(attributeInfo);
119
110
  }
120
- attributes.sort((a, b) => a.location - b.location);
121
- return attributes;
111
+ }
112
+ attributes.sort((a, b) => a.location - b.location);
113
+ return attributes;
122
114
  }
123
- /**
124
- * Extract info about all transform feedback varyings
125
- *
126
- * linkProgram needs to have been called, although linking does not need to have been successful
127
- */
128
115
  function readVaryings(gl, program) {
129
- if (!isWebGL2(gl)) {
130
- return [];
131
- }
132
- const gl2 = gl;
133
- const varyings = [];
134
- const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
135
- for (let location = 0; location < count; location++) {
136
- const activeInfo = gl2.getTransformFeedbackVarying(program, location);
137
- if (!activeInfo) {
138
- throw new Error('activeInfo');
139
- }
140
- const { name, type: compositeType, size } = activeInfo;
141
- const { glType, components } = decodeUniformType(compositeType);
142
- ;
143
- const accessor = new Accessor({ type: glType, size: size * components });
144
- const varying = { location, name, accessor }; // Base values
145
- varyings.push(varying);
116
+ if (!isWebGL2(gl)) {
117
+ return [];
118
+ }
119
+ const gl2 = gl;
120
+ const varyings = [];
121
+ const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
122
+ for (let location = 0; location < count; location++) {
123
+ const activeInfo = gl2.getTransformFeedbackVarying(program, location);
124
+ if (!activeInfo) {
125
+ throw new Error('activeInfo');
146
126
  }
147
- varyings.sort((a, b) => a.location - b.location);
148
- return varyings;
127
+ const {
128
+ name,
129
+ type: compositeType,
130
+ size
131
+ } = activeInfo;
132
+ const {
133
+ glType,
134
+ components
135
+ } = decodeUniformType(compositeType);
136
+ const accessor = new Accessor({
137
+ type: glType,
138
+ size: size * components
139
+ });
140
+ const varying = {
141
+ location,
142
+ name,
143
+ accessor
144
+ };
145
+ varyings.push(varying);
146
+ }
147
+ varyings.sort((a, b) => a.location - b.location);
148
+ return varyings;
149
149
  }
150
- /**
151
- * Extract info about all uniforms
152
- *
153
- * Query uniform locations and build name to setter map.
154
- */
155
150
  function readUniformBindings(gl, program) {
156
- const uniforms = [];
157
- const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
158
- for (let i = 0; i < uniformCount; i++) {
159
- const activeInfo = gl.getActiveUniform(program, i);
160
- if (!activeInfo) {
161
- throw new Error('activeInfo');
162
- }
163
- const { name: rawName, size, type } = activeInfo;
164
- const { name, isArray } = parseUniformName(rawName);
165
- let webglLocation = gl.getUniformLocation(program, name);
166
- const uniformInfo = {
167
- // WebGL locations are uniquely typed but just numbers
168
- location: webglLocation,
169
- name,
170
- size,
171
- type,
172
- isArray
151
+ const uniforms = [];
152
+ const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
153
+ for (let i = 0; i < uniformCount; i++) {
154
+ const activeInfo = gl.getActiveUniform(program, i);
155
+ if (!activeInfo) {
156
+ throw new Error('activeInfo');
157
+ }
158
+ const {
159
+ name: rawName,
160
+ size,
161
+ type
162
+ } = activeInfo;
163
+ const {
164
+ name,
165
+ isArray
166
+ } = parseUniformName(rawName);
167
+ let webglLocation = gl.getUniformLocation(program, name);
168
+ const uniformInfo = {
169
+ location: webglLocation,
170
+ name,
171
+ size,
172
+ type,
173
+ isArray
174
+ };
175
+ uniforms.push(uniformInfo);
176
+ if (uniformInfo.size > 1) {
177
+ for (let j = 0; j < uniformInfo.size; j++) {
178
+ const elementName = "".concat(name, "[").concat(j, "]");
179
+ webglLocation = gl.getUniformLocation(program, elementName);
180
+ const arrayElementUniformInfo = {
181
+ ...uniformInfo,
182
+ name: elementName,
183
+ location: webglLocation
173
184
  };
174
- uniforms.push(uniformInfo);
175
- // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks
176
- if (uniformInfo.size > 1) {
177
- for (let j = 0; j < uniformInfo.size; j++) {
178
- const elementName = `${name}[${j}]`;
179
- webglLocation = gl.getUniformLocation(program, elementName);
180
- const arrayElementUniformInfo = {
181
- ...uniformInfo,
182
- name: elementName,
183
- location: webglLocation
184
- };
185
- uniforms.push(arrayElementUniformInfo);
186
- }
187
- }
185
+ uniforms.push(arrayElementUniformInfo);
186
+ }
188
187
  }
189
- return uniforms;
188
+ }
189
+ return uniforms;
190
190
  }
191
- /**
192
- * Extract info about all "active" uniform blocks
193
- *
194
- * ("Active" just means that unused (aka inactive) blocks may have been
195
- * optimized away during linking)
196
- */
197
191
  function readUniformBlocks(gl, program) {
198
- if (!isWebGL2(gl)) {
199
- return [];
200
- }
201
- const gl2 = gl;
202
- const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
203
- const uniformBlocks = [];
204
- const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
205
- for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
206
- const blockInfo = {
207
- name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
208
- location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
209
- byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
210
- vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
211
- fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
212
- uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
213
- uniforms: []
214
- };
215
- const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) || [];
216
- const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
217
- const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
218
- // const uniformBlockIndex = gl2.getActiveUniforms(
219
- // program,
220
- // uniformIndices,
221
- // GL.UNIFORM_BLOCK_INDEX
222
- // ); // Array of GLint indicating the block indices of the uniforms.
223
- const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
224
- const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
225
- // const uniformMatrixStride = gl2.getActiveUniforms(
226
- // program,
227
- // uniformIndices,
228
- // GL.UNIFORM_MATRIX_STRIDE
229
- // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
230
- // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
231
- for (let i = 0; i < blockInfo.uniformCount; ++i) {
232
- const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
233
- if (!activeInfo) {
234
- throw new Error('activeInfo');
235
- }
236
- blockInfo.uniforms.push({
237
- name: activeInfo.name,
238
- format: decodeUniformType(uniformType[i]).format,
239
- type: uniformType[i],
240
- arrayLength: uniformArrayLength[i],
241
- byteOffset: uniformOffset[i],
242
- byteStride: uniformStride[i],
243
- // matrixStride: uniformStride[i],
244
- // rowMajor: uniformRowMajor[i]
245
- });
246
- }
247
- uniformBlocks.push(blockInfo);
192
+ if (!isWebGL2(gl)) {
193
+ return [];
194
+ }
195
+ const gl2 = gl;
196
+ const getBlockParameter = (blockIndex, pname) => gl2.getActiveUniformBlockParameter(program, blockIndex, pname);
197
+ const uniformBlocks = [];
198
+ const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
199
+ for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
200
+ const blockInfo = {
201
+ name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
202
+ location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
203
+ byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
204
+ vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
205
+ fragment: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
206
+ uniformCount: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
207
+ uniforms: []
208
+ };
209
+ const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) || [];
210
+ const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE);
211
+ const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE);
212
+ const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET);
213
+ const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE);
214
+ for (let i = 0; i < blockInfo.uniformCount; ++i) {
215
+ const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
216
+ if (!activeInfo) {
217
+ throw new Error('activeInfo');
218
+ }
219
+ blockInfo.uniforms.push({
220
+ name: activeInfo.name,
221
+ format: decodeUniformType(uniformType[i]).format,
222
+ type: uniformType[i],
223
+ arrayLength: uniformArrayLength[i],
224
+ byteOffset: uniformOffset[i],
225
+ byteStride: uniformStride[i]
226
+ });
248
227
  }
249
- uniformBlocks.sort((a, b) => a.location - b.location);
250
- return uniformBlocks;
228
+ uniformBlocks.push(blockInfo);
229
+ }
230
+ uniformBlocks.sort((a, b) => a.location - b.location);
231
+ return uniformBlocks;
251
232
  }
252
233
  const SAMPLER_UNIFORMS_GL_TO_GPU = {
253
- [GL.SAMPLER_2D]: ['2d', 'float'],
254
- [GL.SAMPLER_CUBE]: ['cube', 'float'],
255
- [GL.SAMPLER_3D]: ['3d', 'float'],
256
- [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],
257
- [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],
258
- [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],
259
- [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],
260
- [GL.INT_SAMPLER_2D]: ['2d', 'sint'],
261
- [GL.INT_SAMPLER_3D]: ['3d', 'sint'],
262
- [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],
263
- [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],
264
- [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],
265
- [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],
266
- [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],
267
- [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
234
+ [GL.SAMPLER_2D]: ['2d', 'float'],
235
+ [GL.SAMPLER_CUBE]: ['cube', 'float'],
236
+ [GL.SAMPLER_3D]: ['3d', 'float'],
237
+ [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],
238
+ [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],
239
+ [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],
240
+ [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],
241
+ [GL.INT_SAMPLER_2D]: ['2d', 'sint'],
242
+ [GL.INT_SAMPLER_3D]: ['3d', 'sint'],
243
+ [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],
244
+ [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint'],
245
+ [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'uint'],
246
+ [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'uint'],
247
+ [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'uint'],
248
+ [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
268
249
  };
269
250
  function getSamplerInfo(type) {
270
- let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
271
- if (!sampler) {
272
- throw new Error('sampler');
273
- }
274
- const [viewDimension, sampleType] = sampler;
275
- return { viewDimension, sampleType };
251
+ const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
252
+ if (!sampler) {
253
+ throw new Error('sampler');
254
+ }
255
+ const [viewDimension, sampleType] = sampler;
256
+ return {
257
+ viewDimension,
258
+ sampleType
259
+ };
276
260
  }
277
- // HELPERS
278
261
  function parseUniformName(name) {
279
- // Shortcut to avoid redundant or bad matches
280
- if (name[name.length - 1] !== ']') {
281
- return {
282
- name,
283
- length: 1,
284
- isArray: false
285
- };
286
- }
287
- // if array name then clean the array brackets
288
- const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
289
- const matches = name.match(UNIFORM_NAME_REGEXP);
290
- if (!matches || matches.length < 2) {
291
- throw new Error(`Failed to parse GLSL uniform name ${name}`);
292
- }
262
+ if (name[name.length - 1] !== ']') {
293
263
  return {
294
- name: matches[1],
295
- length: matches[2] ? 1 : 0,
296
- isArray: Boolean(matches[2])
264
+ name,
265
+ length: 1,
266
+ isArray: false
297
267
  };
298
- }
299
- /**
300
- * TODO - verify this is a copy of above and delete
301
- * import type {TextureFormat} from '@luma.gl/api';
302
- * Extract info about all "active" uniform blocks
303
- * ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
304
- *
305
- function getUniformBlockBindings(gl: WebGLRenderingContext, program): Binding[] {
306
- if (!isWebGL2(gl)) {
307
- return;
308
268
  }
309
- const bindings: Binding[] = [];
310
- const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
311
- for (let blockIndex = 0; blockIndex < count; blockIndex++) {
312
- const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
313
- const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
314
- const visibility = (vertex) + (fragment);
315
- const binding: BufferBinding = {
316
- location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
317
- // name: gl.getActiveUniformBlockName(program, blockIndex),
318
- type: 'uniform',
319
- visibility,
320
- minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
321
- // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
322
- // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
323
- }
324
- bindings.push(binding);
325
- }
326
- return bindings;
327
- }
328
-
329
- function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
330
- for (const bindGroup of bindings) {
331
- for (const binding of bindGroup) {
332
-
333
- }
269
+ const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
270
+ const matches = UNIFORM_NAME_REGEXP.exec(name);
271
+ if (!matches || matches.length < 2) {
272
+ throw new Error("Failed to parse GLSL uniform name ".concat(name));
334
273
  }
335
-
336
- // Set up indirection table
337
- // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
274
+ return {
275
+ name: matches[1],
276
+ length: matches[2] ? 1 : 0,
277
+ isArray: Boolean(matches[2])
278
+ };
338
279
  }
339
- */
280
+ //# sourceMappingURL=get-shader-layout.js.map