@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.50

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 (531) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +309 -346
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +17 -23
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +31 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +87 -143
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +51 -82
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +60 -88
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +99 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +11 -21
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +21 -34
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +137 -256
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  111. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  113. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  114. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  115. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  116. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  117. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  118. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  119. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  120. package/dist/adapter/webgl-canvas-context.js +10 -23
  121. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  122. package/dist/adapter/webgl-device.d.ts +76 -41
  123. package/dist/adapter/webgl-device.d.ts.map +1 -1
  124. package/dist/adapter/webgl-device.js +219 -129
  125. package/dist/adapter/webgl-device.js.map +1 -1
  126. package/dist/classic/accessor.d.ts +3 -3
  127. package/dist/classic/accessor.d.ts.map +1 -1
  128. package/dist/classic/accessor.js +26 -52
  129. package/dist/classic/accessor.js.map +1 -1
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +191 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +37 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +17 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +18 -39
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +15 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +18 -41
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +8555 -0
  202. package/dist/index.cjs +6602 -0
  203. package/dist/index.d.ts +26 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +49 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +144 -41
  213. package/src/adapter/converters/sampler-parameters.ts +103 -41
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +268 -195
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +14 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +67 -62
  231. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  235. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  237. package/src/adapter/resources/webgl-sampler.ts +16 -10
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +138 -99
  240. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  241. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  242. package/src/adapter/webgl-canvas-context.ts +16 -14
  243. package/src/adapter/webgl-device.ts +328 -79
  244. package/src/classic/accessor.ts +8 -18
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +311 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +21 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +14 -11
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +70 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js +0 -81
  273. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  274. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  275. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  276. package/dist/adapter/helpers/uniforms.js +0 -99
  277. package/dist/adapter/helpers/uniforms.js.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  279. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  280. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  281. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  282. package/dist/bundle.d.ts +0 -2
  283. package/dist/bundle.d.ts.map +0 -1
  284. package/dist/bundle.js +0 -5
  285. package/dist/bundle.js.map +0 -1
  286. package/dist/classic/buffer.d.ts +0 -95
  287. package/dist/classic/buffer.d.ts.map +0 -1
  288. package/dist/classic/buffer.js +0 -384
  289. package/dist/classic/buffer.js.map +0 -1
  290. package/dist/context/context/context-state.d.ts +0 -18
  291. package/dist/context/context/context-state.d.ts.map +0 -1
  292. package/dist/context/context/context-state.js +0 -26
  293. package/dist/context/context/context-state.js.map +0 -1
  294. package/dist/context/context/create-context.d.ts +0 -41
  295. package/dist/context/context/create-context.d.ts.map +0 -1
  296. package/dist/context/context/create-context.js +0 -49
  297. package/dist/context/context/create-context.js.map +0 -1
  298. package/dist/context/context/device-pixels.d.ts +0 -25
  299. package/dist/context/context/device-pixels.d.ts.map +0 -1
  300. package/dist/context/context/device-pixels.js +0 -98
  301. package/dist/context/context/device-pixels.js.map +0 -1
  302. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  303. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  305. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  307. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  309. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  310. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  311. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  313. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  315. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  316. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  317. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  319. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  320. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  321. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  322. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  323. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  324. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  325. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  326. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  327. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  329. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  330. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  331. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  333. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  334. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  335. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  336. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  337. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  339. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  341. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  343. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  345. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  347. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  349. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  351. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  353. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  355. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  357. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  358. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  359. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  360. package/dist/es5/adapter/webgl-device.js +0 -399
  361. package/dist/es5/adapter/webgl-device.js.map +0 -1
  362. package/dist/es5/bundle.js +0 -7
  363. package/dist/es5/bundle.js.map +0 -1
  364. package/dist/es5/classic/accessor.js +0 -181
  365. package/dist/es5/classic/accessor.js.map +0 -1
  366. package/dist/es5/classic/buffer.js +0 -470
  367. package/dist/es5/classic/buffer.js.map +0 -1
  368. package/dist/es5/classic/typed-array-utils.js +0 -126
  369. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  370. package/dist/es5/context/context/context-state.js +0 -31
  371. package/dist/es5/context/context/context-state.js.map +0 -1
  372. package/dist/es5/context/context/create-context.js +0 -69
  373. package/dist/es5/context/context/create-context.js.map +0 -1
  374. package/dist/es5/context/context/device-pixels.js +0 -115
  375. package/dist/es5/context/context/device-pixels.js.map +0 -1
  376. package/dist/es5/context/context/webgl-checks.js +0 -54
  377. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  378. package/dist/es5/context/debug/spector.js +0 -133
  379. package/dist/es5/context/debug/spector.js.map +0 -1
  380. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  381. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  382. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  383. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  384. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  385. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  386. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  387. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  389. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  390. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  391. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  392. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  393. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  394. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  395. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  396. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  397. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  398. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  399. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  400. package/dist/es5/index.js +0 -276
  401. package/dist/es5/index.js.map +0 -1
  402. package/dist/es5/init.js +0 -10
  403. package/dist/es5/init.js.map +0 -1
  404. package/dist/es5/types/webgl.js +0 -6
  405. package/dist/es5/types/webgl.js.map +0 -1
  406. package/dist/es5/types.js +0 -2
  407. package/dist/es5/types.js.map +0 -1
  408. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  409. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  411. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  413. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  414. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  415. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  416. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  417. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  419. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  421. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  422. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  423. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  424. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  425. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  426. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  427. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  428. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  429. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  430. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  431. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  432. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  433. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  434. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  435. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  436. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  437. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  439. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  440. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  441. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  442. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  443. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  445. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  447. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  449. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  451. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  453. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  455. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  457. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  459. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  461. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  463. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  464. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  465. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  466. package/dist/esm/adapter/webgl-device.js +0 -280
  467. package/dist/esm/adapter/webgl-device.js.map +0 -1
  468. package/dist/esm/bundle.js +0 -5
  469. package/dist/esm/bundle.js.map +0 -1
  470. package/dist/esm/classic/accessor.js +0 -144
  471. package/dist/esm/classic/accessor.js.map +0 -1
  472. package/dist/esm/classic/buffer.js +0 -384
  473. package/dist/esm/classic/buffer.js.map +0 -1
  474. package/dist/esm/classic/typed-array-utils.js +0 -112
  475. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  476. package/dist/esm/context/context/context-state.js +0 -26
  477. package/dist/esm/context/context/context-state.js.map +0 -1
  478. package/dist/esm/context/context/create-context.js +0 -49
  479. package/dist/esm/context/context/create-context.js.map +0 -1
  480. package/dist/esm/context/context/device-pixels.js +0 -98
  481. package/dist/esm/context/context/device-pixels.js.map +0 -1
  482. package/dist/esm/context/context/webgl-checks.js +0 -34
  483. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  484. package/dist/esm/context/debug/spector.js +0 -76
  485. package/dist/esm/context/debug/spector.js.map +0 -1
  486. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  487. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  488. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  489. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  490. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  491. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  492. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  493. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  495. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  496. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  497. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  498. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  499. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  500. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  501. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  502. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  503. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  504. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  505. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  506. package/dist/esm/index.js +0 -27
  507. package/dist/esm/index.js.map +0 -1
  508. package/dist/esm/init.js +0 -4
  509. package/dist/esm/init.js.map +0 -1
  510. package/dist/esm/types/webgl.js +0 -2
  511. package/dist/esm/types/webgl.js.map +0 -1
  512. package/dist/esm/types.js +0 -2
  513. package/dist/esm/types.js.map +0 -1
  514. package/dist/init.d.ts +0 -2
  515. package/dist/init.d.ts.map +0 -1
  516. package/dist/init.js +0 -4
  517. package/dist/init.js.map +0 -1
  518. package/dist/types/webgl.d.ts +0 -145
  519. package/dist/types/webgl.d.ts.map +0 -1
  520. package/dist/types/webgl.js +0 -2
  521. package/dist/types/webgl.js.map +0 -1
  522. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  523. package/src/adapter/helpers/attribute-utils.ts +0 -61
  524. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  525. package/src/bundle.ts +0 -4
  526. package/src/classic/buffer.ts +0 -474
  527. package/src/context/context/context-state.ts +0 -41
  528. package/src/context/context/create-context.ts +0 -110
  529. package/src/context/context/device-pixels.ts +0 -152
  530. package/src/init.ts +0 -4
  531. package/src/types/webgl.ts +0 -284
