@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 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":["RenderPipeline","cast","log","decodeVertexFormat","GL","getWebGLDataType","getShaderLayout","withDeviceParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","destroy","deleteProgram","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","name","buffer","Object","entries","attribute","getAttributeLayout","warn","decoded","format","type","typeString","components","size","byteLength","stride","normalized","integer","divisor","stepMode","setBuffer","location","offset","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","assign","draw","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","texture","_textureUniforms","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","POINTS","LINES","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","getAttributesByLocation","byLocation","getBindingLayout"],"mappings":"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","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
+ {"version":3,"file":"webgl-render-pipeline.js","names":["RenderPipeline","cast","log","mergeShaderLayout","getAttributeInfosFromLayouts","GL","getGLFromVertexType","getShaderLayout","withDeviceParameters","withGLParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","_defineProperty","handle","gl","createProgram","setSpectorMetadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","_this$device$gl","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","introspectedLayout","shaderLayout","bufferLayout","vertexArrayObject","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","buffers","attributeInfos","bufferName","buffer","Object","entries","set","attributeInfo","values","glType","bufferDataType","setAttribute","name","toBuffer","size","bufferComponents","type","stride","byteStride","offset","byteOffset","normalized","integer","divisor","stepMode","setBuffer","location","warn","concat","setConstantAttributes","attributes","assign","constantAttributes","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","draw","options","_this$_indexBuffer","renderPass","vertexCount","instanceCount","firstVertex","drawMode","getGLDrawMode","topology","isIndexed","Boolean","indexType","glIndexType","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","_applyConstantAttributes","webglRenderPass","parameters","glParameters","_this$device$gl2","drawElementsInstanced","drawElements","_this$device$gl3","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","texture","_textureUniforms","update","loaded","undefined","setConstant","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","byteLength","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","_this$uniforms$name","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN"],"sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n TypedArray,\n BufferLayout\n} from '@luma.gl/core';\nimport {RenderPipeline, cast, log} from '@luma.gl/core';\nimport {\n mergeShaderLayout,\n getAttributeInfosFromLayouts\n} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\n\nimport {getGLFromVertexType} from '../converters/vertex-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} 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';\nimport {WEBGLRenderPass} from './webgl-render-pass';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport class WEBGLRenderPipeline extends RenderPipeline {\n /** The WebGL device that created this render pipeline */\n device: WebGLDevice;\n /** Handle to underlying WebGL program */\n handle: WebGLProgram;\n /** vertex shader */\n vs: WEBGLShader;\n /** fragment shader */\n fs: WEBGLShader;\n /** The layout extracted from shader by WebGL introspection APIs */\n introspectedLayout: ShaderLayout;\n /** The merged layout */\n shaderLayout: ShaderLayout;\n /** Buffer map describing buffer interleaving etc */\n bufferLayout: BufferLayout[];\n\n /** Uniforms set on this model */\n uniforms: Record<string, any> = {};\n /** Bindings set on this model */\n bindings: Record<string, any> = {};\n /** Any constant attributes */\n constantAttributes: Record<string, TypedArray> = {};\n /** Index buffer is stored separately */\n _indexBuffer?: WEBGLBuffer;\n /** WebGL varyings */\n varyings: string[] | null = null;\n\n /** Stores attribute bindings */\n vertexArrayObject: WEBGLVertexArrayObject;\n\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\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 this.device.setSpectorMetadata(this.handle, {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.introspectedLayout = getShaderLayout(this.device.gl, this.handle);\n // Merge provided layout with introspected layout\n this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);\n // Merge layout with any buffer map overrides\n this.bufferLayout = props.bufferLayout || [];\n // this.shaderLayout = mergeBufferMap(this.shaderLayout, this.bufferLayout);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = webglBuffer;\n }\n\n\n /** @todo needed for portable model */\n setAttributes(buffers: Record<string, Buffer>): void {\n const attributeInfos = getAttributeInfosFromLayouts(this.shaderLayout, this.bufferLayout);\n\n for (const [bufferName, buffer] of Object.entries(buffers)) {\n let set = false;\n for (const attributeInfo of Object.values(attributeInfos)) {\n if (attributeInfo.bufferName !== bufferName) {\n continue; // eslint-disable-line no-continue\n }\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n\n const glType = getGLFromVertexType(attributeInfo.bufferDataType);\n // TODO remove when we have more confidence\n log.log(1, {\n setAttribute: attributeInfo.name,\n toBuffer: bufferName,\n size: attributeInfo.bufferComponents,\n type: glType,\n stride: attributeInfo.byteStride,\n offset: attributeInfo.byteOffset,\n normalized: attributeInfo.normalized,\n // it is the shader attribute declaration, not the vertex memory format,\n // that determines if the data in the buffer will be treated as integers.\n // /\n // Also note that WebGL supports assigning non-normalized integer data to floating point attributes,\n // but as far as we can tell, WebGPU does not.\n integer: attributeInfo.integer,\n divisor: attributeInfo.stepMode === 'instance' ? 1 : 0\n })();\n this.vertexArrayObject.setBuffer(attributeInfo.location, webglBuffer, {\n size: attributeInfo.bufferComponents,\n type: glType,\n stride: attributeInfo.byteStride,\n offset: attributeInfo.byteOffset,\n normalized: attributeInfo.normalized,\n // it is the shader attribute declaration, not the vertex memory format,\n // that determines if the data in the buffer will be treated as integers.\n // /\n // Also note that WebGL supports assigning non-normalized integer data to floating point attributes,\n // but as far as we can tell, WebGPU does not.\n integer: attributeInfo.integer,\n divisor: attributeInfo.stepMode === 'instance' ? 1 : 0\n });\n set = true;\n }\n if (!set) {\n log.warn(`setAttributes(): Ignoring (buffer \"${buffer.id}\" for unknown attribute \"${name}\" in pipeline \"${this.id}\"`)();\n }\n }\n }\n\n /**\n * Constant attributes are only supported in WebGL, not in WebGPU\n * Any attribute that is disabled in the current vertex array object\n * is read from the context's global constant value for that attribute location.\n * @param attributes\n */\n setConstantAttributes(attributes: Record<string, TypedArray>): void {\n // TODO - there should be no advantage to setting these here vs in _applyConstantAttributes\n // for (const [name, value] of Object.entries(attributes)) {\n // const attributeInfo = getAttributeInfosFromLayouts(this.shaderLayout, this.bufferLayout, name);\n // if (!attributeInfo) {\n // log.warn(\n // `Ignoring constant value supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\"`\n // )();\n // continue; // eslint-disable-line no-continue\n // }\n // this.vertexArrayObject.setConstant(attributeInfo.location, value);\n // }\n Object.assign(this.constantAttributes, attributes);\n }\n\n /**\n * Bindings include: textures, samplers and uniform buffers\n * @todo needed for portable model\n */\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.shaderLayout.bindings.find(binding => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue; // eslint-disable-line no-continue\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,\n vertexCount,\n // indexCount,\n instanceCount,\n firstVertex = 0\n // firstIndex,\n // firstInstance,\n // baseVertex\n } = options;\n\n const drawMode = getGLDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.glIndexType;\n const isInstanced: boolean = Number(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 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 this._applyConstantAttributes();\n\n const webglRenderPass = renderPass as WEBGLRenderPass;\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, webglRenderPass.glParameters, () => {\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 || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\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 || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(\n drawMode,\n firstVertex,\n vertexCount || 0,\n instanceCount || 0\n );\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\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 [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, 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 /**\n * Constant attributes need to be reset before every draw call\n * Any attribute that is disabled in the current vertex array object\n * is read from the context's global constant value for that attribute location.\n * @note Constant attributes are only supported in WebGL, not in WebGPU\n */\n _applyConstantAttributes(): void {\n const attributeInfos = getAttributeInfosFromLayouts(this.shaderLayout, this.bufferLayout);\n for (const [name, value] of Object.entries(this.constantAttributes)) {\n const attributeInfo = attributeInfos[name];\n if (!attributeInfo) {\n log.warn(\n `Ignoring constant value supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\"`\n )();\n continue; // eslint-disable-line no-continue\n }\n this.vertexArrayObject.setConstant(attributeInfo.location, value);\n }\n }\n\n /** Apply any bindings (before each draw call) */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.shaderLayout.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 /**\n * Due to program sharing, uniforms need to be reset before every draw call\n * (though caching will avoid redundant WebGL calls)\n */\n _applyUniforms() {\n for (const uniformLayout of this.shaderLayout.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 draw */\nfunction getGLDrawMode(\n topology: PrimitiveTopology\n):\n | GL.POINTS\n | GL.LINES\n | GL.LINE_STRIP\n | GL.LINE_LOOP\n | GL.TRIANGLES\n | GL.TRIANGLE_STRIP\n | GL.TRIANGLE_FAN {\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 'line-loop-webgl': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan-webgl': return GL.TRIANGLE_FAN;\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 'line-loop-webgl': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan-webgl': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Sampler, SamplerProps } from '@luma.gl/api';
2
- import type { WebGLSamplerParameters } from '../../types/webgl';
3
- import type WebGLDevice from '../webgl-device';
1
+ import { Sampler, SamplerProps } from '@luma.gl/core';
2
+ import { GLSamplerParameters } from '@luma.gl/constants';
3
+ import type { WebGLDevice } from '../webgl-device';
4
4
  /**
5
5
  * Sampler object -
6
6
  * Under WebGL2 we create an actual WebGL sampler
@@ -8,12 +8,13 @@ import type WebGLDevice from '../webgl-device';
8
8
  * so that they can be set directly on the texture
9
9
  * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
10
10
  */
11
- export default class WEBGLSampler extends Sampler {
11
+ export declare class WEBGLSampler extends Sampler {
12
12
  readonly device: WebGLDevice;
13
13
  readonly handle: WebGLSampler;
14
- readonly parameters: WebGLSamplerParameters;
14
+ readonly parameters: GLSamplerParameters;
15
15
  constructor(device: WebGLDevice, props: SamplerProps);
16
16
  destroy(): void;
17
+ toString(): string;
17
18
  /** Set sampler parameters on the sampler */
18
19
  private _setSamplerParameters;
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAE9D,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;gBAEhC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAUpD,OAAO,IAAI,IAAI;IAQf,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
1
+ {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAU3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
@@ -1,50 +1,42 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Sampler } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { convertSamplerParametersToWebGL } from '../converters/sampler-parameters';
5
- export default class WEBGLSampler extends Sampler {
2
+ import { Sampler } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { convertSamplerParametersToWebGL } from "../converters/sampler-parameters.js";
5
+ export class WEBGLSampler extends Sampler {
6
6
  constructor(device, props) {
7
7
  super(device, props);
8
-
9
8
  _defineProperty(this, "device", void 0);
10
-
11
9
  _defineProperty(this, "handle", void 0);
12
-
13
10
  _defineProperty(this, "parameters", void 0);
14
-
15
11
  this.device = device;
16
12
  this.parameters = convertSamplerParametersToWebGL(props);
17
-
18
13
  if (this.device.isWebGL2) {
19
14
  this.handle = this.handle || this.device.gl2.createSampler();
20
-
21
15
  this._setSamplerParameters(this.parameters);
22
16
  }
23
17
  }
24
-
25
18
  destroy() {
26
19
  if (this.handle) {
27
20
  this.device.gl2.deleteSampler(this.handle);
28
21
  this.handle = undefined;
29
22
  }
30
23
  }
31
-
24
+ toString() {
25
+ return "Sampler(".concat(this.id, ",").concat(JSON.stringify(this.props), ")");
26
+ }
32
27
  _setSamplerParameters(parameters) {
33
28
  for (const [pname, value] of Object.entries(parameters)) {
34
29
  const param = Number(pname);
35
-
36
30
  switch (param) {
37
31
  case GL.TEXTURE_MIN_LOD:
38
32
  case GL.TEXTURE_MAX_LOD:
39
33
  this.device.gl2.samplerParameterf(this.handle, param, value);
40
34
  break;
41
-
42
35
  default:
43
36
  this.device.gl2.samplerParameteri(this.handle, param, value);
44
37
  break;
45
38
  }
46
39
  }
47
40
  }
48
-
49
41
  }
50
42
  //# sourceMappingURL=webgl-sampler.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":["Sampler","GL","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","pname","value","Object","entries","param","Number","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri"],"mappings":";AAAA,SAAQA,OAAR,QAAoC,cAApC;AACA,OAAOC,EAAP,MAAe,oBAAf;AAEA,SAAQC,+BAAR,QAA8C,kCAA9C;AAUA,eAAe,MAAMC,YAAN,SAA2BH,OAA3B,CAAmC;AAKhDI,EAAAA,WAAW,CAACC,MAAD,EAAsBC,KAAtB,EAA2C;AACpD,UAAMD,MAAN,EAAcC,KAAd;;AADoD;;AAAA;;AAAA;;AAEpD,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKE,UAAL,GAAkBL,+BAA+B,CAACI,KAAD,CAAjD;;AACA,QAAI,KAAKD,MAAL,CAAYG,QAAhB,EAA0B;AACxB,WAAKC,MAAL,GAAc,KAAKA,MAAL,IAAe,KAAKJ,MAAL,CAAYK,GAAZ,CAAgBC,aAAhB,EAA7B;;AACA,WAAKC,qBAAL,CAA2B,KAAKL,UAAhC;AACD;AACF;;AAEDM,EAAAA,OAAO,GAAS;AACd,QAAI,KAAKJ,MAAT,EAAiB;AACf,WAAKJ,MAAL,CAAYK,GAAZ,CAAgBI,aAAhB,CAA8B,KAAKL,MAAnC;AAEA,WAAKA,MAAL,GAAcM,SAAd;AACD;AACF;;AAGOH,EAAAA,qBAAqB,CAACL,UAAD,EAA2C;AACtE,SAAK,MAAM,CAACS,KAAD,EAAQC,KAAR,CAAX,IAA6BC,MAAM,CAACC,OAAP,CAAeZ,UAAf,CAA7B,EAAyD;AAGvD,YAAMa,KAAK,GAAGC,MAAM,CAACL,KAAD,CAApB;;AACA,cAAQI,KAAR;AACE,aAAKnB,EAAE,CAACqB,eAAR;AACA,aAAKrB,EAAE,CAACsB,eAAR;AACE,eAAKlB,MAAL,CAAYK,GAAZ,CAAgBc,iBAAhB,CAAkC,KAAKf,MAAvC,EAA+CW,KAA/C,EAAsDH,KAAtD;AACA;;AACF;AACE,eAAKZ,MAAL,CAAYK,GAAZ,CAAgBe,iBAAhB,CAAkC,KAAKhB,MAAvC,EAA+CW,KAA/C,EAAsDH,KAAtD;AACA;AAPJ;AASD;AACF;;AAvC+C","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"}
1
+ {"version":3,"file":"webgl-sampler.js","names":["Sampler","GL","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","_defineProperty","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","toString","concat","id","JSON","stringify","pname","value","Object","entries","param","Number","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri"],"sources":["../../../src/adapter/resources/webgl-sampler.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {Sampler, SamplerProps} from '@luma.gl/core';\nimport {GL, GLSamplerParameters} from '@luma.gl/constants';\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 class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: GLSamplerParameters;\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 override 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 override toString(): string {\n return `Sampler(${this.id},${JSON.stringify(this.props)})`;\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: GLSamplerParameters): 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"],"mappings":";AAEA,SAAQA,OAAO,QAAqB,eAAe;AACnD,SAAQC,EAAE,QAA4B,oBAAoB;AAAC,SACnDC,+BAA+B;AAUvC,OAAO,MAAMC,YAAY,SAASH,OAAO,CAAC;EAKxCI,WAAWA,CAACC,MAAmB,EAAEC,KAAmB,EAAE;IACpD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACrB,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACG,UAAU,GAAGN,+BAA+B,CAACI,KAAK,CAAC;IACxD,IAAI,IAAI,CAACD,MAAM,CAACI,QAAQ,EAAE;MACxB,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,IAAI,IAAI,CAACL,MAAM,CAACM,GAAG,CAACC,aAAa,CAAC,CAAC;MAC5D,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACL,UAAU,CAAC;IAC7C;EACF;EAESM,OAAOA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,CAACL,MAAM,CAACM,GAAG,CAACI,aAAa,CAAC,IAAI,CAACL,MAAM,CAAC;MAE1C,IAAI,CAACA,MAAM,GAAGM,SAAS;IACzB;EACF;EAESC,QAAQA,CAAA,EAAW;IAC1B,kBAAAC,MAAA,CAAkB,IAAI,CAACC,EAAE,OAAAD,MAAA,CAAIE,IAAI,CAACC,SAAS,CAAC,IAAI,CAACf,KAAK,CAAC;EACzD;EAGQO,qBAAqBA,CAACL,UAA+B,EAAQ;IACnE,KAAK,MAAM,CAACc,KAAK,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGvD,MAAMkB,KAAK,GAAGC,MAAM,CAACL,KAAK,CAAC;MAC3B,QAAQI,KAAK;QACX,KAAKzB,EAAE,CAAC2B,eAAe;QACvB,KAAK3B,EAAE,CAAC4B,eAAe;UACrB,IAAI,CAACxB,MAAM,CAACM,GAAG,CAACmB,iBAAiB,CAAC,IAAI,CAACpB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;QACF;UACE,IAAI,CAAClB,MAAM,CAACM,GAAG,CAACoB,iBAAiB,CAAC,IAAI,CAACrB,MAAM,EAAEgB,KAAK,EAAEH,KAAK,CAAC;UAC5D;MACJ;IACF;EACF;AACF"}
@@ -1,10 +1,9 @@
1
- import { Shader, ShaderProps } from '@luma.gl/api';
2
- import { CompilerMessage } from '@luma.gl/shadertools';
3
- import WebGLDevice from '../webgl-device';
1
+ import { Shader, ShaderProps, CompilerMessage } from '@luma.gl/core';
2
+ import { WebGLDevice } from '../webgl-device';
4
3
  /**
5
4
  * An immutable compiled shader program that execute portions of the GPU Pipeline
6
5
  */
7
- export default class WEBGLShader extends Shader {
6
+ export declare class WEBGLShader extends Shader {
8
7
  readonly device: WebGLDevice;
9
8
  readonly handle: WebGLShader;
10
9
  constructor(device: WebGLDevice, props: ShaderProps);
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAgB,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAEvF,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C;;GAEG;AACF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAAM;IAC9C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAgBnD,OAAO,IAAI,IAAI;IAST,eAAe,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAO5D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAsB/B"}
1
+ {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,MAAM,EAAE,WAAW,EAAE,eAAe,EAAoB,MAAM,eAAe,CAAC;AAIhG,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAgB1C,OAAO,IAAI,IAAI;IASlB,eAAe,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAO5D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAuB/B"}
@@ -1,53 +1,42 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { log, uid, Shader } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getShaderInfo, formatCompilerLog } from '@luma.gl/shadertools';
5
- import { parseShaderCompilerLog } from '../helpers/parse-shader-compiler-log';
6
- export default class WEBGLShader extends Shader {
2
+ import { log, uid, Shader, formatCompilerLog } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ import { getShaderInfo } from "../helpers/get-shader-info.js";
5
+ import { parseShaderCompilerLog } from "../helpers/parse-shader-compiler-log.js";
6
+ export class WEBGLShader extends Shader {
7
7
  constructor(device, props) {
8
8
  super(device, {
9
9
  id: getShaderIdFromProps(props),
10
10
  ...props
11
11
  });
12
-
13
12
  _defineProperty(this, "device", void 0);
14
-
15
13
  _defineProperty(this, "handle", void 0);
16
-
17
14
  this.device = device;
18
-
19
15
  switch (this.props.stage) {
20
16
  case 'vertex':
21
17
  this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);
22
18
  break;
23
-
24
19
  case 'fragment':
25
20
  this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);
26
21
  break;
27
-
28
22
  default:
29
23
  throw new Error(this.props.stage);
30
24
  }
31
-
32
25
  this._compile(this.source);
33
26
  }
34
-
35
27
  destroy() {
36
28
  if (this.handle) {
37
29
  this.removeStats();
38
30
  this.device.gl.deleteShader(this.handle);
39
- this.handle = null;
31
+ this.destroyed = true;
40
32
  }
41
33
  }
42
-
43
34
  async compilationInfo() {
44
35
  const log = this.device.gl.getShaderInfoLog(this.handle);
45
- return parseShaderCompilerLog(log);
36
+ return log ? parseShaderCompilerLog(log) : [];
46
37
  }
47
-
48
38
  _compile(source) {
49
39
  const addGLSLVersion = source => source.startsWith('#version ') ? source : "#version 100\n".concat(source);
50
-
51
40
  source = addGLSLVersion(source);
52
41
  const {
53
42
  gl
@@ -55,10 +44,10 @@ export default class WEBGLShader extends Shader {
55
44
  gl.shaderSource(this.handle, source);
56
45
  gl.compileShader(this.handle);
57
46
  const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
58
-
59
47
  if (!compileStatus) {
60
48
  const shaderLog = gl.getShaderInfoLog(this.handle);
61
- const messages = parseShaderCompilerLog(shaderLog).filter(message => message.type === 'error');
49
+ const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
50
+ const messages = parsedLog.filter(message => message.type === 'error');
62
51
  const formattedLog = formatCompilerLog(messages, source);
63
52
  const shaderName = getShaderInfo(source).name;
64
53
  const shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
@@ -66,9 +55,7 @@ export default class WEBGLShader extends Shader {
66
55
  throw new Error("GLSL compilation errors in ".concat(shaderName));
67
56
  }
68
57
  }
69
-
70
58
  }
71
-
72
59
  function getShaderIdFromProps(props) {
73
60
  return getShaderInfo(props.source).name || props.id || uid("unnamed ".concat(props.stage, "-shader"));
74
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":["log","uid","Shader","GL","getShaderInfo","formatCompilerLog","parseShaderCompilerLog","WEBGLShader","constructor","device","props","id","getShaderIdFromProps","stage","handle","gl","createShader","VERTEX_SHADER","FRAGMENT_SHADER","Error","_compile","source","destroy","removeStats","deleteShader","compilationInfo","getShaderInfoLog","addGLSLVersion","startsWith","shaderSource","compileShader","compileStatus","getShaderParameter","COMPILE_STATUS","shaderLog","messages","filter","message","type","formattedLog","shaderName","name","shaderDescription","error"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, uid, Shader, ShaderProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';\nimport {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';\nimport WebGLDevice from '../webgl-device';\n\n/**\n * An immutable compiled shader program that execute portions of the GPU Pipeline\n */\n export default class WEBGLShader extends Shader {\n readonly device: WebGLDevice;\n readonly handle: WebGLShader;\n\n constructor(device: WebGLDevice, props: ShaderProps) {\n super(device, {id: getShaderIdFromProps(props), ...props});\n this.device = device;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this._compile(this.source);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.device.gl.deleteShader(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const log = this.device.gl.getShaderInfoLog(this.handle);\n return parseShaderCompilerLog(log);\n }\n\n // PRIVATE METHODS\n\n _compile(source: string): void {\n const addGLSLVersion = (source: string) => source.startsWith('#version ') ? source : `#version 100\\n${source}`;\n source = addGLSLVersion(source);\n\n const {gl} = this.device;\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);\n if (!compileStatus) {\n const shaderLog = gl.getShaderInfoLog(this.handle);\n const messages = parseShaderCompilerLog(shaderLog).filter(message => message.type === 'error');\n const formattedLog = formatCompilerLog(messages, source);\n const shaderName: string = getShaderInfo(source).name;\n const shaderDescription = `${this.stage} shader ${shaderName}`;\n log.error(`GLSL compilation errors in ${shaderDescription}\\n${formattedLog}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n}\n\n// HELPERS\n\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props: ShaderProps): string {\n return getShaderInfo(props.source).name ||\n props.id ||\n uid(`unnamed ${props.stage}-shader`);\n}\n"],"file":"webgl-shader.js"}
1
+ {"version":3,"file":"webgl-shader.js","names":["log","uid","Shader","formatCompilerLog","GL","getShaderInfo","parseShaderCompilerLog","WEBGLShader","constructor","device","props","id","getShaderIdFromProps","_defineProperty","stage","handle","gl","createShader","VERTEX_SHADER","FRAGMENT_SHADER","Error","_compile","source","destroy","removeStats","deleteShader","destroyed","compilationInfo","getShaderInfoLog","addGLSLVersion","startsWith","concat","shaderSource","compileShader","compileStatus","getShaderParameter","COMPILE_STATUS","shaderLog","parsedLog","messages","filter","message","type","formattedLog","shaderName","name","shaderDescription","error"],"sources":["../../../src/adapter/resources/webgl-shader.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {log, uid, Shader, ShaderProps, CompilerMessage, formatCompilerLog} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {getShaderInfo} from '../helpers/get-shader-info';\nimport {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';\nimport {WebGLDevice} from '../webgl-device';\n\n/**\n * An immutable compiled shader program that execute portions of the GPU Pipeline\n */\nexport class WEBGLShader extends Shader {\n readonly device: WebGLDevice;\n readonly handle: WebGLShader;\n\n constructor(device: WebGLDevice, props: ShaderProps) {\n super(device, {id: getShaderIdFromProps(props), ...props});\n this.device = device;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this._compile(this.source);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.device.gl.deleteShader(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const log = this.device.gl.getShaderInfoLog(this.handle);\n return log ? parseShaderCompilerLog(log) : [];\n }\n\n // PRIVATE METHODS\n\n _compile(source: string): void {\n const addGLSLVersion = (source: string) => source.startsWith('#version ') ? source : `#version 100\\n${source}`;\n source = addGLSLVersion(source);\n\n const {gl} = this.device;\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);\n if (!compileStatus) {\n const shaderLog = gl.getShaderInfoLog(this.handle);\n const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];\n const messages = parsedLog.filter(message => message.type === 'error');\n const formattedLog = formatCompilerLog(messages, source);\n const shaderName: string = getShaderInfo(source).name;\n const shaderDescription = `${this.stage} shader ${shaderName}`;\n log.error(`GLSL compilation errors in ${shaderDescription}\\n${formattedLog}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n}\n\n// HELPERS\n\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props: ShaderProps): string {\n return getShaderInfo(props.source).name ||\n props.id ||\n uid(`unnamed ${props.stage}-shader`);\n}\n"],"mappings":"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"}
@@ -1,18 +1,42 @@
1
- import { Device, TextureProps, Sampler, SamplerProps } from '@luma.gl/api';
2
- import { Texture } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import type { WebGLSamplerParameters } from '../../types/webgl';
5
- import WebGLDevice from '../webgl-device';
6
- import WEBGLSampler from './webgl-sampler';
7
- export type { TextureProps };
8
- declare type SetImageDataOptions = {
1
+ import { Device, TextureProps, Sampler, SamplerProps, TypedArray } from '@luma.gl/core';
2
+ import { Texture } from '@luma.gl/core';
3
+ import { GL, GLSamplerParameters } from '@luma.gl/constants';
4
+ import { WebGLDevice } from '../webgl-device';
5
+ import { WEBGLSampler } from './webgl-sampler';
6
+ export type WEBGLTextureProps = TextureProps & {
7
+ /** @deprecated use props.sampler */
8
+ parameters?: Record<number, number>;
9
+ /** @deprecated use props.data */
10
+ pixels?: any;
11
+ /** @deprecated use props.format */
12
+ dataFormat?: number | null;
13
+ /** @deprecated rarely supported */
14
+ border?: number;
15
+ /** @deprecated WebGL only. */
16
+ pixelStore?: object;
17
+ /** @deprecated WebGL only. */
18
+ textureUnit?: number;
19
+ /** @deprecated WebGL only. Use dimension. */
20
+ target?: number;
21
+ };
22
+ export declare const DEFAULT_WEBGL_TEXTURE_PROPS: {
23
+ parameters: {};
24
+ pixelStore: {};
25
+ pixels: any;
26
+ border: number;
27
+ dataFormat: any;
28
+ textureUnit: any;
29
+ target: any;
30
+ };
31
+ export type TextureSourceData = TypedArray | ImageData | HTMLImageElement | HTMLCanvasElement | ImageBitmap | HTMLVideoElement;
32
+ type SetImageDataOptions = {
9
33
  target?: number;
10
34
  level?: number;
11
35
  dataFormat?: any;
12
- width: number;
13
- height: number;
36
+ width?: number;
37
+ height?: number;
14
38
  depth?: number;
15
- format: any;
39
+ glFormat?: GL;
16
40
  type?: any;
17
41
  offset?: number;
18
42
  data: any;
@@ -43,14 +67,14 @@ declare type SetImageDataOptions = {
43
67
  * @param {Number} offset - (WEBGL2) offset from start of buffer
44
68
  * @parameters - temporary settings to be applied, can be used to supply pixel store settings.
45
69
  */
46
- declare type SetSubImageDataOptions = {
70
+ type SetSubImageDataOptions = {
47
71
  target?: number;
48
72
  level?: number;
49
73
  dataFormat?: any;
50
74
  width?: number;
51
75
  height?: number;
52
76
  depth?: number;
53
- format?: any;
77
+ glFormat?: any;
54
78
  type?: any;
55
79
  offset?: number;
56
80
  data: any;
@@ -61,30 +85,28 @@ declare type SetSubImageDataOptions = {
61
85
  /** @deprecated */
62
86
  pixels?: any;
63
87
  };
64
- declare type SetImageData3DOptions = {
88
+ type SetImageData3DOptions = {
65
89
  level?: number;
66
90
  dataFormat?: any;
67
- width: number;
68
- height: number;
91
+ width?: number;
92
+ height?: number;
69
93
  depth?: number;
70
- format: any;
94
+ format?: any;
71
95
  type?: any;
72
96
  offset?: number;
73
97
  data: any;
74
98
  parameters?: Record<GL, any>;
75
99
  };
76
- export default class WEBGLTexture extends Texture {
100
+ export declare class WEBGLTexture extends Texture<WEBGLTextureProps> {
77
101
  static FACES: number[];
78
102
  readonly MAX_ATTRIBUTES: number;
79
103
  readonly device: WebGLDevice;
80
104
  readonly gl: WebGLRenderingContext;
81
105
  readonly gl2: WebGL2RenderingContext | null;
82
106
  readonly handle: WebGLTexture;
83
- data: any;
84
- width: number;
85
- height: number;
86
- depth: number;
87
- format: GL;
107
+ /** Sampler object (currently unused) */
108
+ sampler: WEBGLSampler;
109
+ glFormat: GL;
88
110
  type: GL;
89
111
  dataFormat: GL;
90
112
  mipmaps: boolean;
@@ -99,8 +121,6 @@ export default class WEBGLTexture extends Texture {
99
121
  * */
100
122
  target: GL;
101
123
  textureUnit: number;
102
- /** Sampler object (currently unused) */
103
- sampler: WEBGLSampler;
104
124
  /**
105
125
  * Program.draw() checks the loaded flag of all textures to avoid
106
126
  * Textures that are still loading from promises
@@ -112,23 +132,23 @@ export default class WEBGLTexture extends Texture {
112
132
  parameters: any;
113
133
  lastTime: number;
114
134
  };
115
- constructor(device: Device, props: TextureProps);
135
+ constructor(device: Device, props: WEBGLTextureProps);
116
136
  destroy(): void;
117
137
  toString(): string;
118
- initialize(props?: TextureProps): this;
119
- initializeCube(props?: TextureProps): this;
138
+ initialize(props?: WEBGLTextureProps): this;
139
+ initializeCube(props?: WEBGLTextureProps): this;
120
140
  setSampler(sampler?: Sampler | SamplerProps): this;
121
141
  /**
122
142
  * If size has changed, reinitializes with current format
123
143
  * @note note clears image and mipmaps
124
144
  */
125
- resize({ height, width, mipmaps }: {
126
- height: any;
127
- width: any;
145
+ resize(options: {
146
+ height: number;
147
+ width: number;
128
148
  mipmaps?: boolean;
129
149
  }): this;
130
150
  /** Update external texture (video frame) */
131
- update(): this;
151
+ update(): void;
132
152
  generateMipmap(params?: {}): this;
133
153
  setImageData(options: SetImageDataOptions): this;
134
154
  /**
@@ -136,7 +156,7 @@ export default class WEBGLTexture extends Texture {
136
156
  * Note: does not allocate storage
137
157
  * Redefines an area of an existing texture
138
158
  */
139
- setSubImageData({ target, pixels, data, x, y, width, height, level, format, type, dataFormat, compressed, offset, parameters }: SetSubImageDataOptions): void;
159
+ setSubImageData({ target, pixels, data, x, y, width, height, level, glFormat, type, dataFormat, compressed, offset, parameters }: SetSubImageDataOptions): void;
140
160
  /**
141
161
  * Defines a two-dimensional texture image or cube-map texture image with
142
162
  * pixels from the current framebuffer (rather than from client memory).
@@ -156,14 +176,14 @@ export default class WEBGLTexture extends Texture {
156
176
  data: any;
157
177
  dataType: string;
158
178
  };
159
- _deduceParameters(opts: any): {
160
- dataFormat: any;
161
- type: any;
162
- compressed: any;
163
- width: any;
164
- height: any;
165
- format: any;
166
- data: any;
179
+ _deduceParameters(opts: WEBGLTextureProps): {
180
+ dataFormat: number;
181
+ type: number;
182
+ compressed: boolean;
183
+ width: number;
184
+ height: number;
185
+ format: import("@luma.gl/core").TextureFormat;
186
+ data: string | HTMLVideoElement | import("@luma.gl/core").TextureData | Promise<import("@luma.gl/core").TextureData> | import("modules/core/dist/adapter/resources/texture").CubeTextureData;
167
187
  };
168
188
  _deduceImageSize(data: any, width: any, height: any): {
169
189
  width: number;
@@ -180,14 +200,14 @@ export default class WEBGLTexture extends Texture {
180
200
  /** @todo update this method to accept LODs */
181
201
  setImageDataForFace(options: any): this;
182
202
  /** Image 3D copies from Typed Array or WebGLBuffer */
183
- setImageData3D({ level, dataFormat, format, type, // = GL.UNSIGNED_BYTE,
184
- width, height, depth, offset, data, parameters }: SetImageData3DOptions): this;
203
+ setImageData3D(options: SetImageData3DOptions): this;
185
204
  /**
186
205
  * Sets sampler parameters on texture
187
206
  * @note: Applies NPOT workaround if appropriate
188
207
  */
189
- _setSamplerParameters(parameters: WebGLSamplerParameters): this;
208
+ _setSamplerParameters(parameters: GLSamplerParameters): void;
190
209
  /** @deprecated For LegacyTexture subclass */
191
210
  protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number;
192
211
  }
212
+ export {};
193
213
  //# sourceMappingURL=webgl-texture.d.ts.map