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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +14 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +28 -46
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +48 -16
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +13 -20
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  36. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  38. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  39. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  40. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  42. package/dist/adapter/helpers/get-shader-info.js +25 -0
  43. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  44. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  45. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  46. package/dist/adapter/helpers/get-shader-layout.js +58 -113
  47. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  48. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  52. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  53. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  54. package/dist/adapter/helpers/set-uniform.js +3 -33
  55. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  56. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  58. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  59. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  60. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  61. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  62. package/dist/adapter/objects/constants-to-keys.js +1 -28
  63. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  64. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  66. package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
  67. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  68. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  69. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  70. package/dist/adapter/objects/webgl-resource.js +19 -75
  71. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  72. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +39 -11
  73. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  74. package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
  75. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  76. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  77. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-buffer.js +43 -71
  79. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  80. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  81. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-command-buffer.js +169 -41
  83. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  84. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  85. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  86. package/dist/adapter/resources/webgl-command-encoder.js +9 -18
  87. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  88. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  89. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  90. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-framebuffer.js +41 -149
  92. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  93. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  94. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-render-pass.js +88 -9
  96. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  97. package/dist/adapter/resources/webgl-render-pipeline.d.ts +52 -14
  98. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-render-pipeline.js +119 -182
  100. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  101. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  102. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-sampler.js +7 -15
  104. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  105. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  106. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  107. package/dist/adapter/resources/webgl-shader.js +9 -22
  108. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  109. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  110. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  111. package/dist/adapter/resources/webgl-texture.js +98 -213
  112. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  113. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  114. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  115. package/dist/adapter/webgl-canvas-context.js +8 -20
  116. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  117. package/dist/adapter/webgl-device.d.ts +64 -41
  118. package/dist/adapter/webgl-device.d.ts.map +1 -1
  119. package/dist/adapter/webgl-device.js +133 -113
  120. package/dist/adapter/webgl-device.js.map +1 -1
  121. package/dist/classic/accessor.d.ts +3 -3
  122. package/dist/classic/accessor.d.ts.map +1 -1
  123. package/dist/classic/accessor.js +14 -38
  124. package/dist/classic/accessor.js.map +1 -1
  125. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
  126. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  127. package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
  128. package/dist/classic/buffer-with-accessor.js.map +1 -0
  129. package/dist/classic/clear.d.ts +22 -0
  130. package/dist/classic/clear.d.ts.map +1 -0
  131. package/dist/classic/clear.js +88 -0
  132. package/dist/classic/clear.js.map +1 -0
  133. package/dist/classic/copy-and-blit.d.ts +62 -0
  134. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  135. package/dist/classic/copy-and-blit.js +202 -0
  136. package/dist/classic/copy-and-blit.js.map +1 -0
  137. package/dist/classic/format-utils.d.ts +3 -0
  138. package/dist/classic/format-utils.d.ts.map +1 -0
  139. package/dist/classic/format-utils.js +38 -0
  140. package/dist/classic/format-utils.js.map +1 -0
  141. package/dist/classic/typed-array-utils.d.ts +15 -17
  142. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  143. package/dist/classic/typed-array-utils.js +1 -21
  144. package/dist/classic/typed-array-utils.js.map +1 -1
  145. package/dist/context/context/create-browser-context.d.ts +40 -0
  146. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  147. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
  148. package/dist/context/context/create-browser-context.js.map +1 -0
  149. package/dist/context/context/create-headless-context.d.ts +9 -0
  150. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  151. package/dist/context/context/create-headless-context.js +42 -0
  152. package/dist/context/context/create-headless-context.js.map +1 -0
  153. package/dist/context/context/webgl-checks.js +1 -4
  154. package/dist/context/context/webgl-checks.js.map +1 -1
  155. package/dist/context/debug/spector.d.ts +1 -2
  156. package/dist/context/debug/spector.d.ts.map +1 -1
  157. package/dist/context/debug/spector.js +8 -20
  158. package/dist/context/debug/spector.js.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  160. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.js +11 -34
  162. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
  164. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.js +8 -18
  166. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  168. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  170. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  171. package/dist/context/polyfill/context-data.d.ts +13 -0
  172. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  173. package/dist/context/polyfill/context-data.js +12 -0
  174. package/dist/context/polyfill/context-data.js.map +1 -0
  175. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  176. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  177. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  178. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  179. package/dist/context/polyfill/polyfill-context.js +21 -29
  180. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  182. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  183. package/dist/context/polyfill/polyfill-table.js +10 -32
  184. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  187. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +16 -51
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +7 -9
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +10245 -0
  198. package/dist/index.cjs +6550 -0
  199. package/dist/index.d.ts +25 -22
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +37 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +88 -35
  209. package/src/adapter/converters/sampler-parameters.ts +19 -9
  210. package/src/adapter/converters/shader-formats.ts +41 -0
  211. package/src/adapter/converters/texture-formats.ts +264 -194
  212. package/src/adapter/converters/vertex-formats.ts +68 -10
  213. package/src/adapter/device-helpers/device-features.ts +10 -3
  214. package/src/adapter/device-helpers/device-limits.ts +3 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +14 -10
  216. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +36 -21
  217. package/src/adapter/helpers/get-shader-info.ts +40 -0
  218. package/src/adapter/helpers/get-shader-layout.ts +120 -146
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  220. package/src/adapter/helpers/set-uniform.ts +7 -6
  221. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +4 -5
  222. package/src/adapter/objects/constants-to-keys.ts +3 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
  224. package/src/adapter/objects/webgl-resource.ts +14 -23
  225. package/src/adapter/objects/webgl-vertex-array-object.ts +202 -37
  226. package/src/adapter/resources/webgl-buffer.ts +56 -58
  227. package/src/adapter/resources/webgl-command-buffer.ts +332 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +17 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +2 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +88 -133
  231. package/src/adapter/resources/webgl-render-pass.ts +155 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +232 -131
  233. package/src/adapter/resources/webgl-sampler.ts +13 -8
  234. package/src/adapter/resources/webgl-shader.ts +11 -10
  235. package/src/adapter/resources/webgl-texture.ts +113 -85
  236. package/src/adapter/webgl-canvas-context.ts +14 -14
  237. package/src/adapter/webgl-device.ts +192 -77
  238. package/src/classic/accessor.ts +4 -17
  239. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
  240. package/src/classic/clear.ts +110 -0
  241. package/src/classic/copy-and-blit.ts +308 -0
  242. package/src/classic/format-utils.ts +43 -0
  243. package/src/classic/typed-array-utils.ts +18 -27
  244. package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
  245. package/src/context/context/create-headless-context.ts +48 -0
  246. package/src/context/context/webgl-checks.ts +1 -1
  247. package/src/context/debug/spector.ts +7 -6
  248. package/src/context/debug/webgl-developer-tools.ts +21 -15
  249. package/src/context/parameters/unified-parameter-api.ts +20 -14
  250. package/src/context/parameters/webgl-parameter-tables.ts +117 -98
  251. package/src/context/polyfill/context-data.ts +27 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
  253. package/src/context/polyfill/polyfill-context.ts +7 -9
  254. package/src/context/polyfill/polyfill-table.ts +18 -16
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  256. package/src/context/state-tracker/track-context-state.ts +14 -13
  257. package/src/context/state-tracker/with-parameters.ts +8 -2
  258. package/src/index.ts +42 -33
  259. package/src/types.ts +2 -0
  260. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  262. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  263. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  264. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  265. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  267. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  268. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  269. package/dist/adapter/helpers/uniforms.js.map +0 -1
  270. package/dist/bundle.d.ts +0 -2
  271. package/dist/bundle.d.ts.map +0 -1
  272. package/dist/bundle.js +0 -5
  273. package/dist/bundle.js.map +0 -1
  274. package/dist/classic/buffer.d.ts.map +0 -1
  275. package/dist/classic/buffer.js.map +0 -1
  276. package/dist/context/context/context-state.d.ts +0 -18
  277. package/dist/context/context/context-state.d.ts.map +0 -1
  278. package/dist/context/context/context-state.js +0 -26
  279. package/dist/context/context/context-state.js.map +0 -1
  280. package/dist/context/context/create-context.d.ts +0 -41
  281. package/dist/context/context/create-context.d.ts.map +0 -1
  282. package/dist/context/context/create-context.js +0 -49
  283. package/dist/context/context/create-context.js.map +0 -1
  284. package/dist/context/context/device-pixels.d.ts +0 -25
  285. package/dist/context/context/device-pixels.d.ts.map +0 -1
  286. package/dist/context/context/device-pixels.js +0 -98
  287. package/dist/context/context/device-pixels.js.map +0 -1
  288. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  289. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  290. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  291. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  292. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  293. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  294. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  295. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  296. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  297. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  298. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  299. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  300. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  301. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  302. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  303. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  304. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  305. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  306. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  307. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  308. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  309. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  310. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  311. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  312. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  313. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  314. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  315. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  316. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  317. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  318. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  319. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  320. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  321. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  322. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  323. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  324. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  325. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  326. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  327. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  328. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  329. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  330. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  331. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  332. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  333. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  335. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  337. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  339. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  341. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  343. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  344. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  345. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  346. package/dist/es5/adapter/webgl-device.js +0 -399
  347. package/dist/es5/adapter/webgl-device.js.map +0 -1
  348. package/dist/es5/bundle.js +0 -7
  349. package/dist/es5/bundle.js.map +0 -1
  350. package/dist/es5/classic/accessor.js +0 -181
  351. package/dist/es5/classic/accessor.js.map +0 -1
  352. package/dist/es5/classic/buffer.js +0 -470
  353. package/dist/es5/classic/buffer.js.map +0 -1
  354. package/dist/es5/classic/typed-array-utils.js +0 -126
  355. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  356. package/dist/es5/context/context/context-state.js +0 -31
  357. package/dist/es5/context/context/context-state.js.map +0 -1
  358. package/dist/es5/context/context/create-context.js +0 -69
  359. package/dist/es5/context/context/create-context.js.map +0 -1
  360. package/dist/es5/context/context/device-pixels.js +0 -115
  361. package/dist/es5/context/context/device-pixels.js.map +0 -1
  362. package/dist/es5/context/context/webgl-checks.js +0 -54
  363. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  364. package/dist/es5/context/debug/spector.js +0 -133
  365. package/dist/es5/context/debug/spector.js.map +0 -1
  366. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  367. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  368. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  369. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  370. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  371. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  372. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  373. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  374. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  375. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  376. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  377. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  378. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  379. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  380. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  381. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  382. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  383. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  384. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  385. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  386. package/dist/es5/index.js +0 -276
  387. package/dist/es5/index.js.map +0 -1
  388. package/dist/es5/init.js +0 -10
  389. package/dist/es5/init.js.map +0 -1
  390. package/dist/es5/types/webgl.js +0 -6
  391. package/dist/es5/types/webgl.js.map +0 -1
  392. package/dist/es5/types.js +0 -2
  393. package/dist/es5/types.js.map +0 -1
  394. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  395. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  396. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  397. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  398. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  399. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  400. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  401. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  402. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  403. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  404. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  405. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  406. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  407. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  408. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  409. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  410. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  411. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  412. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  413. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  414. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  415. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  416. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  417. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  418. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  419. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  420. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  421. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  422. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  423. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  424. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  425. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  426. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  427. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  428. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  429. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  430. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  431. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  432. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  433. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  434. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  435. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  436. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  437. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  438. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  439. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  441. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  443. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  445. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  447. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  449. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  450. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  451. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  452. package/dist/esm/adapter/webgl-device.js +0 -280
  453. package/dist/esm/adapter/webgl-device.js.map +0 -1
  454. package/dist/esm/bundle.js +0 -5
  455. package/dist/esm/bundle.js.map +0 -1
  456. package/dist/esm/classic/accessor.js +0 -144
  457. package/dist/esm/classic/accessor.js.map +0 -1
  458. package/dist/esm/classic/buffer.js +0 -384
  459. package/dist/esm/classic/buffer.js.map +0 -1
  460. package/dist/esm/classic/typed-array-utils.js +0 -112
  461. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  462. package/dist/esm/context/context/context-state.js +0 -26
  463. package/dist/esm/context/context/context-state.js.map +0 -1
  464. package/dist/esm/context/context/create-context.js.map +0 -1
  465. package/dist/esm/context/context/device-pixels.js +0 -98
  466. package/dist/esm/context/context/device-pixels.js.map +0 -1
  467. package/dist/esm/context/context/webgl-checks.js +0 -34
  468. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  469. package/dist/esm/context/debug/spector.js +0 -76
  470. package/dist/esm/context/debug/spector.js.map +0 -1
  471. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  472. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  473. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  474. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  475. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  476. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  477. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  478. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  479. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  480. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  481. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  482. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  483. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  484. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  485. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  486. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  487. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  488. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  489. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  490. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  491. package/dist/esm/index.js +0 -27
  492. package/dist/esm/index.js.map +0 -1
  493. package/dist/esm/init.js +0 -4
  494. package/dist/esm/init.js.map +0 -1
  495. package/dist/esm/types/webgl.js +0 -2
  496. package/dist/esm/types/webgl.js.map +0 -1
  497. package/dist/esm/types.js +0 -2
  498. package/dist/esm/types.js.map +0 -1
  499. package/dist/init.d.ts +0 -2
  500. package/dist/init.d.ts.map +0 -1
  501. package/dist/init.js +0 -4
  502. package/dist/init.js.map +0 -1
  503. package/dist/types/webgl.d.ts +0 -144
  504. package/dist/types/webgl.d.ts.map +0 -1
  505. package/dist/types/webgl.js +0 -2
  506. package/dist/types/webgl.js.map +0 -1
  507. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  508. package/src/bundle.ts +0 -4
  509. package/src/context/context/context-state.ts +0 -41
  510. package/src/context/context/device-pixels.ts +0 -152
  511. package/src/init.ts +0 -4
  512. package/src/types/webgl.ts +0 -283