@@ -1,38 +1,46 @@
1
- import type { RenderPipelineProps, RenderPass, Buffer, Binding, ShaderLayout } from '@luma.gl/api';
2
- import { RenderPipeline } from '@luma.gl/api';
3
- import WebGLDevice from '../webgl-device';
4
- import WEBGLShader from './webgl-shader';
5
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
1
+ import type { UniformValue, RenderPipelineProps, Binding } from '@luma.gl/core';
2
+ import type { ShaderLayout } from '@luma.gl/core';
3
+ import type { RenderPass, VertexArray } from '@luma.gl/core';
4
+ import { RenderPipeline } from '@luma.gl/core';
5
+ import { WebGLDevice } from '../webgl-device';
6
+ import { WEBGLShader } from './webgl-shader';
7
+ import { WEBGLTransformFeedback } from './webgl-transform-feedback';
6
8
  /** Creates a new render pipeline */
7
- export default class WEBGLRenderPipeline extends RenderPipeline {
9
+ export declare class WEBGLRenderPipeline extends RenderPipeline {
10
+ /** The WebGL device that created this render pipeline */
8
11
  device: WebGLDevice;
12
+ /** Handle to underlying WebGL program */
9
13
  handle: WebGLProgram;
14
+ /** vertex shader */
10
15
  vs: WEBGLShader;
16
+ /** fragment shader */
11
17
  fs: WEBGLShader;
12
- layout: ShaderLayout;
13
- varyings: string[];
14
- vertexArrayObject: WEBGLVertexArrayObject;
15
- _indexBuffer?: Buffer;
16
- uniforms: Record<string, any>;
17
- bindings: Record<string, any>;
18
- _textureUniforms: Record<string, any>;
19
- _textureIndexCounter: number;
18
+ /** The layout extracted from shader by WebGL introspection APIs */
19
+ introspectedLayout: ShaderLayout;
20
+ /** Uniforms set on this model */
21
+ uniforms: Record<string, UniformValue>;
22
+ /** Bindings set on this model */
23
+ bindings: Record<string, Binding>;
24
+ /** WebGL varyings */
25
+ varyings: string[] | null;
20
26
  _uniformCount: number;
21
27
  _uniformSetters: Record<string, Function>;
22
28
  constructor(device: WebGLDevice, props: RenderPipelineProps);
23
29
  destroy(): void;
24
- setIndexBuffer(indexBuffer: Buffer): void;
25
- /** @todo needed for portable model */
26
- setAttributes(attributes: Record<string, Buffer>): void;
27
- /** @todo needed for portable model */
30
+ /**
31
+ * Bindings include: textures, samplers and uniform buffers
32
+ * @todo needed for portable model
33
+ */
28
34
  setBindings(bindings: Record<string, Binding>): void;
29
- setUniforms(uniforms: Record<string, any>): void;
35
+ setUniforms(uniforms: Record<string, UniformValue>): void;
30
36
  /** @todo needed for portable model
31
37
  * @note The WebGL API is offers many ways to draw things
32
38
  * This function unifies those ways into a single call using common parameters with sane defaults
33
39
  */
34
40
  draw(options: {
35
- renderPass?: RenderPass;
41
+ renderPass: RenderPass;
42
+ /** vertex attributes */
43
+ vertexArray: VertexArray;
36
44
  vertexCount?: number;
37
45
  indexCount?: number;
38
46
  instanceCount?: number;
@@ -40,6 +48,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
40
48
  firstIndex?: number;
41
49
  firstInstance?: number;
42
50
  baseVertex?: number;
51
+ transformFeedback?: WEBGLTransformFeedback;
43
52
  }): boolean;
44
53
  protected _compileAndLink(): void;
45
54
  /**
@@ -48,8 +57,33 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
48
57
  * Note: This is currently done before every draw call
49
58
  */
50
59
  _areTexturesRenderable(): boolean;
51
- /** Apply any bindings */
60
+ /**
61
+ * Constant attributes need to be reset before every draw call
62
+ * Any attribute that is disabled in the current vertex array object
63
+ * is read from the context's global constant value for that attribute location.
64
+ * @note Constant attributes are only supported in WebGL, not in WebGPU
65
+ *
66
+ _applyConstantAttributes(vertexArray: WEBGLVertexArray): void {
67
+ const attributeInfos = getAttributeInfosFromLayouts(this.shaderLayout, this.bufferLayout);
68
+ for (const [name, value] of Object.entries(this.)) {
69
+ const attributeInfo = attributeInfos[name];
70
+ if (!attributeInfo) {
71
+ log.warn(
72
+ `Ignoring constant value supplied for unknown attribute "${name}" in pipeline "${this.id}"`
73
+ )();
74
+ continue; // eslint-disable-line no-continue
75
+ }
76
+ vertexArray.setConstant(attributeInfo.location, value);
77
+ vertexArray.enable(attributeInfo.location, false);
78
+ }
79
+ }
80
+ */
81
+ /** Apply any bindings (before each draw call) */
52
82
  _applyBindings(): void;
83
+ /**
84
+ * Due to program sharing, uniforms need to be reset before every draw call
85
+ * (though caching will avoid redundant WebGL calls)
86
+ */
53
87
  _applyUniforms(): void;
54
88
  }
55
89
  //# sourceMappingURL=webgl-render-pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,UAAU,EACV,MAAM,EACN,OAAO,EACP,YAAY,EAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,cAAc,EAAgC,MAAM,cAAc,CAAC;AAQ3E,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,OAAO,sBAAsB,MAAM,sCAAsC,CAAC;AAI1E,oCAAoC;AACpC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,cAAc;IAC7D,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,WAAW,CAAC;IAChB,EAAE,EAAE,WAAW,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IAIrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAC3C,oBAAoB,EAAE,MAAM,CAAK;IACjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAE9B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA4B3D,OAAO,IAAI,IAAI;IAOf,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzC,sCAAsC;IACtC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAwBvD,sCAAsC;IACtC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAoCpD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKzC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO;IA2EX,SAAS,CAAC,eAAe;IA0BzB;;;;OAIG;IACH,sBAAsB;IAkBtB,yBAAyB;IACzB,cAAc;IA0Dd,cAAc;CASf"}
1
+ {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC9E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAsC,MAAM,eAAe,CAAC;AAUlF,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAK3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA+BlD,OAAO,IAAI,IAAI;IAyCxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiDpD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAWlD;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,wBAAwB;QACxB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;IA+GX,SAAS,CAAC,eAAe;IA4BzB;;;;OAIG;IACH,sBAAsB;IAatB;;;;;;;;;;;;;;;;;;;;MAoBE;IAEF,iDAAiD;IACjD,cAAc;IAgFd;;;OAGG;IACH,cAAc;CASf"}
@@ -1,400 +1,238 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { RenderPipeline, cast, log, decodeVertexFormat } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getWebGLDataType } from '../converters/texture-formats';
5
- import { getShaderLayout } from '../helpers/get-shader-layout';
6
- import { withDeviceParameters } from '../converters/device-parameters';
7
- import { setUniform } from '../helpers/set-uniform';
8
- import WEBGLBuffer from './webgl-buffer';
9
- import WEBGLTexture from './webgl-texture';
10
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
1
+ import { RenderPipeline, cast, splitUniformsAndBindings, log } from '@luma.gl/core';
2
+ import { mergeShaderLayout } from '@luma.gl/core';
3
+ import { getShaderLayout } from "../helpers/get-shader-layout.js";
4
+ import { withDeviceAndGLParameters } from "../converters/device-parameters.js";
5
+ import { setUniform } from "../helpers/set-uniform.js";
6
+ import { WEBGLBuffer } from "./webgl-buffer.js";
7
+ import { WEBGLFramebuffer } from "./webgl-framebuffer.js";
8
+ import { WEBGLTexture } from "./webgl-texture.js";
9
+ import { getGLDrawMode } from "../helpers/webgl-topology-utils.js";
11
10
  const LOG_PROGRAM_PERF_PRIORITY = 4;
12
- export default class WEBGLRenderPipeline extends RenderPipeline {
11
+ export class WEBGLRenderPipeline extends RenderPipeline {
13
12
  constructor(device, props) {
14
13
  super(device, props);
15
-
16
- _defineProperty(this, "device", void 0);
17
-
18
- _defineProperty(this, "handle", void 0);
19
-
20
- _defineProperty(this, "vs", void 0);
21
-
22
- _defineProperty(this, "fs", void 0);
23
-
24
- _defineProperty(this, "layout", void 0);
25
-
26
- _defineProperty(this, "varyings", void 0);
27
-
28
- _defineProperty(this, "vertexArrayObject", void 0);
29
-
30
- _defineProperty(this, "_indexBuffer", void 0);
31
-
32
- _defineProperty(this, "uniforms", {});
33
-
34
- _defineProperty(this, "bindings", {});
35
-
36
- _defineProperty(this, "_textureUniforms", {});
37
-
38
- _defineProperty(this, "_textureIndexCounter", 0);
39
-
40
- _defineProperty(this, "_uniformCount", 0);
41
-
42
- _defineProperty(this, "_uniformSetters", void 0);
43
-
14
+ this.device = void 0;
15
+ this.handle = void 0;
16
+ this.vs = void 0;
17
+ this.fs = void 0;
18
+ this.introspectedLayout = void 0;
19
+ this.uniforms = {};
20
+ this.bindings = {};
21
+ this.varyings = null;
22
+ this._uniformCount = 0;
23
+ this._uniformSetters = {};
44
24
  this.device = device;
45
25
  this.handle = this.props.handle || this.device.gl.createProgram();
46
- this.handle.__SPECTOR_Metadata = {
26
+ this.device.setSpectorMetadata(this.handle, {
47
27
  id: this.props.id
48
- };
28
+ });
49
29
  this.vs = cast(props.vs);
50
30
  this.fs = cast(props.fs);
51
31
  const {
52
32
  varyings,
53
- bufferMode = GL.SEPARATE_ATTRIBS
33
+ bufferMode = 35981
54
34
  } = props;
55
-
56
35
  if (varyings && varyings.length > 0) {
36
+ var _this$device$gl;
57
37
  this.device.assertWebGL2();
58
38
  this.varyings = varyings;
59
- this.device.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);
39
+ (_this$device$gl = this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
60
40
  }
61
-
62
41
  this._compileAndLink();
63
-
64
- this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);
65
- this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
42
+ this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
43
+ this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
66
44
  }
67
-
68
45
  destroy() {
69
46
  if (this.handle) {
70
47
  this.device.gl.deleteProgram(this.handle);
71
- this.handle = null;
72
- }
73
- }
74
-
75
- setIndexBuffer(indexBuffer) {
76
- const webglBuffer = cast(indexBuffer);
77
- this.vertexArrayObject.setElementBuffer(webglBuffer);
78
- this._indexBuffer = indexBuffer;
79
- }
80
-
81
- setAttributes(attributes) {
82
- for (const [name, buffer] of Object.entries(attributes)) {
83
- const webglBuffer = cast(buffer);
84
- const attribute = getAttributeLayout(this.layout, name);
85
-
86
- if (!attribute) {
87
- log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
88
- continue;
89
- }
90
-
91
- const decoded = decodeVertexFormat(attribute.format);
92
- const {
93
- type: typeString,
94
- components: size,
95
- byteLength: stride,
96
- normalized,
97
- integer
98
- } = decoded;
99
- const divisor = attribute.stepMode === 'instance' ? 1 : 0;
100
- const type = getWebGLDataType(typeString);
101
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
102
- size,
103
- type,
104
- stride,
105
- offset: 0,
106
- normalized,
107
- integer,
108
- divisor: attribute.stepMode === 'instance' ? 1 : 0
109
- });
48
+ this.destroyed = true;
110
49
  }
111
50
  }
