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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +100 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +217 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9296 -0
  198. package/dist/index.cjs +6469 -0
  199. package/dist/index.d.ts +20 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +25 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +343 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +42 -42
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,428 +1,245 @@
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, withGLParameters } 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", null);
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", {});
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) {
57
36
  var _this$device$gl;
58
-
59
37
  this.device.assertWebGL2();
60
38
  this.varyings = varyings;
61
39
  (_this$device$gl = this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
62
40
  }
63
-
64
41
  this._compileAndLink();
65
-
66
- this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);
67
- this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
42
+ this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
43
+ this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
44
+ switch (this.props.topology) {
45
+ case 'triangle-fan-webgl':
46
+ case 'line-loop-webgl':
47
+ log.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);
48
+ break;
49
+ default:
50
+ }
68
51
  }
69
-
70
52
  destroy() {
71
53
  if (this.handle) {
72
54
  this.device.gl.deleteProgram(this.handle);
73
55
  this.destroyed = true;
74
56
  }
75
57
  }
76
-
77
- setIndexBuffer(indexBuffer) {
78
- const webglBuffer = cast(indexBuffer);
79
- this.vertexArrayObject.setElementBuffer(webglBuffer);
80
- this._indexBuffer = indexBuffer;
81
- }
82
-
83
- setAttributes(attributes) {
84
- for (const [name, buffer] of Object.entries(attributes)) {
85
- const webglBuffer = cast(buffer);
86
- const attribute = getAttributeLayout(this.layout, name);
87
-
88
- if (!attribute) {
89
- log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
90
- continue;
91
- }
92
-
93
- const decoded = decodeVertexFormat(attribute.format);
94
- const {
95
- type: typeString,
96
- components: size,
97
- byteLength: stride,
98
- normalized,
99
- integer
100
- } = decoded;
101
- const divisor = attribute.stepMode === 'instance' ? 1 : 0;
102
- const type = getWebGLDataType(typeString);
103
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
104
- size,
105
- type,
106
- stride,
107
- offset: 0,
108
- normalized,
109
- integer,
110
- divisor: attribute.stepMode === 'instance' ? 1 : 0
111
- });
112
- }
113
- }
114
-
115
58
  setBindings(bindings) {
116
59
  for (const [name, value] of Object.entries(bindings)) {
117
- const binding = this.layout.bindings.find(binding => binding.name === name);
118
-
60
+ const binding = this.shaderLayout.bindings.find(binding => binding.name === name) || this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
119
61
  if (!binding) {
120
- log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(this.id))();
62
+ const validBindings = this.shaderLayout.bindings.map(binding => `"${binding.name}"`).join(', ');
63
+ log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
121
64
  continue;
122
65
  }
123
-
124
66
  if (!value) {
125
- log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(this.id))();
67
+ log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
126
68
  }
127
-
128
69
  switch (binding.type) {
129
70
  case 'uniform':
130
71
  if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
131
72
  throw new Error('buffer value');
132
73
  }
133
-
134
74
  break;
135
-
136
75
  case 'texture':
137
- if (!(value instanceof WEBGLTexture)) {
76
+ if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
138
77
  throw new Error('texture value');
139
78
  }
140
-
141
79
  break;
142
-
143
80
  case 'sampler':
144
- log.warn("Ignoring sampler ".concat(name))();
81
+ log.warn(`Ignoring sampler ${name}`)();
145
82
  break;
146
-
147
83
  default:
148
84
  throw new Error(binding.type);
149
85
  }
150
-
151
86
  this.bindings[name] = value;
152
87
  }
153
88
  }
154
-
155
89
  setUniforms(uniforms) {
90
+ const {
91
+ bindings
92
+ } = splitUniformsAndBindings(uniforms);
93
+ Object.keys(bindings).forEach(name => {
94
+ log.warn(`Unsupported value "${JSON.stringify(bindings[name])}" used in setUniforms() for key ${name}. Use setBindings() instead?`)();
95
+ });
156
96
  Object.assign(this.uniforms, uniforms);
157
97
  }