@@ -1,48 +1,35 @@
1
- import {
1
+ // luma.gl, MIT license
2
+
3
+ import type {
2
4
  ShaderLayout,
3
- BindingLayout,
4
5
  UniformBinding,
5
6
  UniformBlockBinding,
6
- ProgramBindings,
7
- AttributeBinding,
8
- VaryingBinding,
9
- AttributeLayout,
10
- AccessorObject
11
- } from '@luma.gl/api';
12
- import GL from '@luma.gl/constants';
7
+ AttributeDeclaration,
8
+ VaryingBinding
9
+ } from '@luma.gl/core';
10
+
11
+ import {GL} from '@luma.gl/constants';
13
12
  import {isWebGL2} from '../../context/context/webgl-checks';
14
- import Accessor from '../../classic/accessor'; // TODO - should NOT depend on classic API
15
- import {decodeUniformType, decodeAttributeType} from './uniforms';
16
- import {getVertexFormat} from '../converters/vertex-formats';
17
- import {isSamplerUniform} from './uniforms';
13
+ import {Accessor} from '../../classic/accessor'; // TODO - should NOT depend on classic API
14
+ import {decodeGLUniformType, decodeGLAttributeType, isSamplerUniform} from './decode-webgl-types';
15
+
18
16
  /**
19
17
  * Extract metadata describing binding information for a program's shaders
20
18
  * Note: `linkProgram()` needs to have been called
21
19
  * (although linking does not need to have been successful).
22
20
  */
