@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.21

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 (468) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +11 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +17 -35
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts +2 -2
  6. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/renderbuffer-formats.js +2 -7
  8. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  10. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  11. package/dist/adapter/converters/sampler-parameters.js +19 -55
  12. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  13. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  14. package/dist/adapter/converters/texture-formats.js +13 -66
  15. package/dist/adapter/converters/texture-formats.js.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  17. package/dist/adapter/converters/vertex-formats.js +2 -8
  18. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.js +1 -4
  23. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  24. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  25. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  26. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  27. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  28. package/dist/adapter/helpers/attribute-utils.js +0 -17
  29. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  31. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  32. package/dist/adapter/helpers/get-shader-info.js +25 -0
  33. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  34. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  36. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  37. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  39. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  40. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  41. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  42. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.js +1 -31
  44. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  45. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  46. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  47. package/dist/adapter/helpers/uniforms.js +4 -14
  48. package/dist/adapter/helpers/uniforms.js.map +1 -1
  49. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  50. package/dist/adapter/objects/constants-to-keys.js +0 -7
  51. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  52. package/dist/adapter/objects/webgl-renderbuffer.d.ts +3 -3
  53. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  54. package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
  55. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  56. package/dist/adapter/objects/webgl-resource.d.ts +3 -5
  57. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  58. package/dist/adapter/objects/webgl-resource.js +15 -68
  59. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  60. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
  61. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
  63. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  64. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  65. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-buffer.js +18 -49
  67. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  68. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  69. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-command-buffer.js +3 -18
  71. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  72. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
  73. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-command-encoder.js +2 -15
  75. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  76. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.d.ts +16 -16
  78. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-framebuffer.js +17 -75
  80. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
  82. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.js +3 -8
  84. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  86. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
  88. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  89. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  90. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.js +5 -13
  92. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  93. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  94. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.js +8 -21
  96. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.d.ts +26 -26
  98. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-texture.js +66 -183
  100. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  101. package/dist/adapter/webgl-canvas-context.d.ts +3 -3
  102. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  103. package/dist/adapter/webgl-canvas-context.js +6 -19
  104. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +53 -37
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +108 -109
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/classic/accessor.d.ts +1 -1
  110. package/dist/classic/accessor.d.ts.map +1 -1
  111. package/dist/classic/accessor.js +12 -36
  112. package/dist/classic/accessor.js.map +1 -1
  113. package/dist/classic/buffer.d.ts +3 -4
  114. package/dist/classic/buffer.d.ts.map +1 -1
  115. package/dist/classic/buffer.js +30 -87
  116. package/dist/classic/buffer.js.map +1 -1
  117. package/dist/classic/typed-array-utils.d.ts +1 -1
  118. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  119. package/dist/classic/typed-array-utils.js +0 -20
  120. package/dist/classic/typed-array-utils.js.map +1 -1
  121. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  122. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  123. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  124. package/dist/context/context/create-browser-context.js.map +1 -0
  125. package/dist/context/context/create-headless-context.d.ts +9 -0
  126. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  127. package/dist/context/context/create-headless-context.js +42 -0
  128. package/dist/context/context/create-headless-context.js.map +1 -0
  129. package/dist/context/context/webgl-checks.js +0 -3
  130. package/dist/context/context/webgl-checks.js.map +1 -1
  131. package/dist/context/debug/spector.d.ts +1 -0
  132. package/dist/context/debug/spector.d.ts.map +1 -1
  133. package/dist/context/debug/spector.js +7 -19
  134. package/dist/context/debug/spector.js.map +1 -1
  135. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  136. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  137. package/dist/context/debug/webgl-developer-tools.js +8 -32
  138. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  139. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  140. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  141. package/dist/context/parameters/unified-parameter-api.js +8 -18
  142. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  143. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  144. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  145. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  146. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  147. package/dist/context/polyfill/context-data.d.ts +13 -0
  148. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  149. package/dist/context/polyfill/context-data.js +12 -0
  150. package/dist/context/polyfill/context-data.js.map +1 -0
  151. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  152. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  154. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  155. package/dist/context/polyfill/polyfill-context.js +20 -28
  156. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  157. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  158. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  159. package/dist/context/polyfill/polyfill-table.js +8 -30
  160. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  162. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  163. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  164. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  165. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  166. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.js +15 -50
  168. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  169. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  171. package/dist/context/state-tracker/with-parameters.js +7 -9
  172. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  173. package/dist/dist.dev.js +9204 -0
  174. package/dist/index.cjs +5948 -0
  175. package/dist/index.d.ts +19 -19
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +24 -26
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/webgl.d.ts +8 -7
  180. package/dist/types/webgl.d.ts.map +1 -1
  181. package/dist/types/webgl.js.map +1 -1
  182. package/dist/types.js.map +1 -1
  183. package/dist.min.js +36 -0
  184. package/package.json +18 -9
  185. package/src/.DS_Store +0 -0
  186. package/src/adapter/.DS_Store +0 -0
  187. package/src/adapter/converters/device-parameters.ts +45 -16
  188. package/src/adapter/converters/renderbuffer-formats.ts +1 -3
  189. package/src/adapter/converters/sampler-parameters.ts +18 -7
  190. package/src/adapter/converters/texture-formats.ts +18 -16
  191. package/src/adapter/converters/vertex-formats.ts +1 -0
  192. package/src/adapter/device-helpers/device-features.ts +9 -2
  193. package/src/adapter/device-helpers/device-limits.ts +1 -1
  194. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  195. package/src/adapter/helpers/get-shader-info.ts +37 -0
  196. package/src/adapter/helpers/get-shader-layout.ts +59 -37
  197. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  198. package/src/adapter/helpers/set-uniform.ts +3 -1
  199. package/src/adapter/helpers/uniforms.ts +21 -10
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +8 -8
  202. package/src/adapter/objects/webgl-resource.ts +8 -13
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
  204. package/src/adapter/resources/webgl-buffer.ts +16 -16
  205. package/src/adapter/resources/webgl-command-buffer.ts +3 -3
  206. package/src/adapter/resources/webgl-command-encoder.ts +8 -8
  207. package/src/adapter/resources/webgl-external-texture.ts +1 -1
  208. package/src/adapter/resources/webgl-framebuffer.ts +36 -33
  209. package/src/adapter/resources/webgl-render-pass.ts +4 -3
  210. package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
  211. package/src/adapter/resources/webgl-sampler.ts +12 -6
  212. package/src/adapter/resources/webgl-shader.ts +10 -9
  213. package/src/adapter/resources/webgl-texture.ts +55 -45
  214. package/src/adapter/webgl-canvas-context.ts +8 -9
  215. package/src/adapter/webgl-device.ts +153 -69
  216. package/src/classic/accessor.ts +2 -15
  217. package/src/classic/buffer.ts +18 -25
  218. package/src/classic/typed-array-utils.ts +4 -2
  219. package/src/context/.DS_Store +0 -0
  220. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  221. package/src/context/context/create-headless-context.ts +48 -0
  222. package/src/context/debug/spector.ts +6 -5
  223. package/src/context/debug/webgl-developer-tools.ts +13 -13
  224. package/src/context/parameters/unified-parameter-api.ts +18 -12
  225. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  226. package/src/context/polyfill/context-data.ts +27 -0
  227. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  228. package/src/context/polyfill/polyfill-context.ts +6 -8
  229. package/src/context/polyfill/polyfill-table.ts +16 -14
  230. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  231. package/src/context/state-tracker/track-context-state.ts +13 -12
  232. package/src/context/state-tracker/with-parameters.ts +8 -2
  233. package/src/index.ts +28 -26
  234. package/src/types/webgl.ts +10 -7
  235. package/dist/bundle.d.ts +0 -2
  236. package/dist/bundle.d.ts.map +0 -1
  237. package/dist/bundle.js +0 -5
  238. package/dist/bundle.js.map +0 -1
  239. package/dist/context/context/context-state.d.ts +0 -18
  240. package/dist/context/context/context-state.d.ts.map +0 -1
  241. package/dist/context/context/context-state.js +0 -26
  242. package/dist/context/context/context-state.js.map +0 -1
  243. package/dist/context/context/create-context.d.ts.map +0 -1
  244. package/dist/context/context/create-context.js.map +0 -1
  245. package/dist/context/context/device-pixels.d.ts +0 -25
  246. package/dist/context/context/device-pixels.d.ts.map +0 -1
  247. package/dist/context/context/device-pixels.js +0 -98
  248. package/dist/context/context/device-pixels.js.map +0 -1
  249. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  250. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  251. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  252. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  253. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  254. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  255. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  256. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  257. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  258. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  259. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  260. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  261. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  262. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  263. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  264. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  265. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  266. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  267. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  268. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  270. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  271. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  272. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  273. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  274. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  275. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  276. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  277. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  278. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  279. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  280. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  281. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  282. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  283. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  284. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  286. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  288. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  290. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  291. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  292. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  293. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  294. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  295. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  296. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  297. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  298. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  299. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  300. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  301. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  302. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  303. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  304. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  305. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  306. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  307. package/dist/es5/adapter/webgl-device.js +0 -399
  308. package/dist/es5/adapter/webgl-device.js.map +0 -1
  309. package/dist/es5/bundle.js +0 -7
  310. package/dist/es5/bundle.js.map +0 -1
  311. package/dist/es5/classic/accessor.js +0 -181
  312. package/dist/es5/classic/accessor.js.map +0 -1
  313. package/dist/es5/classic/buffer.js +0 -470
  314. package/dist/es5/classic/buffer.js.map +0 -1
  315. package/dist/es5/classic/typed-array-utils.js +0 -126
  316. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  317. package/dist/es5/context/context/context-state.js +0 -31
  318. package/dist/es5/context/context/context-state.js.map +0 -1
  319. package/dist/es5/context/context/create-context.js +0 -69
  320. package/dist/es5/context/context/create-context.js.map +0 -1
  321. package/dist/es5/context/context/device-pixels.js +0 -115
  322. package/dist/es5/context/context/device-pixels.js.map +0 -1
  323. package/dist/es5/context/context/webgl-checks.js +0 -54
  324. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  325. package/dist/es5/context/debug/spector.js +0 -133
  326. package/dist/es5/context/debug/spector.js.map +0 -1
  327. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  328. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  329. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  330. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  331. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  332. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  333. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  334. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  335. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  336. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  337. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  338. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  339. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  340. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  341. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  342. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  343. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  344. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  345. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  346. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  347. package/dist/es5/index.js +0 -276
  348. package/dist/es5/index.js.map +0 -1
  349. package/dist/es5/init.js +0 -10
  350. package/dist/es5/init.js.map +0 -1
  351. package/dist/es5/types/webgl.js +0 -6
  352. package/dist/es5/types/webgl.js.map +0 -1
  353. package/dist/es5/types.js +0 -2
  354. package/dist/es5/types.js.map +0 -1
  355. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  356. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  357. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  358. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  359. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  360. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  361. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  362. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  363. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  364. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  365. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  366. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  367. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  368. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  369. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  370. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  371. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  372. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  373. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  374. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  375. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  376. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  377. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  378. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  379. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  380. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  381. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  382. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  383. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  384. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  385. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  386. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  387. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  388. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  389. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  390. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  392. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  394. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  396. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  397. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  398. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  399. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  400. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  401. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  402. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  403. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  404. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  405. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  406. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  407. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  408. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  409. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  410. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  411. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  412. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  413. package/dist/esm/adapter/webgl-device.js +0 -280
  414. package/dist/esm/adapter/webgl-device.js.map +0 -1
  415. package/dist/esm/bundle.js +0 -5
  416. package/dist/esm/bundle.js.map +0 -1
  417. package/dist/esm/classic/accessor.js +0 -144
  418. package/dist/esm/classic/accessor.js.map +0 -1
  419. package/dist/esm/classic/buffer.js +0 -384
  420. package/dist/esm/classic/buffer.js.map +0 -1
  421. package/dist/esm/classic/typed-array-utils.js +0 -112
  422. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  423. package/dist/esm/context/context/context-state.js +0 -26
  424. package/dist/esm/context/context/context-state.js.map +0 -1
  425. package/dist/esm/context/context/create-context.js +0 -49
  426. package/dist/esm/context/context/create-context.js.map +0 -1
  427. package/dist/esm/context/context/device-pixels.js +0 -98
  428. package/dist/esm/context/context/device-pixels.js.map +0 -1
  429. package/dist/esm/context/context/webgl-checks.js +0 -34
  430. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  431. package/dist/esm/context/debug/spector.js +0 -76
  432. package/dist/esm/context/debug/spector.js.map +0 -1
  433. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  434. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  435. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  436. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  437. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  438. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  439. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  440. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  441. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  442. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  443. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  444. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  445. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  446. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  447. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  448. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  449. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  450. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  451. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  452. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  453. package/dist/esm/index.js +0 -27
  454. package/dist/esm/index.js.map +0 -1
  455. package/dist/esm/init.js +0 -4
  456. package/dist/esm/init.js.map +0 -1
  457. package/dist/esm/types/webgl.js +0 -2
  458. package/dist/esm/types/webgl.js.map +0 -1
  459. package/dist/esm/types.js +0 -2
  460. package/dist/esm/types.js.map +0 -1
  461. package/dist/init.d.ts +0 -2
  462. package/dist/init.d.ts.map +0 -1
  463. package/dist/init.js +0 -4
  464. package/dist/init.js.map +0 -1
  465. package/src/bundle.ts +0 -4
  466. package/src/context/context/context-state.ts +0 -41
  467. package/src/context/context/device-pixels.ts +0 -152
  468. package/src/init.ts +0 -4