158
-
159
98
  draw(options) {
160
- var _this$_indexBuffer;
161
-
99
+ var _vertexArray$indexBuf;
162
100
  const {
163
- renderPass = this.device.getDefaultRenderPass(),
101
+ renderPass,
102
+ vertexArray,
164
103
  vertexCount,
165
- indexCount,
166
104
  instanceCount,
167
105
  firstVertex = 0,
168
- firstIndex,
169
- firstInstance,
170
- baseVertex
106
+ transformFeedback
171
107
  } = options;
172
- const drawMode = getDrawMode(this.props.topology);
173
- const isIndexed = Boolean(this._indexBuffer);
174
- const indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
175
- const isInstanced = Number(options.instanceCount) > 0;
176
-
177
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
108
+ const glDrawMode = getGLDrawMode(this.props.topology);
109
+ const isIndexed = Boolean(vertexArray.indexBuffer);
110
+ const glIndexType = (_vertexArray$indexBuf = vertexArray.indexBuffer) === null || _vertexArray$indexBuf === void 0 ? void 0 : _vertexArray$indexBuf.glIndexType;
111
+ const isInstanced = Number(instanceCount) > 0;
112
+ if (!this._areTexturesRenderable() || vertexCount === 0) {
178
113
  return false;
179
114
  }
180
-
181
115
  this.device.gl.useProgram(this.handle);
182
- this.vertexArrayObject.bind(() => {
183
- const primitiveMode = getGLPrimitive(this.props.topology);
184
- const transformFeedback = null;
185
-
116
+ vertexArray.bindBeforeRender(renderPass);
117
+ if (transformFeedback) {
118
+ transformFeedback.begin(this.props.topology);
119
+ }
120
+ this._applyBindings();
121
+ this._applyUniforms();
122
+ const webglRenderPass = renderPass;
123
+ withDeviceAndGLParameters(this.device, this.props.parameters, webglRenderPass.glParameters, () => {
124
+ if (isIndexed && isInstanced) {
125
+ var _this$device$gl2;
126
+ (_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);
127
+ } else if (isIndexed) {
128
+ this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex);
129
+ } else if (isInstanced) {
130
+ var _this$device$gl3;
131
+ (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(glDrawMode, firstVertex, vertexCount || 0, instanceCount || 0);
132
+ } else {
133
+ this.device.gl.drawArrays(glDrawMode, firstVertex, vertexCount || 0);
134
+ }
186
135
  if (transformFeedback) {
187
- transformFeedback.begin(primitiveMode);
136
+ transformFeedback.end();
188
137
  }
189
-
190
- this._applyBindings();
191
-
192
- this._applyUniforms();
193
-
194
- withDeviceParameters(this.device, this.props.parameters, () => {
195
- withGLParameters(this.device, {
196
- framebuffer: renderPass.props.framebuffer
197
- }, () => {
198
- if (isIndexed && isInstanced) {
199
- var _this$device$gl2;
200
-
201
- (_this$device$gl2 = this.device.gl2) === null || _this$device$gl2 === void 0 ? void 0 : _this$device$gl2.drawElementsInstanced(drawMode, vertexCount || 0, indexType, firstVertex, instanceCount || 0);
202
- } else if (isIndexed) {
203
- this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex);
204
- } else if (isInstanced) {
205
- var _this$device$gl3;
206
-
207
- (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
208
- } else {
209
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
210
- }
211
- });
212
-
213
- if (transformFeedback) {
214
- transformFeedback.end();
215
- }
216
- });
217
138
  });
139
+ vertexArray.unbindAfterRender(renderPass);
218
140
  return true;
219
141
  }
220
-
221
142
  _compileAndLink() {
222
143
  const {
223
144
  gl
224
145
  } = this.device;
225
146
  gl.attachShader(this.handle, this.vs.handle);
226
147
  gl.attachShader(this.handle, this.fs.handle);
227
- log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
148
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
228
149
  gl.linkProgram(this.handle);
229
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
230
-
231
- if (gl.debug || log.level > 0) {
232
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
233
-
234
- if (!linked) {
235
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
236
- }
237
-
238
- gl.validateProgram(this.handle);
239
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
240
-
241
- if (!validated) {
242
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
243
- }
150
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
151
+ if (!gl.debug && log.level === 0) {}
152
+ const linked = gl.getProgramParameter(this.handle, 35714);
153
+ if (!linked) {
154
+ throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);
155
+ }
156
+ gl.validateProgram(this.handle);
157
+ const validated = gl.getProgramParameter(this.handle, 35715);
158
+ if (!validated) {
159
+ throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);
244
160
  }
245
161
  }
246
-
247
162
  _areTexturesRenderable() {
248
163
  let texturesRenderable = true;
249
-
250
- for (const [name, texture] of Object.entries(this._textureUniforms)) {
251
- texture.update();
252
- texturesRenderable = texturesRenderable && texture.loaded;
253
- }
254
-
255
- for (const [name, texture] of Object.entries(this.bindings)) {
256
- if (texture.loaded !== undefined) {
164
+ for (const [, texture] of Object.entries(this.bindings)) {
165
+ if (texture instanceof WEBGLTexture) {
166
+ texture.update();
257
167
  texturesRenderable = texturesRenderable && texture.loaded;
258
168
  }
259
169
  }
260
-
261
170
  return texturesRenderable;
262
171
  }
263
-
264
172
  _applyBindings() {
265
173
  this.device.gl.useProgram(this.handle);
266
174
  const {
267
175
  gl2
268
176
  } = this.device;
269
-
270
177
  if (!gl2) {
271
178
  throw new Error('bindings');
272
179
  }
273
-
274
180
  let textureUnit = 0;
275
181
  let uniformBufferIndex = 0;
276
-
277
- for (const binding of this.layout.bindings) {
278
- const value = this.bindings[binding.name];
279
-
182
+ for (const binding of this.shaderLayout.bindings) {
183
+ const value = this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];
280
184
  if (!value) {
281
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
185
+ throw new Error(`No value for binding ${binding.name} in ${this.id}`);
282
186
  }
283
-
284
187
  switch (binding.type) {
285
188
  case 'uniform':
286
189
  const {
287
190
  name
288
191
  } = binding;
289
192
  const location = gl2.getUniformBlockIndex(this.handle, name);
290
-
291
- if (location === GL.INVALID_INDEX) {
292
- throw new Error("Invalid uniform block name ".concat(name));
193
+ if (location === 4294967295) {
194
+ throw new Error(`Invalid uniform block name ${name}`);
293
195
  }
294
-
295
196
  gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
296
-
297
197
  if (value instanceof WEBGLBuffer) {
298
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
198
+ gl2.bindBufferBase(35345, uniformBufferIndex, value.handle);
299
199
  } else {
300
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
200
+ gl2.bindBufferRange(35345, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
301
201
  }
302
-
303
202
  uniformBufferIndex += 1;
304
203
  break;
305
-
306
204
  case 'texture':
307
- if (!(value instanceof WEBGLTexture)) {
205
+ if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
308
206
  throw new Error('texture');
309
207
  }
310
-
311
- const texture = value;
312
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
208
+ let texture;
209
+ if (value instanceof WEBGLTexture) {
210
+ texture = value;
211
+ } else if (value instanceof WEBGLFramebuffer && value.colorAttachments[0] instanceof WEBGLTexture) {
212
+ log.warn('Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead')();
213
+ texture = value.colorAttachments[0];
214
+ } else {
215
+ throw new Error('No texture');
216
+ }
217
+ gl2.activeTexture(33984 + textureUnit);
313
218
  gl2.bindTexture(texture.target, texture.handle);
314
219
  textureUnit += 1;
315
220
  break;
316
-
317
221
  case 'sampler':
318
222
  break;
319
-
320
223
  case 'storage':
321
224
  case 'read-only-storage':
322
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
225
+ throw new Error(`binding type '${binding.type}' not supported in WebGL`);
323
226
  }
324
227
  }
325
228
  }
326
-
327
229
  _applyUniforms() {
328
- for (const uniformLayout of this.layout.uniforms || []) {
230
+ for (const uniformLayout of this.shaderLayout.uniforms || []) {
231
+ var _this$uniforms$name;
329
232
  const {
330
233
  name,
331
234
  location,
332
235
  type,
333
236
  textureUnit
334
237
  } = uniformLayout;
335
- const value = this.uniforms[name] || textureUnit;
336
-
238
+ const value = (_this$uniforms$name = this.uniforms[name]) !== null && _this$uniforms$name !== void 0 ? _this$uniforms$name : textureUnit;
337
239
  if (value !== undefined) {
338
240
  setUniform(this.device.gl, location, type, value);
339
241
  }
340
242
  }
341
243
  }
342
-
343
- }
344
-
345
- function getDrawMode(topology) {
346
- switch (topology) {
347
- case 'point-list':
348
- return GL.POINTS;
349
-
350
- case 'line-list':
351
- return GL.LINES;
352
-
353
- case 'line-strip':
354
- return GL.LINE_STRIP;
355
-
356
- case 'line-loop':
357
- return GL.LINE_LOOP;
358
-
359
- case 'triangle-list':
360
- return GL.TRIANGLES;
361
-
362
- case 'triangle-strip':
363
- return GL.TRIANGLE_STRIP;
364
-
365
- case 'triangle-fan':
366
- return GL.TRIANGLE_FAN;
367
-
368
- default:
369
- throw new Error(topology);
370
- }
371
- }
372
-
373
- function getGLPrimitive(topology) {
374
- switch (topology) {
375
- case 'point-list':
376
- return GL.POINTS;
377
-
378
- case 'line-list':
379
- return GL.LINES;
380
-
381
- case 'line-strip':
382
- return GL.LINES;
383
-
384
- case 'line-loop':
385
- return GL.LINES;
386
-
387
- case 'triangle-list':
388
- return GL.TRIANGLES;
389
-
390
- case 'triangle-strip':
391
- return GL.TRIANGLES;
392
-
393
- case 'triangle-fan':
394
- return GL.TRIANGLES;
395
-
396
- default:
397
- throw new Error(topology);
398
- }
399
- }
400
-
401
- function getAttributesByLocation(attributes, layout) {
402
- const byLocation = {};
403
-
404
- for (const [name, buffer] of Object.entries(attributes)) {
405
- const attribute = getAttributeLayout(layout, name);
406
-
407
- if (attribute) {
408
- byLocation[attribute.location] = buffer;
409
- }
410
- }
411
-
412
- return byLocation;
413
- }
414
-
415
- function getAttributeLayout(layout, name) {
416
- return layout.attributes.find(binding => binding.name === name) || null;
417
- }
418
-
419
- function getBindingLayout(layout, name) {
420
- const binding = layout.bindings.find(binding => binding.name === name);
421
-
422
- if (!binding) {
423
- throw new Error("Unknown binding ".concat(name));
424
- }
425
-
426
- return binding;
427
244
  }
428
245
  //# sourceMappingURL=webgl-render-pipeline.js.map