112
-
113
51
  setBindings(bindings) {
114
52
  for (const [name, value] of Object.entries(bindings)) {
115
- const binding = this.layout.bindings.find(binding => binding.name === name);
116
-
53
+ const binding = this.shaderLayout.bindings.find(binding => binding.name === name) || this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
117
54
  if (!binding) {
118
- log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(this.id))();
55
+ const validBindings = this.shaderLayout.bindings.map(binding => `"${binding.name}"`).join(', ');
56
+ log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
57
+ continue;
119
58
  }
120
-
121
59
  if (!value) {
122
- log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(this.id))();
60
+ log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
123
61
  }
124
-
125
62
  switch (binding.type) {
126
63
  case 'uniform':
127
64
  if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
128
65
  throw new Error('buffer value');
129
66
  }
130
-
131
67
  break;
132
-
133
68
  case 'texture':
134
- if (!(value instanceof WEBGLTexture)) {
69
+ if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
135
70
  throw new Error('texture value');
136
71
  }
137
-
138
72
  break;
139
-
140
73
  case 'sampler':
141
- log.warn("Ignoring sampler ".concat(name))();
74
+ log.warn(`Ignoring sampler ${name}`)();
142
75
  break;
143
-
144
76
  default:
145
77
  throw new Error(binding.type);
