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

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