@@ -1,505 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _api = require("@luma.gl/api");
27
-
28
- var _constants = _interopRequireDefault(require("@luma.gl/constants"));
29
-
30
- var _textureFormats = require("../converters/texture-formats");
31
-
32
- var _getShaderLayout = require("../helpers/get-shader-layout");
33
-
34
- var _deviceParameters = require("../converters/device-parameters");
35
-
36
- var _setUniform = require("../helpers/set-uniform");
37
-
38
- var _webglBuffer = _interopRequireDefault(require("./webgl-buffer"));
39
-
40
- var _webglTexture = _interopRequireDefault(require("./webgl-texture"));
41
-
42
- var _webglVertexArrayObject = _interopRequireDefault(require("../objects/webgl-vertex-array-object"));
43
-
44
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
45
-
46
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
47
-
48
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
49
-
50
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
51
-
52
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
53
-
54
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
55
-
56
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
-
58
- var LOG_PROGRAM_PERF_PRIORITY = 4;
59
-
60
- var WEBGLRenderPipeline = function (_RenderPipeline) {
61
- (0, _inherits2.default)(WEBGLRenderPipeline, _RenderPipeline);
62
-
63
- var _super = _createSuper(WEBGLRenderPipeline);
64
-
65
- function WEBGLRenderPipeline(device, props) {
66
- var _this;
67
-
68
- (0, _classCallCheck2.default)(this, WEBGLRenderPipeline);
69
- _this = _super.call(this, device, props);
70
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
71
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
72
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vs", void 0);
73
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fs", void 0);
74
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "layout", void 0);
75
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "varyings", void 0);
76
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vertexArrayObject", void 0);
77
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_indexBuffer", void 0);
78
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "uniforms", {});
79
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "bindings", {});
80
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_textureUniforms", {});
81
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_textureIndexCounter", 0);
82
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_uniformCount", 0);
83
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_uniformSetters", void 0);
84
- _this.device = device;
85
- _this.handle = _this.props.handle || _this.device.gl.createProgram();
86
- _this.handle.__SPECTOR_Metadata = {
87
- id: _this.props.id
88
- };
89
- _this.vs = (0, _api.cast)(props.vs);
90
- _this.fs = (0, _api.cast)(props.fs);
91
- var varyings = props.varyings,
92
- _props$bufferMode = props.bufferMode,
93
- bufferMode = _props$bufferMode === void 0 ? _constants.default.SEPARATE_ATTRIBS : _props$bufferMode;
94
-
95
- if (varyings && varyings.length > 0) {
96
- _this.device.assertWebGL2();
97
-
98
- _this.varyings = varyings;
99
-
100
- _this.device.gl2.transformFeedbackVaryings(_this.handle, varyings, bufferMode);
101
- }
102
-
103
- _this._compileAndLink();
104
-
105
- _this.layout = props.layout || (0, _getShaderLayout.getShaderLayout)(_this.device.gl, _this.handle);
106
- _this.vertexArrayObject = new _webglVertexArrayObject.default(_this.device);
107
- return _this;
108
- }
109
-
110
- (0, _createClass2.default)(WEBGLRenderPipeline, [{
111
- key: "destroy",
112
- value: function destroy() {
113
- if (this.handle) {
114
- this.device.gl.deleteProgram(this.handle);
115
- this.handle = null;
116
- }
117
- }
118
- }, {
119
- key: "setIndexBuffer",
120
- value: function setIndexBuffer(indexBuffer) {
121
- var webglBuffer = (0, _api.cast)(indexBuffer);
122
- this.vertexArrayObject.setElementBuffer(webglBuffer);
123
- this._indexBuffer = indexBuffer;
124
- }
125
- }, {
126
- key: "setAttributes",
127
- value: function setAttributes(attributes) {
128
- for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) {
129
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
130
- name = _Object$entries$_i[0],
131
- buffer = _Object$entries$_i[1];
132
-
133
- var webglBuffer = (0, _api.cast)(buffer);
134
- var attribute = getAttributeLayout(this.layout, name);
135
-
136
- if (!attribute) {
137
- _api.log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
138
-
139
- continue;
140
- }
141
-
142
- var decoded = (0, _api.decodeVertexFormat)(attribute.format);
143
- var typeString = decoded.type,
144
- size = decoded.components,
145
- stride = decoded.byteLength,
146
- normalized = decoded.normalized,
147
- integer = decoded.integer;
148
- var divisor = attribute.stepMode === 'instance' ? 1 : 0;
149
- var type = (0, _textureFormats.getWebGLDataType)(typeString);
150
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
151
- size: size,
152
- type: type,
153
- stride: stride,
154
- offset: 0,
155
- normalized: normalized,
156
- integer: integer,
157
- divisor: attribute.stepMode === 'instance' ? 1 : 0
158
- });
159
- }
160
- }
161
- }, {
162
- key: "setBindings",
163
- value: function setBindings(bindings) {
164
- var _this2 = this;
165
-
166
- var _loop = function _loop() {
167
- var _Object$entries2$_i = (0, _slicedToArray2.default)(_Object$entries2[_i2], 2),
168
- name = _Object$entries2$_i[0],
169
- value = _Object$entries2$_i[1];
170
-
171
- var binding = _this2.layout.bindings.find(function (binding) {
172
- return binding.name === name;
173
- });
174
-
175
- if (!binding) {
176
- _api.log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(_this2.id))();
177
- }
178
-
179
- if (!value) {
180
- _api.log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(_this2.id))();
181
- }
182
-
183
- switch (binding.type) {
184
- case 'uniform':
185
- if (!(value instanceof _webglBuffer.default) && !(value.buffer instanceof _webglBuffer.default)) {
186
- throw new Error('buffer value');
187
- }
188
-
189
- break;
190
-
191
- case 'texture':
192
- if (!(value instanceof _webglTexture.default)) {
193
- throw new Error('texture value');
194
- }
195
-
196
- break;
197
-
198
- case 'sampler':
199
- _api.log.warn("Ignoring sampler ".concat(name))();
200
-
201
- break;
202
-
203
- default:
204
- throw new Error(binding.type);
205
- }
206
-
207
- _this2.bindings[name] = value;
208
- };
209
-
210
- for (var _i2 = 0, _Object$entries2 = Object.entries(bindings); _i2 < _Object$entries2.length; _i2++) {
211
- _loop();
212
- }
213
- }
214
- }, {
215
- key: "setUniforms",
216
- value: function setUniforms(uniforms) {
217
- Object.assign(this.uniforms, uniforms);
218
- }
219
- }, {
220
- key: "draw",
221
- value: function draw(options) {
222
- var _this$_indexBuffer,
223
- _this3 = this;
224
-
225
- var _options$renderPass = options.renderPass,
226
- renderPass = _options$renderPass === void 0 ? this.device.getDefaultRenderPass() : _options$renderPass,
227
- vertexCount = options.vertexCount,
228
- indexCount = options.indexCount,
229
- instanceCount = options.instanceCount,
230
- _options$firstVertex = options.firstVertex,
231
- firstVertex = _options$firstVertex === void 0 ? 0 : _options$firstVertex,
232
- firstIndex = options.firstIndex,
233
- firstInstance = options.firstInstance,
234
- baseVertex = options.baseVertex;
235
- var drawMode = getDrawMode(this.props.topology);
236
- var isIndexed = Boolean(this._indexBuffer);
237
- var indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? _constants.default.UNSIGNED_SHORT : _constants.default.UNSIGNED_INT;
238
- var isInstanced = options.instanceCount > 0;
239
-
240
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
241
- return false;
242
- }
243
-
244
- this.device.gl.useProgram(this.handle);
245
- this.vertexArrayObject.bind(function () {
246
- var parameters = _objectSpread(_objectSpread({}, _this3.props.parameters), {}, {
247
- framebuffer: renderPass.props.framebuffer
248
- });
249
-
250
- var primitiveMode = getGLPrimitive(_this3.props.topology);
251
- var transformFeedback = null;
252
-
253
- if (transformFeedback) {
254
- transformFeedback.begin(primitiveMode);
255
- }
256
-
257
- _this3._applyBindings();
258
-
259
- _this3._applyUniforms();
260
-
261
- (0, _deviceParameters.withDeviceParameters)(_this3.device, parameters, function () {
262
- if (isIndexed && isInstanced) {
263
- _this3.device.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, firstVertex, instanceCount);
264
- } else if (isIndexed) {
265
- _this3.device.gl.drawElements(drawMode, vertexCount, indexType, firstVertex);
266
- } else if (isInstanced) {
267
- _this3.device.gl2.drawArraysInstanced(drawMode, firstVertex, vertexCount, instanceCount);
268
- } else {
269
- _this3.device.gl.drawArrays(drawMode, firstVertex, vertexCount);
270
- }
271
- });
272
-
273
- if (transformFeedback) {
274
- transformFeedback.end();
275
- }
276
- });
277
- return true;
278
- }
279
- }, {
280
- key: "_compileAndLink",
281
- value: function _compileAndLink() {
282
- var gl = this.device.gl;
283
- gl.attachShader(this.handle, this.vs.handle);
284
- gl.attachShader(this.handle, this.fs.handle);
285
-
286
- _api.log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
287
-
288
- gl.linkProgram(this.handle);
289
-
290
- _api.log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
291
-
292
- if (gl.debug || _api.log.level > 0) {
293
- var linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
294
-
295
- if (!linked) {
296
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
297
- }
298
-
299
- gl.validateProgram(this.handle);
300
- var validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
301
-
302
- if (!validated) {
303
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
304
- }
305
- }
306
- }
307
- }, {
308
- key: "_areTexturesRenderable",
309
- value: function _areTexturesRenderable() {
310
- var texturesRenderable = true;
311
-
312
- for (var _i3 = 0, _Object$entries3 = Object.entries(this._textureUniforms); _i3 < _Object$entries3.length; _i3++) {
313
- var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i3], 2),
314
- name = _Object$entries3$_i[0],
315
- texture = _Object$entries3$_i[1];
316
-
317
- texture.update();
318
- texturesRenderable = texturesRenderable && texture.loaded;
319
- }
320
-
321
- for (var _i4 = 0, _Object$entries4 = Object.entries(this.bindings); _i4 < _Object$entries4.length; _i4++) {
322
- var _Object$entries4$_i = (0, _slicedToArray2.default)(_Object$entries4[_i4], 2),
323
- _name = _Object$entries4$_i[0],
324
- _texture = _Object$entries4$_i[1];
325
-
326
- if (_texture.loaded !== undefined) {
327
- texturesRenderable = texturesRenderable && _texture.loaded;
328
- }
329
- }
330
-
331
- return texturesRenderable;
332
- }
333
- }, {
334
- key: "_applyBindings",
335
- value: function _applyBindings() {
336
- this.device.gl.useProgram(this.handle);
337
- var gl2 = this.device.gl2;
338
- var textureUnit = 0;
339
- var uniformBufferIndex = 0;
340
-
341
- var _iterator = _createForOfIteratorHelper(this.layout.bindings),
342
- _step;
343
-
344
- try {
345
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
346
- var binding = _step.value;
347
- var value = this.bindings[binding.name];
348
-
349
- if (!value) {
350
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
351
- }
352
-
353
- switch (binding.type) {
354
- case 'uniform':
355
- var name = binding.name;
356
- var location = gl2.getUniformBlockIndex(this.handle, name);
357
-
358
- if (location === _constants.default.INVALID_INDEX) {
359
- throw new Error("Invalid uniform block name ".concat(name));
360
- }
361
-
362
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
363
-
364
- if (value instanceof _webglBuffer.default) {
365
- gl2.bindBufferBase(_constants.default.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
366
- } else {
367
- gl2.bindBufferRange(_constants.default.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
368
- }
369
-
370
- uniformBufferIndex += 1;
371
- break;
372
-
373
- case 'texture':
374
- if (!(value instanceof _webglTexture.default)) {
375
- throw new Error('texture');
376
- }
377
-
378
- var texture = value;
379
- gl2.activeTexture(_constants.default.TEXTURE0 + textureUnit);
380
- gl2.bindTexture(texture.target, texture.handle);
381
- textureUnit += 1;
382
- break;
383
-
384
- case 'sampler':
385
- break;
386
-
387
- case 'storage':
388
- case 'read-only-storage':
389
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
390
- }
391
- }
392
- } catch (err) {
393
- _iterator.e(err);
394
- } finally {
395
- _iterator.f();
396
- }
397
- }
398
- }, {
399
- key: "_applyUniforms",
400
- value: function _applyUniforms() {
401
- var _iterator2 = _createForOfIteratorHelper(this.layout.uniforms || []),
402
- _step2;
403
-
404
- try {
405
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
406
- var uniformLayout = _step2.value;
407
- var name = uniformLayout.name,
408
- location = uniformLayout.location,
409
- type = uniformLayout.type,
410
- textureUnit = uniformLayout.textureUnit;
411
- var value = this.uniforms[name] || textureUnit;
412
-
413
- if (value !== undefined) {
414
- (0, _setUniform.setUniform)(this.device.gl, location, type, value);
415
- }
416
- }
417
- } catch (err) {
418
- _iterator2.e(err);
419
- } finally {
420
- _iterator2.f();
421
- }
422
- }
423
- }]);
424
- return WEBGLRenderPipeline;
425
- }(_api.RenderPipeline);
426
-
427
- exports.default = WEBGLRenderPipeline;
428
-
429
- function getDrawMode(topology) {
430
- switch (topology) {
431
- case 'point-list':
432
- return _constants.default.POINTS;
433
-
434
- case 'line-list':
435
- return _constants.default.LINES;
436
-
437
- case 'line-strip':
438
- return _constants.default.LINE_STRIP;
439
-
440
- case 'triangle-list':
441
- return _constants.default.TRIANGLES;
442
-
443
- case 'triangle-strip':
444
- return _constants.default.TRIANGLE_STRIP;
445
-
446
- default:
447
- throw new Error(topology);
448
- }
449
- }
450
-
451
- function getGLPrimitive(topology) {
452
- switch (topology) {
453
- case 'point-list':
454
- return _constants.default.POINTS;
455
-
456
- case 'line-list':
457
- return _constants.default.LINES;
458
-
459
- case 'line-strip':
460
- return _constants.default.LINES;
461
-
462
- case 'triangle-list':
463
- return _constants.default.TRIANGLES;
464
-
465
- case 'triangle-strip':
466
- return _constants.default.TRIANGLES;
467
-
468
- default:
469
- throw new Error(topology);
470
- }
471
- }
472
-
473
- function getAttributesByLocation(attributes, layout) {
474
- var byLocation = {};
475
-
476
- for (var _i5 = 0, _Object$entries5 = Object.entries(attributes); _i5 < _Object$entries5.length; _i5++) {
477
- var _Object$entries5$_i = (0, _slicedToArray2.default)(_Object$entries5[_i5], 2),
478
- name = _Object$entries5$_i[0],
479
- buffer = _Object$entries5$_i[1];
480
-
481
- var attribute = getAttributeLayout(layout, name);
482
- byLocation[attribute.location] = buffer;
483
- }
484
-
485
- return byLocation;
486
- }
487
-
488
- function getAttributeLayout(layout, name) {
489
- return layout.attributes.find(function (binding) {
490
- return binding.name === name;
491
- });
492
- }
493
-
494
- function getBindingLayout(layout, name) {
495
- var binding = layout.bindings.find(function (binding) {
496
- return binding.name === name;
497
- });
498
-
499
- if (!binding) {
500
- throw new Error("Unknown binding ".concat(name));
501
- }
502
-
503
- return binding;
504
- }
505
- //# sourceMappingURL=webgl-render-pipeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":["LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","device","props","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","fs","varyings","bufferMode","GL","SEPARATE_ATTRIBS","length","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","WEBGLVertexArrayObject","deleteProgram","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","attributes","Object","entries","name","buffer","attribute","getAttributeLayout","log","warn","decoded","format","typeString","type","size","components","stride","byteLength","normalized","integer","divisor","stepMode","setBuffer","location","offset","bindings","value","binding","find","WEBGLBuffer","Error","WEBGLTexture","uniforms","assign","options","renderPass","getDefaultRenderPass","vertexCount","indexCount","instanceCount","firstVertex","firstIndex","firstInstance","baseVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","_areTexturesRenderable","useProgram","bind","parameters","framebuffer","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","_textureUniforms","texture","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","RenderPipeline","POINTS","LINES","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","getAttributesByLocation","byLocation","getBindingLayout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAEA;;AACA;;;;;;;;;;;;;;;;AAEA,IAAMA,yBAAyB,GAAG,CAAlC;;IAGqBC,mB;;;;;AAmBnB,+BAAYC,MAAZ,EAAiCC,KAAjC,EAA6D;AAAA;;AAAA;AAC3D,8BAAMD,MAAN,EAAcC,KAAd;AAD2D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2FAP7B,EAO6B;AAAA,2FAN7B,EAM6B;AAAA,mGALrB,EAKqB;AAAA,uGAJ9B,CAI8B;AAAA,gGAHrC,CAGqC;AAAA;AAE3D,UAAKD,MAAL,GAAcA,MAAd;AACA,UAAKE,MAAL,GAAc,MAAKD,KAAL,CAAWC,MAAX,IAAqB,MAAKF,MAAL,CAAYG,EAAZ,CAAeC,aAAf,EAAnC;AAEA,UAAKF,MAAL,CAAYG,kBAAZ,GAAiC;AAACC,MAAAA,EAAE,EAAE,MAAKL,KAAL,CAAWK;AAAhB,KAAjC;AAGA,UAAKC,EAAL,GAAU,eAAkBN,KAAK,CAACM,EAAxB,CAAV;AACA,UAAKC,EAAL,GAAU,eAAkBP,KAAK,CAACO,EAAxB,CAAV;AAMA,QAAOC,QAAP,GAAqDR,KAArD,CAAOQ,QAAP;AAAA,4BAAqDR,KAArD,CAAiBS,UAAjB;AAAA,QAAiBA,UAAjB,kCAA8BC,mBAAGC,gBAAjC;;AACA,QAAIH,QAAQ,IAAIA,QAAQ,CAACI,MAAT,GAAkB,CAAlC,EAAqC;AACnC,YAAKb,MAAL,CAAYc,YAAZ;;AACA,YAAKL,QAAL,GAAgBA,QAAhB;;AACA,YAAKT,MAAL,CAAYe,GAAZ,CAAgBC,yBAAhB,CAA0C,MAAKd,MAA/C,EAAuDO,QAAvD,EAAiEC,UAAjE;AACD;;AAED,UAAKO,eAAL;;AAEA,UAAKC,MAAL,GAAcjB,KAAK,CAACiB,MAAN,IAAgB,sCAAgB,MAAKlB,MAAL,CAAYG,EAA5B,EAAgC,MAAKD,MAArC,CAA9B;AACA,UAAKiB,iBAAL,GAAyB,IAAIC,+BAAJ,CAA2B,MAAKpB,MAAhC,CAAzB;AAzB2D;AA0B5D;;;;WAED,mBAAgB;AACd,UAAI,KAAKE,MAAT,EAAiB;AACf,aAAKF,MAAL,CAAYG,EAAZ,CAAekB,aAAf,CAA6B,KAAKnB,MAAlC;AACA,aAAKA,MAAL,GAAc,IAAd;AACD;AACF;;;WAED,wBAAeoB,WAAf,EAA0C;AACxC,UAAMC,WAAW,GAAG,eAAkBD,WAAlB,CAApB;AACA,WAAKH,iBAAL,CAAuBK,gBAAvB,CAAwCD,WAAxC;AACA,WAAKE,YAAL,GAAoBH,WAApB;AACD;;;WAGD,uBAAcI,UAAd,EAAwD;AACtD,yCAA6BC,MAAM,CAACC,OAAP,CAAeF,UAAf,CAA7B,qCAAyD;AAApD;AAAA,YAAOG,IAAP;AAAA,YAAaC,MAAb;;AACH,YAAMP,WAAW,GAAG,eAAkBO,MAAlB,CAApB;AACA,YAAMC,SAAS,GAAGC,kBAAkB,CAAC,KAAKd,MAAN,EAAcW,IAAd,CAApC;;AACA,YAAI,CAACE,SAAL,EAAgB;AACdE,mBAAIC,IAAJ,4DAA4DL,IAA5D,8BAAkF,KAAKvB,EAAvF,0BAAuGwB,MAAM,CAACxB,EAA9G;;AACA;AACD;;AACD,YAAM6B,OAAO,GAAG,6BAAmBJ,SAAS,CAACK,MAA7B,CAAhB;AACA,YAAaC,UAAb,GAAsFF,OAAtF,CAAOG,IAAP;AAAA,YAAqCC,IAArC,GAAsFJ,OAAtF,CAAyBK,UAAzB;AAAA,YAAuDC,MAAvD,GAAsFN,OAAtF,CAA2CO,UAA3C;AAAA,YAA+DC,UAA/D,GAAsFR,OAAtF,CAA+DQ,UAA/D;AAAA,YAA2EC,OAA3E,GAAsFT,OAAtF,CAA2ES,OAA3E;AACA,YAAMC,OAAO,GAAGd,SAAS,CAACe,QAAV,KAAuB,UAAvB,GAAoC,CAApC,GAAwC,CAAxD;AACA,YAAMR,IAAI,GAAG,sCAAiBD,UAAjB,CAAb;AACA,aAAKlB,iBAAL,CAAuB4B,SAAvB,CAAiChB,SAAS,CAACiB,QAA3C,EAAqDzB,WAArD,EAAkE;AAChEgB,UAAAA,IAAI,EAAJA,IADgE;AAEhED,UAAAA,IAAI,EAAJA,IAFgE;AAGhEG,UAAAA,MAAM,EAANA,MAHgE;AAIhEQ,UAAAA,MAAM,EAAE,CAJwD;AAKhEN,UAAAA,UAAU,EAAVA,UALgE;AAMhEC,UAAAA,OAAO,EAAPA,OANgE;AAOhEC,UAAAA,OAAO,EAAEd,SAAS,CAACe,QAAV,KAAuB,UAAvB,GAAoC,CAApC,GAAwC;AAPe,SAAlE;AASD;AACF;;;WAGD,qBAAYI,QAAZ,EAAqD;AAAA;;AAAA;AAK9C;AAAA,YAAOrB,IAAP;AAAA,YAAasB,KAAb;;AACH,YAAMC,OAAO,GAAG,MAAI,CAAClC,MAAL,CAAYgC,QAAZ,CAAqBG,IAArB,CAA0B,UAACD,OAAD;AAAA,iBAAaA,OAAO,CAACvB,IAAR,KAAiBA,IAA9B;AAAA,SAA1B,CAAhB;;AACA,YAAI,CAACuB,OAAL,EAAc;AACZnB,mBAAIC,IAAJ,2BAA4BL,IAA5B,iCAAuD,MAAI,CAACvB,EAA5D;AACD;;AACD,YAAI,CAAC6C,KAAL,EAAY;AACVlB,mBAAIC,IAAJ,6BAA8BL,IAA9B,iCAAyD,MAAI,CAACvB,EAA9D;AACD;;AACD,gBAAQ8C,OAAO,CAACd,IAAhB;AACE,eAAK,SAAL;AAEE,gBAAI,EAAEa,KAAK,YAAYG,oBAAnB,KAAmC,EAAEH,KAAK,CAACrB,MAAN,YAAwBwB,oBAA1B,CAAvC,EAA+E;AAC7E,oBAAM,IAAIC,KAAJ,CAAU,cAAV,CAAN;AACD;;AACD;;AACF,eAAK,SAAL;AACE,gBAAI,EAAEJ,KAAK,YAAYK,qBAAnB,CAAJ,EAAsC;AACpC,oBAAM,IAAID,KAAJ,CAAU,eAAV,CAAN;AACD;;AACD;;AACF,eAAK,SAAL;AACEtB,qBAAIC,IAAJ,4BAA6BL,IAA7B;;AACA;;AACF;AACE,kBAAM,IAAI0B,KAAJ,CAAUH,OAAO,CAACd,IAAlB,CAAN;AAhBJ;;AAmBA,QAAA,MAAI,CAACY,QAAL,CAAcrB,IAAd,IAAsBsB,KAAtB;AAhCiD;;AAKnD,2CAA4BxB,MAAM,CAACC,OAAP,CAAesB,QAAf,CAA5B,wCAAsD;AAAA;AA4BrD;AACF;;;WAED,qBAAYO,QAAZ,EAA2C;AAEzC9B,MAAAA,MAAM,CAAC+B,MAAP,CAAc,KAAKD,QAAnB,EAA6BA,QAA7B;AACD;;;WAMD,cAAKE,OAAL,EASY;AAAA;AAAA;;AACV,gCASIA,OATJ,CACEC,UADF;AAAA,UACEA,UADF,oCACe,KAAK5D,MAAL,CAAY6D,oBAAZ,EADf;AAAA,UAEEC,WAFF,GASIH,OATJ,CAEEG,WAFF;AAAA,UAGEC,UAHF,GASIJ,OATJ,CAGEI,UAHF;AAAA,UAIEC,aAJF,GASIL,OATJ,CAIEK,aAJF;AAAA,iCASIL,OATJ,CAKEM,WALF;AAAA,UAKEA,WALF,qCAKgB,CALhB;AAAA,UAMEC,UANF,GASIP,OATJ,CAMEO,UANF;AAAA,UAOEC,aAPF,GASIR,OATJ,CAOEQ,aAPF;AAAA,UAQEC,UARF,GASIT,OATJ,CAQES,UARF;AAWA,UAAMC,QAAQ,GAAGC,WAAW,CAAC,KAAKrE,KAAL,CAAWsE,QAAZ,CAA5B;AACA,UAAMC,SAAkB,GAAGC,OAAO,CAAC,KAAKhD,YAAN,CAAlC;AACA,UAAMiD,SAAS,GAAG,4BAAKjD,YAAL,0EAAmBxB,KAAnB,CAAyByE,SAAzB,MAAuC,QAAvC,GAAkD/D,mBAAGgE,cAArD,GAAsEhE,mBAAGiE,YAA3F;AACA,UAAMC,WAAoB,GAAGlB,OAAO,CAACK,aAAR,GAAwB,CAArD;;AAMA,UAAI,CAAC,KAAKc,sBAAL,EAAD,IAAkCnB,OAAO,CAACG,WAAR,KAAwB,CAA9D,EAAiE;AAE/D,eAAO,KAAP;AACD;;AAED,WAAK9D,MAAL,CAAYG,EAAZ,CAAe4E,UAAf,CAA0B,KAAK7E,MAA/B;AAEA,WAAKiB,iBAAL,CAAuB6D,IAAvB,CAA4B,YAAM;AAChC,YAAMC,UAAU,mCAAO,MAAI,CAAChF,KAAL,CAAWgF,UAAlB;AAA8BC,UAAAA,WAAW,EAAEtB,UAAU,CAAC3D,KAAX,CAAiBiF;AAA5D,UAAhB;;AAEA,YAAMC,aAAa,GAAGC,cAAc,CAAC,MAAI,CAACnF,KAAL,CAAWsE,QAAZ,CAApC;AACA,YAAMc,iBAAsB,GAAG,IAA/B;;AACA,YAAIA,iBAAJ,EAAuB;AACrBA,UAAAA,iBAAiB,CAACC,KAAlB,CAAwBH,aAAxB;AACD;;AAGD,QAAA,MAAI,CAACI,cAAL;;AACA,QAAA,MAAI,CAACC,cAAL;;AAGA,oDAAqB,MAAI,CAACxF,MAA1B,EAAkCiF,UAAlC,EAA8C,YAAM;AAElD,cAAIT,SAAS,IAAIK,WAAjB,EAA8B;AAE5B,YAAA,MAAI,CAAC7E,MAAL,CAAYe,GAAZ,CAAgB0E,qBAAhB,CACEpB,QADF,EAEEP,WAFF,EAGEY,SAHF,EAIET,WAJF,EAKED,aALF;AASD,WAXD,MAWO,IAAIQ,SAAJ,EAAe;AACpB,YAAA,MAAI,CAACxE,MAAL,CAAYG,EAAZ,CAAeuF,YAAf,CAA4BrB,QAA5B,EAAsCP,WAAtC,EAAmDY,SAAnD,EAA8DT,WAA9D;AACD,WAFM,MAEA,IAAIY,WAAJ,EAAiB;AACtB,YAAA,MAAI,CAAC7E,MAAL,CAAYe,GAAZ,CAAgB4E,mBAAhB,CAAoCtB,QAApC,EAA8CJ,WAA9C,EAA2DH,WAA3D,EAAwEE,aAAxE;AACD,WAFM,MAEA;AACL,YAAA,MAAI,CAAChE,MAAL,CAAYG,EAAZ,CAAeyF,UAAf,CAA0BvB,QAA1B,EAAoCJ,WAApC,EAAiDH,WAAjD;AACD;AACF,SApBD;;AAsBA,YAAIuB,iBAAJ,EAAuB;AACrBA,UAAAA,iBAAiB,CAACQ,GAAlB;AACD;AACF,OAvCD;AAyCA,aAAO,IAAP;AACD;;;WAKD,2BAA4B;AAC1B,UAAO1F,EAAP,GAAa,KAAKH,MAAlB,CAAOG,EAAP;AACAA,MAAAA,EAAE,CAAC2F,YAAH,CAAgB,KAAK5F,MAArB,EAA6B,KAAKK,EAAL,CAAQL,MAArC;AACAC,MAAAA,EAAE,CAAC2F,YAAH,CAAgB,KAAK5F,MAArB,EAA6B,KAAKM,EAAL,CAAQN,MAArC;;AACA+B,eAAI8D,IAAJ,CAASjG,yBAAT,4BAAuD,KAAKQ,EAA5D;;AACAH,MAAAA,EAAE,CAAC6F,WAAH,CAAe,KAAK9F,MAApB;;AACA+B,eAAIgE,OAAJ,CAAYnG,yBAAZ,4BAA0D,KAAKQ,EAA/D;;AAIA,UAAIH,EAAE,CAAC+F,KAAH,IAAYjE,SAAIkE,KAAJ,GAAY,CAA5B,EAA+B;AAC7B,YAAMC,MAAM,GAAGjG,EAAE,CAACkG,mBAAH,CAAuB,KAAKnG,MAA5B,EAAoCC,EAAE,CAACmG,WAAvC,CAAf;;AACA,YAAI,CAACF,MAAL,EAAa;AACX,gBAAM,IAAI7C,KAAJ,0BAA4BpD,EAAE,CAACoG,iBAAH,CAAqB,KAAKrG,MAA1B,CAA5B,EAAN;AACD;;AAEDC,QAAAA,EAAE,CAACqG,eAAH,CAAmB,KAAKtG,MAAxB;AACA,YAAMuG,SAAS,GAAGtG,EAAE,CAACkG,mBAAH,CAAuB,KAAKnG,MAA5B,EAAoCC,EAAE,CAACuG,eAAvC,CAAlB;;AACA,YAAI,CAACD,SAAL,EAAgB;AACd,gBAAM,IAAIlD,KAAJ,6BAA+BpD,EAAE,CAACoG,iBAAH,CAAqB,KAAKrG,MAA1B,CAA/B,EAAN;AACD;AACF;AACF;;;WASD,kCAAyB;AACvB,UAAIyG,kBAAkB,GAAG,IAAzB;;AAEA,2CAA8BhF,MAAM,CAACC,OAAP,CAAe,KAAKgF,gBAApB,CAA9B,wCAAqE;AAAhE;AAAA,YAAO/E,IAAP;AAAA,YAAagF,OAAb;;AACHA,QAAAA,OAAO,CAACC,MAAR;AACAH,QAAAA,kBAAkB,GAAGA,kBAAkB,IAAIE,OAAO,CAACE,MAAnD;AACD;;AAED,2CAA8BpF,MAAM,CAACC,OAAP,CAAe,KAAKsB,QAApB,CAA9B,wCAA6D;AAAxD;AAAA,YAAOrB,KAAP;AAAA,YAAagF,QAAb;;AAEH,YAAIA,QAAO,CAACE,MAAR,KAAmBC,SAAvB,EAAkC;AAChCL,UAAAA,kBAAkB,GAAGA,kBAAkB,IAAIE,QAAO,CAACE,MAAnD;AACD;AACF;;AAED,aAAOJ,kBAAP;AACD;;;WAGD,0BAAiB;AACf,WAAK3G,MAAL,CAAYG,EAAZ,CAAe4E,UAAf,CAA0B,KAAK7E,MAA/B;AAEA,UAAOa,GAAP,GAAc,KAAKf,MAAnB,CAAOe,GAAP;AAEA,UAAIkG,WAAW,GAAG,CAAlB;AACA,UAAIC,kBAAkB,GAAG,CAAzB;;AANe,iDAOO,KAAKhG,MAAL,CAAYgC,QAPnB;AAAA;;AAAA;AAOf,4DAA4C;AAAA,cAAjCE,OAAiC;AAC1C,cAAMD,KAAK,GAAG,KAAKD,QAAL,CAAcE,OAAO,CAACvB,IAAtB,CAAd;;AACA,cAAI,CAACsB,KAAL,EAAY;AACV,kBAAM,IAAII,KAAJ,gCAAkCH,OAAO,CAACvB,IAA1C,iBAAqD,KAAKvB,EAA1D,EAAN;AACD;;AACD,kBAAQ8C,OAAO,CAACd,IAAhB;AACE,iBAAK,SAAL;AAEE,kBAAOT,IAAP,GAAeuB,OAAf,CAAOvB,IAAP;AACA,kBAAMmB,QAAQ,GAAGjC,GAAG,CAACoG,oBAAJ,CAAyB,KAAKjH,MAA9B,EAAsC2B,IAAtC,CAAjB;;AACA,kBAAImB,QAAQ,KAAKrC,mBAAGyG,aAApB,EAAmC;AACjC,sBAAM,IAAI7D,KAAJ,sCAAwC1B,IAAxC,EAAN;AACD;;AACDd,cAAAA,GAAG,CAACsG,mBAAJ,CAAwB,KAAKnH,MAA7B,EAAqCgH,kBAArC,EAAyDlE,QAAzD;;AAEA,kBAAIG,KAAK,YAAYG,oBAArB,EAAkC;AAChCvC,gBAAAA,GAAG,CAACuG,cAAJ,CAAmB3G,mBAAG4G,cAAtB,EAAsCL,kBAAtC,EAA0D/D,KAAK,CAACjD,MAAhE;AACD,eAFD,MAEO;AACLa,gBAAAA,GAAG,CAACyG,eAAJ,CACE7G,mBAAG4G,cADL,EAEEL,kBAFF,EAGE/D,KAAK,CAACrB,MAAN,CAAa5B,MAHf,EAIEiD,KAAK,CAACF,MAAN,IAAgB,CAJlB,EAKEE,KAAK,CAACZ,IAAN,IAAcY,KAAK,CAACrB,MAAN,CAAaY,UAAb,GAA0BS,KAAK,CAACF,MALhD;AAOD;;AACDiE,cAAAA,kBAAkB,IAAI,CAAtB;AACA;;AAEF,iBAAK,SAAL;AACE,kBAAI,EAAE/D,KAAK,YAAYK,qBAAnB,CAAJ,EAAsC;AACpC,sBAAM,IAAID,KAAJ,CAAU,SAAV,CAAN;AACD;;AACD,kBAAMsD,OAAqB,GAAG1D,KAA9B;AACApC,cAAAA,GAAG,CAAC0G,aAAJ,CAAkB9G,mBAAG+G,QAAH,GAAcT,WAAhC;AACAlG,cAAAA,GAAG,CAAC4G,WAAJ,CAAgBd,OAAO,CAACe,MAAxB,EAAgCf,OAAO,CAAC3G,MAAxC;AAEA+G,cAAAA,WAAW,IAAI,CAAf;AACA;;AAEF,iBAAK,SAAL;AAEE;;AAEF,iBAAK,SAAL;AACA,iBAAK,mBAAL;AACE,oBAAM,IAAI1D,KAAJ,yBAA2BH,OAAO,CAACd,IAAnC,8BAAN;AAzCJ;AA2CD;AAvDc;AAAA;AAAA;AAAA;AAAA;AAwDhB;;;WAED,0BAAiB;AAAA,kDACa,KAAKpB,MAAL,CAAYuC,QAAZ,IAAwB,EADrC;AAAA;;AAAA;AACf,+DAAwD;AAAA,cAA7CoE,aAA6C;AACtD,cAAOhG,IAAP,GAA4CgG,aAA5C,CAAOhG,IAAP;AAAA,cAAamB,QAAb,GAA4C6E,aAA5C,CAAa7E,QAAb;AAAA,cAAuBV,IAAvB,GAA4CuF,aAA5C,CAAuBvF,IAAvB;AAAA,cAA6B2E,WAA7B,GAA4CY,aAA5C,CAA6BZ,WAA7B;AACA,cAAM9D,KAAK,GAAG,KAAKM,QAAL,CAAc5B,IAAd,KAAuBoF,WAArC;;AACA,cAAI9D,KAAK,KAAK6D,SAAd,EAAyB;AACvB,wCAAW,KAAKhH,MAAL,CAAYG,EAAvB,EAA2B6C,QAA3B,EAAqCV,IAArC,EAA2Ca,KAA3C;AACD;AACF;AAPc;AAAA;AAAA;AAAA;AAAA;AAQhB;;;EA3U8C2E,mB;;;;AA+UjD,SAASxD,WAAT,CACEC,QADF,EAE2E;AAEzE,UAAQA,QAAR;AACA,SAAK,YAAL;AAAmB,aAAO5D,mBAAGoH,MAAV;;AACnB,SAAK,WAAL;AAAkB,aAAOpH,mBAAGqH,KAAV;;AAClB,SAAK,YAAL;AAAmB,aAAOrH,mBAAGsH,UAAV;;AACnB,SAAK,eAAL;AAAsB,aAAOtH,mBAAGuH,SAAV;;AACtB,SAAK,gBAAL;AAAuB,aAAOvH,mBAAGwH,cAAV;;AACvB;AAAS,YAAM,IAAI5E,KAAJ,CAAUgB,QAAV,CAAN;AANT;AAQD;;AAGD,SAASa,cAAT,CAAwBb,QAAxB,EAA0F;AAExF,UAAQA,QAAR;AACA,SAAK,YAAL;AAAmB,aAAO5D,mBAAGoH,MAAV;;AACnB,SAAK,WAAL;AAAkB,aAAOpH,mBAAGqH,KAAV;;AAClB,SAAK,YAAL;AAAmB,aAAOrH,mBAAGqH,KAAV;;AACnB,SAAK,eAAL;AAAsB,aAAOrH,mBAAGuH,SAAV;;AACtB,SAAK,gBAAL;AAAuB,aAAOvH,mBAAGuH,SAAV;;AACvB;AAAS,YAAM,IAAI3E,KAAJ,CAAUgB,QAAV,CAAN;AANT;AAQD;;AAED,SAAS6D,uBAAT,CACE1G,UADF,EAEER,MAFF,EAG0B;AACxB,MAAMmH,UAAkC,GAAG,EAA3C;;AACA,uCAA6B1G,MAAM,CAACC,OAAP,CAAeF,UAAf,CAA7B,wCAAyD;AAApD;AAAA,QAAOG,IAAP;AAAA,QAAaC,MAAb;;AACH,QAAMC,SAAS,GAAGC,kBAAkB,CAACd,MAAD,EAASW,IAAT,CAApC;AACAwG,IAAAA,UAAU,CAACtG,SAAS,CAACiB,QAAX,CAAV,GAAiClB,MAAjC;AACD;;AACD,SAAOuG,UAAP;AACD;;AAED,SAASrG,kBAAT,CAA4Bd,MAA5B,EAAkDW,IAAlD,EAA6F;AAC3F,SAAOX,MAAM,CAACQ,UAAP,CAAkB2B,IAAlB,CAAuB,UAACD,OAAD;AAAA,WAAaA,OAAO,CAACvB,IAAR,KAAiBA,IAA9B;AAAA,GAAvB,CAAP;AACD;;AAED,SAASyG,gBAAT,CAA0BpH,MAA1B,EAAgDW,IAAhD,EAA6E;AAC3E,MAAMuB,OAAO,GAAGlC,MAAM,CAACgC,QAAP,CAAgBG,IAAhB,CAAqB,UAACD,OAAD;AAAA,WAAaA,OAAO,CAACvB,IAAR,KAAiBA,IAA9B;AAAA,GAArB,CAAhB;;AACA,MAAI,CAACuB,OAAL,EAAc;AACZ,UAAM,IAAIG,KAAJ,2BAA6B1B,IAA7B,EAAN;AACD;;AACD,SAAOuB,OAAP;AACD","sourcesContent":["import type {\n RenderPipelineProps,\n RenderPipelineParameters,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLShader from './webgl-shader';\nimport WEBGLTexture from './webgl-texture';\nimport WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport default class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[];\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function>;\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n // @ts-expect-error\n this.handle.__SPECTOR_Metadata = {id: this.props.id};\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n this.handle = null;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue;\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor: attribute.stepMode === 'instance' ? 1 : 0\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n indexCount,\n instanceCount,\n firstVertex = 0,\n firstIndex,\n firstInstance,\n baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = options.instanceCount > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const parameters = {...this.props.parameters, framebuffer: renderPass.props.framebuffer};\n\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2.drawElementsInstanced(\n drawMode,\n vertexCount,\n indexType,\n firstVertex,\n instanceCount\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount, indexType, firstVertex);\n } else if (isInstanced) {\n this.device.gl2.drawArraysInstanced(drawMode, firstVertex, vertexCount, instanceCount);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [name, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [name, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.TRIANGLES | GL.TRIANGLE_STRIP {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\nfunction getAttributesByLocation(\n attributes: Record<string, Buffer>,\n layout: ShaderLayout\n): Record<number, Buffer> {\n const byLocation: Record<number, Buffer> = {};\n for (const [name, buffer] of Object.entries(attributes)) {\n const attribute = getAttributeLayout(layout, name);\n byLocation[attribute.location] = buffer;\n }\n return byLocation;\n}\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | undefined {\n return layout.attributes.find((binding) => binding.name === name);\n}\n\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n"],"file":"webgl-render-pipeline.js"}
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _api = require("@luma.gl/api");
27
-
28
- var _constants = _interopRequireDefault(require("@luma.gl/constants"));
29
-
30
- var _samplerParameters = require("../converters/sampler-parameters");
31
-
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
- var WEBGLSampler = function (_Sampler) {
37
- (0, _inherits2.default)(WEBGLSampler, _Sampler);
38
-
39
- var _super = _createSuper(WEBGLSampler);
40
-
41
- function WEBGLSampler(device, props) {
42
- var _this;
43
-
44
- (0, _classCallCheck2.default)(this, WEBGLSampler);
45
- _this = _super.call(this, device, props);
46
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
47
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
48
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parameters", void 0);
49
- _this.device = device;
50
- _this.parameters = (0, _samplerParameters.convertSamplerParametersToWebGL)(props);
51
-
52
- if (_this.device.isWebGL2) {
53
- _this.handle = _this.handle || _this.device.gl2.createSampler();
54
-
55
- _this._setSamplerParameters(_this.parameters);
56
- }
57
-
58
- return _this;
59
- }
60
-
61
- (0, _createClass2.default)(WEBGLSampler, [{
62
- key: "destroy",
63
- value: function destroy() {
64
- if (this.handle) {
65
- this.device.gl2.deleteSampler(this.handle);
66
- this.handle = undefined;
67
- }
68
- }
69
- }, {
70
- key: "_setSamplerParameters",
71
- value: function _setSamplerParameters(parameters) {
72
- for (var _i = 0, _Object$entries = Object.entries(parameters); _i < _Object$entries.length; _i++) {
73
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
74
- pname = _Object$entries$_i[0],
75
- value = _Object$entries$_i[1];
76
-
77
- var param = Number(pname);
78
-
79
- switch (param) {
80
- case _constants.default.TEXTURE_MIN_LOD:
81
- case _constants.default.TEXTURE_MAX_LOD:
82
- this.device.gl2.samplerParameterf(this.handle, param, value);
83
- break;
84
-
85
- default:
86
- this.device.gl2.samplerParameteri(this.handle, param, value);
87
- break;
88
- }
89
- }
90
- }
91
- }]);
92
- return WEBGLSampler;
93
- }(_api.Sampler);
94
-
95
- exports.default = WEBGLSampler;
96
- //# sourceMappingURL=webgl-sampler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-sampler.ts"],"names":["WEBGLSampler","device","props","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","deleteSampler","undefined","Object","entries","pname","value","param","Number","GL","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri","Sampler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;IAUqBA,Y;;;;;AAKnB,wBAAYC,MAAZ,EAAiCC,KAAjC,EAAsD;AAAA;;AAAA;AACpD,8BAAMD,MAAN,EAAcC,KAAd;AADoD;AAAA;AAAA;AAEpD,UAAKD,MAAL,GAAcA,MAAd;AACA,UAAKE,UAAL,GAAkB,wDAAgCD,KAAhC,CAAlB;;AACA,QAAI,MAAKD,MAAL,CAAYG,QAAhB,EAA0B;AACxB,YAAKC,MAAL,GAAc,MAAKA,MAAL,IAAe,MAAKJ,MAAL,CAAYK,GAAZ,CAAgBC,aAAhB,EAA7B;;AACA,YAAKC,qBAAL,CAA2B,MAAKL,UAAhC;AACD;;AAPmD;AAQrD;;;;WAED,mBAAgB;AACd,UAAI,KAAKE,MAAT,EAAiB;AACf,aAAKJ,MAAL,CAAYK,GAAZ,CAAgBG,aAAhB,CAA8B,KAAKJ,MAAnC;AAEA,aAAKA,MAAL,GAAcK,SAAd;AACD;AACF;;;WAGD,+BAA8BP,UAA9B,EAAwE;AACtE,yCAA6BQ,MAAM,CAACC,OAAP,CAAeT,UAAf,CAA7B,qCAAyD;AAApD;AAAA,YAAOU,KAAP;AAAA,YAAcC,KAAd;;AAGH,YAAMC,KAAK,GAAGC,MAAM,CAACH,KAAD,CAApB;;AACA,gBAAQE,KAAR;AACE,eAAKE,mBAAGC,eAAR;AACA,eAAKD,mBAAGE,eAAR;AACE,iBAAKlB,MAAL,CAAYK,GAAZ,CAAgBc,iBAAhB,CAAkC,KAAKf,MAAvC,EAA+CU,KAA/C,EAAsDD,KAAtD;AACA;;AACF;AACE,iBAAKb,MAAL,CAAYK,GAAZ,CAAgBe,iBAAhB,CAAkC,KAAKhB,MAAvC,EAA+CU,KAA/C,EAAsDD,KAAtD;AACA;AAPJ;AASD;AACF;;;EAvCuCQ,Y","sourcesContent":["import {Sampler, SamplerProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type {WebGLSamplerParameters} from '../../types/webgl';\nimport {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';\nimport type WebGLDevice from '../webgl-device';\n\n/**\n * Sampler object -\n * Under WebGL2 we create an actual WebGL sampler\n * Under WebGL1, we just store the sampler parameters\n * so that they can be set directly on the texture\n * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html\n */\nexport default class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: WebGLSamplerParameters;\n\n constructor(device: WebGLDevice, props: SamplerProps) {\n super(device, props);\n this.device = device;\n this.parameters = convertSamplerParametersToWebGL(props);\n if (this.device.isWebGL2) {\n this.handle = this.handle || this.device.gl2.createSampler();\n this._setSamplerParameters(this.parameters);\n }\n }\n\n destroy(): void {\n if (this.handle) {\n this.device.gl2.deleteSampler(this.handle);\n // @ts-expect-error\n this.handle = undefined;\n }\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: WebGLSamplerParameters): void {\n for (const [pname, value] of Object.entries(parameters)) {\n // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n const param = Number(pname);\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.device.gl2.samplerParameterf(this.handle, param, value);\n break;\n default:\n this.device.gl2.samplerParameteri(this.handle, param, value);\n break;\n }\n }\n }\n}\n"],"file":"webgl-sampler.js"}