146
78
  }
147
-
148
79
  this.bindings[name] = value;
149
80
  }
150
81
  }
151
-
152
82
  setUniforms(uniforms) {
83
+ const {
84
+ bindings
85
+ } = splitUniformsAndBindings(uniforms);
86
+ Object.keys(bindings).forEach(name => {
87
+ log.warn(`Unsupported value "${JSON.stringify(bindings[name])}" used in setUniforms() for key ${name}. Use setBindings() instead?`)();
88
+ });
153
89
  Object.assign(this.uniforms, uniforms);
154
90
  }
155
-
156
91
  draw(options) {
157
- var _this$_indexBuffer;
158
-
92
+ var _vertexArray$indexBuf;
159
93
  const {
160
- renderPass = this.device.getDefaultRenderPass(),
94
+ renderPass,
95
+ vertexArray,
161
96
  vertexCount,
162
- indexCount,
163
97
  instanceCount,
164
98
  firstVertex = 0,
165
- firstIndex,
166
- firstInstance,
167
- baseVertex
99
+ transformFeedback
168
100
  } = options;
169
- const drawMode = getDrawMode(this.props.topology);
170
- const isIndexed = Boolean(this._indexBuffer);
171
- const indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
172
- const isInstanced = options.instanceCount > 0;
173
-
174
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
101
+ const glDrawMode = getGLDrawMode(this.props.topology);
102
+ const isIndexed = Boolean(vertexArray.indexBuffer);
103
+ const glIndexType = (_vertexArray$indexBuf = vertexArray.indexBuffer) === null || _vertexArray$indexBuf === void 0 ? void 0 : _vertexArray$indexBuf.glIndexType;
104
+ const isInstanced = Number(instanceCount) > 0;
105
+ if (!this._areTexturesRenderable() || vertexCount === 0) {
175
106
  return false;
176
107
  }
177
-
178
108
  this.device.gl.useProgram(this.handle);
179
- this.vertexArrayObject.bind(() => {
180
- const parameters = { ...this.props.parameters,
181
- framebuffer: renderPass.props.framebuffer
182
- };
183
- const primitiveMode = getGLPrimitive(this.props.topology);
184
- const transformFeedback = null;
185
-
186
- if (transformFeedback) {
187
- transformFeedback.begin(primitiveMode);
109
+ vertexArray.bindBeforeRender(renderPass);
110
+ if (transformFeedback) {
111
+ transformFeedback.begin(this.props.topology);
112
+ }
113
+ this._applyBindings();
114
+ this._applyUniforms();
115
+ const webglRenderPass = renderPass;
116
+ withDeviceAndGLParameters(this.device, this.props.parameters, webglRenderPass.glParameters, () => {
117
+ if (isIndexed && isInstanced) {
118
+ var _this$device$gl2;
119
+ (_this$device$gl2 = this.device.gl2) === null || _this$device$gl2 === void 0 ? void 0 : _this$device$gl2.drawElementsInstanced(glDrawMode, vertexCount || 0, glIndexType, firstVertex, instanceCount || 0);
120
+ } else if (isIndexed) {
121
+ this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex);
122
+ } else if (isInstanced) {
123
+ var _this$device$gl3;
124
+ (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(glDrawMode, firstVertex, vertexCount || 0, instanceCount || 0);
125
+ } else {
126
+ this.device.gl.drawArrays(glDrawMode, firstVertex, vertexCount || 0);
188
127
  }
189
-
190
- this._applyBindings();
191
-
192
- this._applyUniforms();
193
-
194
- withDeviceParameters(this.device, parameters, () => {
195
- if (isIndexed && isInstanced) {
196
- this.device.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, firstVertex, instanceCount);
197
- } else if (isIndexed) {
198
- this.device.gl.drawElements(drawMode, vertexCount, indexType, firstVertex);
199
- } else if (isInstanced) {
200
- this.device.gl2.drawArraysInstanced(drawMode, firstVertex, vertexCount, instanceCount);
201
- } else {
202
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount);
203
- }
204
- });
205
-
206
128
  if (transformFeedback) {
207
129
  transformFeedback.end();
208
130
  }
209
131
  });
132
+ vertexArray.unbindAfterRender(renderPass);
210
133
  return true;
211
134
  }
212
-
213
135
  _compileAndLink() {
214
136
  const {
215
137
  gl
216
138
  } = this.device;
217
139
  gl.attachShader(this.handle, this.vs.handle);
218
140
  gl.attachShader(this.handle, this.fs.handle);
219
- log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
141
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
220
142
  gl.linkProgram(this.handle);
221
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
222
-
223
- if (gl.debug || log.level > 0) {
224
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
225
-
226
- if (!linked) {
227
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
228
- }
229
-
230
- gl.validateProgram(this.handle);
231
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
232
-
233
- if (!validated) {
234
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
235
- }
143
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
144
+ if (!gl.debug && log.level === 0) {}
145
+ const linked = gl.getProgramParameter(this.handle, 35714);
146
+ if (!linked) {
147
+ throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);
148
+ }
149
+ gl.validateProgram(this.handle);
150
+ const validated = gl.getProgramParameter(this.handle, 35715);
151
+ if (!validated) {
152
+ throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);
236
153
  }
237
154
  }