23
21
  export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout {
24
- const programBindings = getProgramBindings(gl, program);
25
-
26
22
  const shaderLayout: ShaderLayout = {
27
23
  attributes: [],
28
24
  bindings: []
29
25
  };
30
26
 
31
- for (const attribute of programBindings.attributes) {
32
- const format =
33
- // attribute.accessor.format ||
34
- getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
35
- shaderLayout.attributes.push({
36
- name: attribute.name,
37
- location: attribute.location,
38
- format,
39
- stepMode: attribute.accessor.divisor === 1 ? 'instance' : 'vertex'
40
- });
41
- }
27
+ shaderLayout.attributes = readAttributeDeclarations(gl, program);
42
28
 
43
29
  // Uniform blocks
44
- for (const uniformBlock of programBindings.uniformBlocks) {
45
- const uniforms = uniformBlock.uniforms.map((uniform) => ({
30
+ const uniformBlocks: UniformBlockBinding[] = readUniformBlocks(gl, program);
31
+ for (const uniformBlock of uniformBlocks) {
32
+ const uniforms = uniformBlock.uniforms.map(uniform => ({
46
33
  name: uniform.name,
47
34
  format: uniform.format,
48
35
  byteOffset: uniform.byteOffset,
@@ -59,8 +46,9 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
59
46
  });
60
47
  }
61
48
 
49
+ const uniforms: UniformBinding[] = readUniformBindings(gl, program);
62
50
  let textureUnit = 0;
63
- for (const uniform of programBindings.uniforms) {
51
+ for (const uniform of uniforms) {
64
52
  if (isSamplerUniform(uniform.type)) {
65
53
  const {viewDimension, sampleType} = getSamplerInfo(uniform.type);
66
54
  shaderLayout.bindings.push({
@@ -77,69 +65,64 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
77
65
  }
78
66
  }
79
67
 
80
- const uniforms = programBindings.uniforms?.filter((uniform) => uniform.location !== null) || [];
81
68
  if (uniforms.length) {
82
69
  shaderLayout.uniforms = uniforms;
83
70
  }
84
- if (programBindings.varyings?.length) {
85
- shaderLayout.varyings = programBindings.varyings;
71
+
72
+ // Varyings
73
+ const varyings: VaryingBinding[] = readVaryings(gl, program);
74
+ // Note - samplers are always in unform bindings, even if uniform blocks are used
75
+ if (varyings?.length) {
76
+ shaderLayout.varyings = varyings;
86
77
  }
87
78
 
88
79
  return shaderLayout;
89
80
  }
90
81
 
91
- /**
92
- * Extract metadata describing binding information for a program's shaders
93
- * Note: `linkProgram()` needs to have been called
94
- * (although linking does not need to have been successful).
95
- */
96
- export function getProgramBindings(
97
- gl: WebGLRenderingContext,
98
- program: WebGLProgram
99
- ): ProgramBindings {
100
- const config: ProgramBindings = {
101
- attributes: readAttributeBindings(gl, program),
102
- uniforms: readUniformBindings(gl, program),
103
- uniformBlocks: readUniformBlocks(gl, program),
104
- varyings: readVaryings(gl, program)
105
- };
106
-
107
- Object.seal(config);
108
- return config;
109
- // generateWebGPUStyleBindings(bindings);
110
- }
82
+ // HELPERS
111
83
 
112
84
  /**
113
85
  * Extract info about all transform feedback varyings
114
86
  *
115
87
  * linkProgram needs to have been called, although linking does not need to have been successful
116
88
  */
117
- function readAttributeBindings(
89
+ function readAttributeDeclarations(
118
90
  gl: WebGLRenderingContext,
119
91
  program: WebGLProgram
120
- ): AttributeBinding[] {
121
- const attributes: AttributeBinding[] = [];
92
+ ): AttributeDeclaration[] {
93
+ const attributes: AttributeDeclaration[] = [];
122
94
 
123
95
  const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
124
96
 
125
97
  for (let index = 0; index < count; index++) {
126
- const {name, type: compositeType, size} = gl.getActiveAttrib(program, index);
98
+ const activeInfo = gl.getActiveAttrib(program, index);
99
+ if (!activeInfo) {
100
+ throw new Error('activeInfo');
101
+ }
102
+ const {name, type: compositeType /* , size*/} = activeInfo;
127
103
  const location = gl.getAttribLocation(program, name);
128
- // Add only user provided attributes, for built-in attributes like
129
- // `gl_InstanceID` locaiton will be < 0
104
+ // Add only user provided attributes, for built-in attributes like `gl_InstanceID` location will be < 0
130
105
  if (location >= 0) {
131
- const {glType, components} = decodeAttributeType(compositeType);
132
- const accessor: AccessorObject = {type: glType, size: size * components};
133
- // Any attribute name containing the word "instance" will be assumed to be instanced
134
- if (/instance/i.test(name)) {
135
- accessor.divisor = 1;
136
- }
137
- const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values
138
- attributes.push(attributeInfo);
106
+ const {attributeType} = decodeGLAttributeType(compositeType);
107
+
108
+ // Whether an attribute is instanced is essentially fixed by the structure of the shader code,
109
+ // so it is arguably a static property of the shader.
110
+ // There is no hint in the shader declarations
111
+ // Heuristic: Any attribute name containing the word "instance" will be assumed to be instanced
112
+ const stepMode = /instance/i.test(name) ? 'instance' : 'vertex';
113
+
114
+ attributes.push({
115
+ name,
116
+ location,
117
+ stepMode,
118
+ type: attributeType,
119
+ // size - for arrays, size is the number of elements in the array
120
+ });
139
121
  }
140
122
  }
141
123
 
142
- attributes.sort((a: AttributeBinding, b: AttributeBinding) => a.location - b.location);
124
+ // Sort by declaration order
125
+ attributes.sort((a: AttributeDeclaration, b: AttributeDeclaration) => a.location - b.location);
143
126
  return attributes;
144
127
  }
145
128
 
@@ -158,8 +141,12 @@ function readVaryings(gl: WebGLRenderingContext, program: WebGLProgram): Varying
158
141
 
159
142
  const count = gl.getProgramParameter(program, GL.TRANSFORM_FEEDBACK_VARYINGS);
160
143
  for (let location = 0; location < count; location++) {
161
- const {name, type: compositeType, size} = gl2.getTransformFeedbackVarying(program, location);
162
- const {glType, components} = decodeUniformType(compositeType);
144
+ const activeInfo = gl2.getTransformFeedbackVarying(program, location);
145
+ if (!activeInfo) {
146
+ throw new Error('activeInfo');
147
+ }
148
+ const {name, type: compositeType, size} = activeInfo;
149
+ const {glType, components} = decodeGLUniformType(compositeType);
163
150
  const accessor = new Accessor({type: glType, size: size * components});
164
151
  const varying = {location, name, accessor}; // Base values
165
152
  varyings.push(varying);
@@ -179,7 +166,11 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
179
166
 
180
167
  const uniformCount = gl.getProgramParameter(program, GL.ACTIVE_UNIFORMS);
181
168
  for (let i = 0; i < uniformCount; i++) {
182
- const {name: rawName, size, type} = gl.getActiveUniform(program, i);
169
+ const activeInfo = gl.getActiveUniform(program, i);
170
+ if (!activeInfo) {
171
+ throw new Error('activeInfo');
172
+ }
173
+ const {name: rawName, size, type} = activeInfo;
183
174
  const {name, isArray} = parseUniformName(rawName);
184
175
  let webglLocation = gl.getUniformLocation(program, name);
185
176
  const uniformInfo = {
@@ -214,9 +205,7 @@ function readUniformBindings(gl: WebGLRenderingContext, program: WebGLProgram):
214
205
 
215
206
  /**
216
207
  * Extract info about all "active" uniform blocks
217
- *
218
- * ("Active" just means that unused (aka inactive) blocks may have been
219
- * optimized away during linking)
208
+ * @note In WebGL, "active" just means that unused (inactive) blocks may have been optimized away during linking)
220
209
  */
221
210
  function readUniformBlocks(
222
211
  gl: WebGLRenderingContext,
@@ -234,8 +223,8 @@ function readUniformBlocks(
234
223
 
235
224
  const blockCount = gl2.getProgramParameter(program, GL.ACTIVE_UNIFORM_BLOCKS);
236
225
  for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {
237
- const blockInfo = {
238
- name: gl2.getActiveUniformBlockName(program, blockIndex),
226
+ const blockInfo: UniformBlockBinding = {
227
+ name: gl2.getActiveUniformBlockName(program, blockIndex) || '',
239
228
  location: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_BINDING),
240
229
  byteLength: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_DATA_SIZE),
241
230
  vertex: getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
@@ -244,33 +233,39 @@ function readUniformBlocks(
244
233
  uniforms: [] as any[]
245
234
  };
246
235
 
247
- const uniformIndices = getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES);
236
+ const uniformIndices =
237
+ (getBlockParameter(blockIndex, GL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES) as number[]) || [];
248
238
 
249
239
  const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
250
240
  const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
251
- const uniformBlockIndex = gl2.getActiveUniforms(
252
- program,
253
- uniformIndices,
254
- GL.UNIFORM_BLOCK_INDEX
255
- ); // Array of GLint indicating the block indices of the uniforms.
241
+ // const uniformBlockIndex = gl2.getActiveUniforms(
242
+ // program,
243
+ // uniformIndices,
244
+ // GL.UNIFORM_BLOCK_INDEX
245
+ // ); // Array of GLint indicating the block indices of the uniforms.
256
246
  const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
257
247
  const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
258
- const uniformMatrixStride = gl2.getActiveUniforms(
259
- program,
260
- uniformIndices,
261
- GL.UNIFORM_MATRIX_STRIDE
262
- ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
263
- const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
248
+ // const uniformMatrixStride = gl2.getActiveUniforms(
249
+ // program,
250
+ // uniformIndices,
251
+ // GL.UNIFORM_MATRIX_STRIDE
252
+ // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
253
+ // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
264
254
  for (let i = 0; i < blockInfo.uniformCount; ++i) {
255
+ const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
256
+ if (!activeInfo) {
257
+ throw new Error('activeInfo');
258
+ }
259
+
265
260
  blockInfo.uniforms.push({
266
- name: gl2.getActiveUniform(program, uniformIndices[i]).name,
267
- format: decodeUniformType(uniformType[i]).format,
261
+ name: activeInfo.name,
262
+ format: decodeGLUniformType(uniformType[i]).format,
268
263
  type: uniformType[i],
269
264
  arrayLength: uniformArrayLength[i],
270
265
  byteOffset: uniformOffset[i],
271
- byteStride: uniformStride[i],
272
- matrixStride: uniformStride[i],
273
- rowMajor: uniformRowMajor[i]
266
+ byteStride: uniformStride[i]
267
+ // matrixStride: uniformStride[i],
268
+ // rowMajor: uniformRowMajor[i]
274
269
  });
275
270
  }
276
271
 
@@ -281,6 +276,27 @@ function readUniformBlocks(
281
276
  return uniformBlocks;
282
277
  }
283
278
 
279
+ /**
280
+ * TOOD - compare with a above, confirm copy, then delete
281
+ const bindings: Binding[] = [];
282
+ const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
283
+ for (let blockIndex = 0; blockIndex < count; blockIndex++) {
284
+ const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
285
+ const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
286
+ const visibility = (vertex) + (fragment);
287
+ const binding: BufferBinding = {
288
+ location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
289
+ // name: gl.getActiveUniformBlockName(program, blockIndex),
290
+ type: 'uniform',
291
+ visibility,
292
+ minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
293
+ // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
294
+ // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
295
+ }
296
+ bindings.push(binding);
297
+ }
298
+ */
299
+
284
300
  const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
285
301
  number,
286
302
  [
@@ -305,18 +321,18 @@ const SAMPLER_UNIFORMS_GL_TO_GPU: Record<
305
321
  [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'uint']
306
322
  };
307
323
 
308
- function getSamplerInfo(type: GL):
309
- | {
310
- viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
311
- sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
312
- }
313
- | undefined {
314
- let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
315
- if (sampler) {
316
- const [viewDimension, sampleType] = sampler;
317
- return {viewDimension, sampleType};
324
+ type SamplerInfo = {
325
+ viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
326
+ sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
327
+ };
328
+
329
+ function getSamplerInfo(type: GL): SamplerInfo {
330
+ const sampler = SAMPLER_UNIFORMS_GL_TO_GPU[type];
331
+ if (!sampler) {
332
+ throw new Error('sampler');
318
333
  }
319
- return null;
334
+ const [viewDimension, sampleType] = sampler;
335
+ return {viewDimension, sampleType};
320
336
  }
321
337
 
322
338
  // HELPERS
@@ -333,7 +349,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
333
349
 
334
350
  // if array name then clean the array brackets
335
351
  const UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
336
- const matches = name.match(UNIFORM_NAME_REGEXP);
352
+ const matches = UNIFORM_NAME_REGEXP.exec(name);
337
353
  if (!matches || matches.length < 2) {
338
354
  throw new Error(`Failed to parse GLSL uniform name ${name}`);
339
355
  }
@@ -344,45 +360,3 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
344
360
  isArray: Boolean(matches[2])
345
361
  };
346
362
  }
347
-
348
- /**
349
- * TODO - verify this is a copy of above and delete
350
- * import type {TextureFormat} from '@luma.gl/api';
351
- * Extract info about all "active" uniform blocks
352
- * ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
353
- *
354
- function getUniformBlockBindings(gl, program): Binding[] {
355
- if (!isWebGL2(gl)) {
356
- return;
357
- }
358
- const bindings: Binding[] = [];
359
- const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
360
- for (let blockIndex = 0; blockIndex < count; blockIndex++) {
361
- const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
362
- const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
363
- const visibility = (vertex) + (fragment);
364
- const binding: BufferBinding = {
365
- location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
366
- // name: gl.getActiveUniformBlockName(program, blockIndex),
367
- type: 'uniform',
368
- visibility,
369
- minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
370
- // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
371
- // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
372
- }
373
- bindings.push(binding);
374
- }
375
- return bindings;
376
- }
377
-
378
- function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
379
- for (const bindGroup of bindings) {
380
- for (const binding of bindGroup) {
381
-
382
- }
383
- }
384
-
385
- // Set up indirection table
386
- // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
387
- }
388
- */
@@ -1,5 +1,5 @@
1
1
  // luma.gl, MIT license
2
- import type {CompilerMessage} from '@luma.gl/shadertools';
2
+ import type {CompilerMessage} from '@luma.gl/core';
3
3
 
4
4
  const MESSAGE_TYPES = ['warning', 'error', 'info'];
5
5
 
@@ -16,7 +16,7 @@ export function parseShaderCompilerLog(errLog: string) : readonly CompilerMessag
16
16
 
17
17
  for (const line of lines) {
18
18
  if (line.length <= 1) {
19
- continue;
19
+ continue; // eslint-disable-line no-continue
20
20
  }
21
21
 
22
22
  const segments: string[] = line.split(':');
@@ -1,5 +1,7 @@
1
+ /* eslint-disable */
2
+
1
3
  // Uniforms
2
- import GL from '@luma.gl/constants';
4
+ import {GL} from '@luma.gl/constants';
3
5
 
4
6
  /** Set a raw uniform (without type conversion and caching) */
5
7
  /* eslint-disable max-len */
@@ -7,7 +9,7 @@ export function setUniform(
7
9
  gl: WebGLRenderingContext,
8
10
  location: WebGLUniformLocation,
9
11
  type: GL,
10
- value: number | Float32Array | Int32Array | Uint32Array
12
+ value: number | Float32Array | Int32Array | Uint32Array | boolean
11
13
  ): void {
12
14
  const gl2 = gl as WebGL2RenderingContext;
13
15
 
@@ -35,13 +37,12 @@ export function setUniform(
35
37
  }
36
38
  }
37
39
 
38
- // @ts-expect-error
39
40
  if (value === true) {
40
41
  value = 1;
41
42
  }
42
- // @ts-expect-error
43
+
43
44
  if (value === false) {
44
- value = 1;
45
+ value = 0;
45
46
  }
46
47
  const arrayValue = (typeof value === 'number') ? [value] : value;
47
48
 
@@ -60,7 +61,7 @@ export function setUniform(
60
61
  case GL.BOOL: return gl.uniform1iv(location, arrayValue);
61
62
  case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);
62
63
  case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);
63
- case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);
64
+ case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);
64
65
 
65
66
  // WEBGL2 - unsigned integers
66
67
  case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);
@@ -1,8 +1,7 @@
1
- import GL from '@luma.gl/constants';
2
- import {GLDrawMode, GLPrimitive} from '../../types/webgl';
1
+ import {GL, GLPrimitiveTopology, GLPrimitive} from '@luma.gl/constants';
3
2
 
4
3
  // Counts the number of complete primitives given a number of vertices and a drawMode
5
- export function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {
4
+ export function getPrimitiveDrawMode(drawMode: GLPrimitiveTopology): GLPrimitive {
6
5
  switch (drawMode) {
7
6
  case GL.POINTS:
8
7
  return GL.POINTS;
@@ -24,7 +23,7 @@ export function getPrimitiveDrawMode(drawMode: GLDrawMode): GLPrimitive {
24
23
  }
25
24
 
26
25
  // Counts the number of complete "primitives" given a number of vertices and a drawMode
27
- export function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {
26
+ export function getPrimitiveCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
28
27
  const {drawMode, vertexCount} = options;
29
28
  switch (drawMode) {
30
29
  case GL.POINTS:
@@ -45,7 +44,7 @@ export function getPrimitiveCount(options: {drawMode: GLDrawMode, vertexCount: n
45
44
  }
46
45
 
47
46
  // Counts the number of vertices after splitting the vertex stream into separate "primitives"
48
- export function getVertexCount(options: {drawMode: GLDrawMode, vertexCount: number}): number {
47
+ export function getVertexCount(options: {drawMode: GLPrimitiveTopology, vertexCount: number}): number {
49
48
  const {drawMode, vertexCount} = options;
50
49
  const primitiveCount = getPrimitiveCount({drawMode, vertexCount});
51
50
  switch (getPrimitiveDrawMode(drawMode)) {
@@ -1,5 +1,5 @@
1
- import {assert} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ import {assert} from '@luma.gl/core';
2
+ import {GL} from '@luma.gl/constants';
3
3
 
4
4
  // Resolve a WebGL enumeration name (returns itself if already a number)
5
5
  export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
@@ -16,30 +16,8 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
16
16
 
17
17
  // Look up string, after removing any 'GL.' or 'gl.' prefix
18
18
  name = name.replace(/^.*\./, '');
19
+ // @ts-ignore expect-error depends on settings
19
20
  const value = gl[name];
20
21
  assert(value !== undefined, `Accessing undefined constant GL.${name}`);
21
22
  return value;
22
23
  }
23
-
24
- export function getKey(gl: WebGLRenderingContext, value: any): string {
25
- // @ts-expect-error
26
- gl = gl.gl || gl;
27
- value = Number(value);
28
- for (const key in gl) {
29
- if (gl[key] === value) {
30
- return `GL.${key}`;
31
- }
32
- }
33
- return String(value);
34
- }
35
-
36
- export function getKeyType(gl: WebGLRenderingContext, value: any): string {
37
- assert(value !== undefined, 'undefined key');
38
- value = Number(value);
39
- for (const key in gl) {
40
- if (gl[key] === value) {
41
- return `GL.${key}`;
42
- }
43
- }
44
- return String(value);
45
- }
@@ -1,29 +1,17 @@
1
- /* eslint-disable no-inline-comments */
2
- import {assert, ResourceProps} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import WebGLDevice from '../webgl-device';
5
- import WebGLResource from './webgl-resource';
6
- import {
7
- isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel
8
- } from '../converters/renderbuffer-formats';
1
+ import {assert, ResourceProps, TextureFormat} from '@luma.gl/core';
2
+ import {GL} from '@luma.gl/constants';
3
+ import {WebGLDevice} from '../webgl-device';
4
+ import {WebGLResource} from './webgl-resource';
5
+ import {isRenderbufferFormatSupported} from '../converters/texture-formats';
6
+ import {convertTextureFormatToGL, getTextureFormatBytesPerPixel} from '../converters/texture-formats';
9
7
 
10
8
  export type RenderbufferProps = ResourceProps & {
11
- format: number;
9
+ format: TextureFormat;
12
10
  width?: number;
13
11
  height?: number;
14
12
  samples?: number;
15
13
  };
16
14
 
17
- const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
18
- id: undefined,
19
- handle: undefined,
20
- userData: undefined,
21
- format: 0,
22
- width: 1,
23
- height: 1,
24
- samples: 0
25
- };
26
-
27
15
  /**
28
16
  * Renderbuffers are GPU objects that contain images.
29
17
  * In contrast to Textures they are optimized for use as render targets, with Framebuffers.
@@ -34,36 +22,54 @@ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
34
22
  * use Textures instead.
35
23
  * Renderbuffer objects also natively accommodate Multisampling (MSAA).
36
24
  */
37
- export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
38
- get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
25
+ export class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
26
+ static override readonly defaultProps: Required<RenderbufferProps> = {
27
+ id: undefined,
28
+ handle: undefined,
29
+ userData: undefined,
30
+ format: undefined, // 'depth16unorm'
31
+ width: 1,
32
+ height: 1,
33
+ samples: 0
34
+ };
35
+
36
+ override get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
39
37
 
40
38
  get width(): number { return this.props.width; }
41
39
  get height(): number { return this.props.height; }
42
- get format(): number { return this.props.format; }
40
+ get format(): TextureFormat { return this.props.format; }
43
41
  get samples(): number { return this.props.samples; }
42
+ get attachment() { return }
43
+
44
+ /** WebGL format constant */
45
+ glFormat: GL;
44
46
 
45
- static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
46
- return !options.format || isRenderbufferFormatSupported(gl, options.format);
47
+ static isTextureFormatSupported(device: WebGLDevice, format: TextureFormat): boolean {
48
+ return isRenderbufferFormatSupported(device.gl, format);
47
49
  }
48
50
 
49
51
  constructor(device: WebGLDevice, props: RenderbufferProps) {
50
- super(device, props, DEFAULT_RENDERBUFFER_PROPS);
52
+ // TODO - remove temporary sanity check
53
+ if (typeof props.format === 'number') {
54
+ throw new Error('Renderbuffer');
55
+ }
56
+ super(device, props, WEBGLRenderbuffer.defaultProps);
57
+ this.glFormat = convertTextureFormatToGL(this.props.format, device.isWebGL2);
51
58
  this._initialize(this.props);
52
59
  }
53
60
 
54
- resize(size: {width: number, height: number}): this {
61
+ resize(size: {width: number, height: number}): void {
55
62
  // Don't resize if width/height haven't changed
56
63
  if (size.width !== this.width || size.height !== this.height) {
57
64
  Object.assign(this.props, {...size, format: this.format, samples: this.samples});
58
65
  this._initialize(this.props);
59
66
  }
60
- return this;
61
67
  }
62
68
 
63
69
  // PRIVATE METHODS
64
70
 
65
71
  /** Creates and initializes a renderbuffer object's data store */
66
- protected _initialize(props: Required<RenderbufferProps>) {
72
+ protected _initialize(props: Required<RenderbufferProps>): void {
67
73
  const {format, width, height, samples} = props;
68
74
  assert(format, 'Needs format');
69
75
 
@@ -72,33 +78,30 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
72
78
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);
73
79
 
74
80
  if (samples !== 0 && this.device.isWebGL2) {
75
- // @ts-expect-error
76
- this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);
81
+ this.gl2.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, this.glFormat, width, height);
77
82
  } else {
78
- this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);
83
+ this.gl.renderbufferStorage(GL.RENDERBUFFER, this.glFormat, width, height);
79
84
  }
80
85
 
81
86
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);
82
87
 
83
88
  this.trackAllocatedMemory(
84
- width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)
89
+ width * height * (samples || 1) * getTextureFormatBytesPerPixel(this.glFormat, this.device.isWebGL2)
85
90
  );
86
-
87
- return this;
88
91
  }
89
92
 
90
93
  // RESOURCE IMPLEMENTATION
91
94
 
92
- _createHandle() {
95
+ override _createHandle() {
93
96
  return this.gl.createRenderbuffer();
94
97
  }
95
98
 
96
- _deleteHandle(): void {
99
+ override _deleteHandle(): void {
97
100
  this.gl.deleteRenderbuffer(this.handle);
98
101
  this.trackDeallocatedMemory();
99
102
  }
100
103
 
101
- _bindHandle(handle: WEBGLRenderbuffer): void {
104
+ override _bindHandle(handle: WEBGLRenderbuffer): void {
102
105
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
103
106
  }
104
107
  }