238
-
239
155
  _areTexturesRenderable() {
240
156
  let texturesRenderable = true;
241
-
242
- for (const [name, texture] of Object.entries(this._textureUniforms)) {
243
- texture.update();
244
- texturesRenderable = texturesRenderable && texture.loaded;
245
- }
246
-
247
- for (const [name, texture] of Object.entries(this.bindings)) {
248
- if (texture.loaded !== undefined) {
157
+ for (const [, texture] of Object.entries(this.bindings)) {
158
+ if (texture instanceof WEBGLTexture) {
159
+ texture.update();
249
160
  texturesRenderable = texturesRenderable && texture.loaded;
250
161
  }
251
162
  }
252
-
253
163
  return texturesRenderable;
254
164
  }
255
-
256
165
  _applyBindings() {
257
166
  this.device.gl.useProgram(this.handle);
258
167
  const {
259
168
  gl2
260
169
  } = this.device;
170
+ if (!gl2) {
171
+ throw new Error('bindings');
172
+ }
261
173
  let textureUnit = 0;
262
174
  let uniformBufferIndex = 0;
263
-
264
- for (const binding of this.layout.bindings) {
265
- const value = this.bindings[binding.name];
266
-
175
+ for (const binding of this.shaderLayout.bindings) {
176
+ const value = this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];
267
177
  if (!value) {
268
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
178
+ throw new Error(`No value for binding ${binding.name} in ${this.id}`);
269
179
  }
270
-
271
180
  switch (binding.type) {
272
181
  case 'uniform':
273
182
  const {
274
183
  name
275
184
  } = binding;
276
185
  const location = gl2.getUniformBlockIndex(this.handle, name);
277
-
278
- if (location === GL.INVALID_INDEX) {
279
- throw new Error("Invalid uniform block name ".concat(name));
186
+ if (location === 4294967295) {
187
+ throw new Error(`Invalid uniform block name ${name}`);
280
188
  }
281
-
282
189
  gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
283
-
284
190
  if (value instanceof WEBGLBuffer) {
285
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
191
+ gl2.bindBufferBase(35345, uniformBufferIndex, value.handle);
286
192
  } else {
287
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
193
+ gl2.bindBufferRange(35345, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
288
194
  }
289
-
290
195
  uniformBufferIndex += 1;
291
196
  break;
292
-
293
197
  case 'texture':
294
- if (!(value instanceof WEBGLTexture)) {
198
+ if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
295
199
  throw new Error('texture');
296
200
  }
297
-
298
- const texture = value;
299
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
201
+ let texture;
202
+ if (value instanceof WEBGLTexture) {
203
+ texture = value;
204
+ } else if (value instanceof WEBGLFramebuffer && value.colorAttachments[0] instanceof WEBGLTexture) {
205
+ log.warn('Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead')();
206
+ texture = value.colorAttachments[0];
207
+ } else {
208
+ throw new Error('No texture');
209
+ }
210
+ gl2.activeTexture(33984 + textureUnit);
300
211
  gl2.bindTexture(texture.target, texture.handle);
301
212
  textureUnit += 1;
302
213
  break;
303
-
304
214
  case 'sampler':
305
215
  break;
306
-
307
216
  case 'storage':
308
217
  case 'read-only-storage':
309
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
218
+ throw new Error(`binding type '${binding.type}' not supported in WebGL`);
310
219
  }
311
220
  }
312
221
  }
313
-
314
222
  _applyUniforms() {
315
- for (const uniformLayout of this.layout.uniforms || []) {
223
+ for (const uniformLayout of this.shaderLayout.uniforms || []) {
224
+ var _this$uniforms$name;
316
225
  const {
317
226
  name,
318
227
  location,
319
228
  type,
320
229
  textureUnit
321
230
  } = uniformLayout;
322
- const value = this.uniforms[name] || textureUnit;
323
-
231
+ const value = (_this$uniforms$name = this.uniforms[name]) !== null && _this$uniforms$name !== void 0 ? _this$uniforms$name : textureUnit;
324
232
  if (value !== undefined) {
325
233
  setUniform(this.device.gl, location, type, value);
326
234
  }
327
235
  }
328
236
  }
329
-
330
- }
331
-
332
- function getDrawMode(topology) {
333
- switch (topology) {
334
- case 'point-list':
335
- return GL.POINTS;
336
-
337
- case 'line-list':
338
- return GL.LINES;
339
-
340
- case 'line-strip':
341
- return GL.LINE_STRIP;
342
-
343
- case 'triangle-list':
344
- return GL.TRIANGLES;
345
-
346
- case 'triangle-strip':
347
- return GL.TRIANGLE_STRIP;
348
-
349
- default:
350
- throw new Error(topology);
351
- }
352
- }
353
-
354
- function getGLPrimitive(topology) {
355
- switch (topology) {
356
- case 'point-list':
357
- return GL.POINTS;
358
-
359
- case 'line-list':
360
- return GL.LINES;
361
-
362
- case 'line-strip':
363
- return GL.LINES;
364
-
365
- case 'triangle-list':
366
- return GL.TRIANGLES;
367
-
368
- case 'triangle-strip':
369
- return GL.TRIANGLES;
370
-
371
- default:
372
- throw new Error(topology);
373
- }
374
- }
375
-
376
- function getAttributesByLocation(attributes, layout) {
377
- const byLocation = {};
378
-
379
- for (const [name, buffer] of Object.entries(attributes)) {
380
- const attribute = getAttributeLayout(layout, name);
381
- byLocation[attribute.location] = buffer;
382
- }
383
-
384
- return byLocation;
385
- }
386
-
387
- function getAttributeLayout(layout, name) {
388
- return layout.attributes.find(binding => binding.name === name);
389
- }
390
-
391
- function getBindingLayout(layout, name) {
392
- const binding = layout.bindings.find(binding => binding.name === name);
393
-
394
- if (!binding) {
395
- throw new Error("Unknown binding ".concat(name));
396
- }
397
-
398
- return binding;
399
237
  }
400
238
  //# sourceMappingURL=webgl-render-pipeline.js.map