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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +11 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +17 -35
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts +2 -2
  6. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/renderbuffer-formats.js +2 -7
  8. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  10. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  11. package/dist/adapter/converters/sampler-parameters.js +19 -55
  12. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  13. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  14. package/dist/adapter/converters/texture-formats.js +13 -66
  15. package/dist/adapter/converters/texture-formats.js.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  17. package/dist/adapter/converters/vertex-formats.js +2 -8
  18. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.js +1 -4
  23. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  24. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  25. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  26. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  27. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  28. package/dist/adapter/helpers/attribute-utils.js +0 -17
  29. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  31. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  32. package/dist/adapter/helpers/get-shader-info.js +25 -0
  33. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  34. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  36. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  37. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  39. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  40. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  41. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  42. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.js +1 -31
  44. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  45. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  46. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  47. package/dist/adapter/helpers/uniforms.js +4 -14
  48. package/dist/adapter/helpers/uniforms.js.map +1 -1
  49. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  50. package/dist/adapter/objects/constants-to-keys.js +0 -7
  51. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  52. package/dist/adapter/objects/webgl-renderbuffer.d.ts +3 -3
  53. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  54. package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
  55. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  56. package/dist/adapter/objects/webgl-resource.d.ts +3 -5
  57. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  58. package/dist/adapter/objects/webgl-resource.js +15 -68
  59. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  60. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
  61. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
  63. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  64. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  65. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-buffer.js +18 -49
  67. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  68. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  69. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-command-buffer.js +3 -18
  71. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  72. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
  73. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-command-encoder.js +2 -15
  75. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  76. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.d.ts +16 -16
  78. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-framebuffer.js +17 -75
  80. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
  82. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.js +3 -8
  84. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  86. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
  88. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  89. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  90. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.js +5 -13
  92. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  93. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  94. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.js +8 -21
  96. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.d.ts +26 -26
  98. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-texture.js +66 -183
  100. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  101. package/dist/adapter/webgl-canvas-context.d.ts +3 -3
  102. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  103. package/dist/adapter/webgl-canvas-context.js +6 -19
  104. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +53 -37
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +108 -109
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/classic/accessor.d.ts +1 -1
  110. package/dist/classic/accessor.d.ts.map +1 -1
  111. package/dist/classic/accessor.js +12 -36
  112. package/dist/classic/accessor.js.map +1 -1
  113. package/dist/classic/buffer.d.ts +3 -4
  114. package/dist/classic/buffer.d.ts.map +1 -1
  115. package/dist/classic/buffer.js +30 -87
  116. package/dist/classic/buffer.js.map +1 -1
  117. package/dist/classic/typed-array-utils.d.ts +1 -1
  118. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  119. package/dist/classic/typed-array-utils.js +0 -20
  120. package/dist/classic/typed-array-utils.js.map +1 -1
  121. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  122. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  123. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  124. package/dist/context/context/create-browser-context.js.map +1 -0
  125. package/dist/context/context/create-headless-context.d.ts +9 -0
  126. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  127. package/dist/context/context/create-headless-context.js +42 -0
  128. package/dist/context/context/create-headless-context.js.map +1 -0
  129. package/dist/context/context/webgl-checks.js +0 -3
  130. package/dist/context/context/webgl-checks.js.map +1 -1
  131. package/dist/context/debug/spector.d.ts +1 -0
  132. package/dist/context/debug/spector.d.ts.map +1 -1
  133. package/dist/context/debug/spector.js +7 -19
  134. package/dist/context/debug/spector.js.map +1 -1
  135. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  136. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  137. package/dist/context/debug/webgl-developer-tools.js +8 -32
  138. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  139. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  140. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  141. package/dist/context/parameters/unified-parameter-api.js +8 -18
  142. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  143. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  144. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  145. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  146. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  147. package/dist/context/polyfill/context-data.d.ts +13 -0
  148. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  149. package/dist/context/polyfill/context-data.js +12 -0
  150. package/dist/context/polyfill/context-data.js.map +1 -0
  151. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  152. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  154. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  155. package/dist/context/polyfill/polyfill-context.js +20 -28
  156. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  157. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  158. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  159. package/dist/context/polyfill/polyfill-table.js +8 -30
  160. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  162. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  163. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  164. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  165. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  166. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.js +15 -50
  168. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  169. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  171. package/dist/context/state-tracker/with-parameters.js +7 -9
  172. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  173. package/dist/dist.dev.js +9204 -0
  174. package/dist/index.cjs +5948 -0
  175. package/dist/index.d.ts +19 -19
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +24 -26
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/webgl.d.ts +8 -7
  180. package/dist/types/webgl.d.ts.map +1 -1
  181. package/dist/types/webgl.js.map +1 -1
  182. package/dist/types.js.map +1 -1
  183. package/dist.min.js +36 -0
  184. package/package.json +18 -9
  185. package/src/.DS_Store +0 -0
  186. package/src/adapter/.DS_Store +0 -0
  187. package/src/adapter/converters/device-parameters.ts +45 -16
  188. package/src/adapter/converters/renderbuffer-formats.ts +1 -3
  189. package/src/adapter/converters/sampler-parameters.ts +18 -7
  190. package/src/adapter/converters/texture-formats.ts +18 -16
  191. package/src/adapter/converters/vertex-formats.ts +1 -0
  192. package/src/adapter/device-helpers/device-features.ts +9 -2
  193. package/src/adapter/device-helpers/device-limits.ts +1 -1
  194. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  195. package/src/adapter/helpers/get-shader-info.ts +37 -0
  196. package/src/adapter/helpers/get-shader-layout.ts +59 -37
  197. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  198. package/src/adapter/helpers/set-uniform.ts +3 -1
  199. package/src/adapter/helpers/uniforms.ts +21 -10
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +8 -8
  202. package/src/adapter/objects/webgl-resource.ts +8 -13
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
  204. package/src/adapter/resources/webgl-buffer.ts +16 -16
  205. package/src/adapter/resources/webgl-command-buffer.ts +3 -3
  206. package/src/adapter/resources/webgl-command-encoder.ts +8 -8
  207. package/src/adapter/resources/webgl-external-texture.ts +1 -1
  208. package/src/adapter/resources/webgl-framebuffer.ts +36 -33
  209. package/src/adapter/resources/webgl-render-pass.ts +4 -3
  210. package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
  211. package/src/adapter/resources/webgl-sampler.ts +12 -6
  212. package/src/adapter/resources/webgl-shader.ts +10 -9
  213. package/src/adapter/resources/webgl-texture.ts +55 -45
  214. package/src/adapter/webgl-canvas-context.ts +8 -9
  215. package/src/adapter/webgl-device.ts +153 -69
  216. package/src/classic/accessor.ts +2 -15
  217. package/src/classic/buffer.ts +18 -25
  218. package/src/classic/typed-array-utils.ts +4 -2
  219. package/src/context/.DS_Store +0 -0
  220. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  221. package/src/context/context/create-headless-context.ts +48 -0
  222. package/src/context/debug/spector.ts +6 -5
  223. package/src/context/debug/webgl-developer-tools.ts +13 -13
  224. package/src/context/parameters/unified-parameter-api.ts +18 -12
  225. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  226. package/src/context/polyfill/context-data.ts +27 -0
  227. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  228. package/src/context/polyfill/polyfill-context.ts +6 -8
  229. package/src/context/polyfill/polyfill-table.ts +16 -14
  230. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  231. package/src/context/state-tracker/track-context-state.ts +13 -12
  232. package/src/context/state-tracker/with-parameters.ts +8 -2
  233. package/src/index.ts +28 -26
  234. package/src/types/webgl.ts +10 -7
  235. package/dist/bundle.d.ts +0 -2
  236. package/dist/bundle.d.ts.map +0 -1
  237. package/dist/bundle.js +0 -5
  238. package/dist/bundle.js.map +0 -1
  239. package/dist/context/context/context-state.d.ts +0 -18
  240. package/dist/context/context/context-state.d.ts.map +0 -1
  241. package/dist/context/context/context-state.js +0 -26
  242. package/dist/context/context/context-state.js.map +0 -1
  243. package/dist/context/context/create-context.d.ts.map +0 -1
  244. package/dist/context/context/create-context.js.map +0 -1
  245. package/dist/context/context/device-pixels.d.ts +0 -25
  246. package/dist/context/context/device-pixels.d.ts.map +0 -1
  247. package/dist/context/context/device-pixels.js +0 -98
  248. package/dist/context/context/device-pixels.js.map +0 -1
  249. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  250. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  251. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  252. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  253. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  254. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  255. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  256. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  257. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  258. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  259. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  260. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  261. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  262. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  263. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  264. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  265. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  266. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  267. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  268. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  270. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  271. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  272. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  273. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  274. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  275. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  276. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  277. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  278. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  279. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  280. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  281. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  282. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  283. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  284. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  286. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  288. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  290. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  291. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  292. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  293. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  294. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  295. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  296. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  297. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  298. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  299. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  300. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  301. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  302. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  303. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  304. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  305. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  306. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  307. package/dist/es5/adapter/webgl-device.js +0 -399
  308. package/dist/es5/adapter/webgl-device.js.map +0 -1
  309. package/dist/es5/bundle.js +0 -7
  310. package/dist/es5/bundle.js.map +0 -1
  311. package/dist/es5/classic/accessor.js +0 -181
  312. package/dist/es5/classic/accessor.js.map +0 -1
  313. package/dist/es5/classic/buffer.js +0 -470
  314. package/dist/es5/classic/buffer.js.map +0 -1
  315. package/dist/es5/classic/typed-array-utils.js +0 -126
  316. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  317. package/dist/es5/context/context/context-state.js +0 -31
  318. package/dist/es5/context/context/context-state.js.map +0 -1
  319. package/dist/es5/context/context/create-context.js +0 -69
  320. package/dist/es5/context/context/create-context.js.map +0 -1
  321. package/dist/es5/context/context/device-pixels.js +0 -115
  322. package/dist/es5/context/context/device-pixels.js.map +0 -1
  323. package/dist/es5/context/context/webgl-checks.js +0 -54
  324. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  325. package/dist/es5/context/debug/spector.js +0 -133
  326. package/dist/es5/context/debug/spector.js.map +0 -1
  327. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  328. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  329. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  330. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  331. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  332. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  333. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  334. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  335. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  336. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  337. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  338. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  339. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  340. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  341. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  342. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  343. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  344. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  345. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  346. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  347. package/dist/es5/index.js +0 -276
  348. package/dist/es5/index.js.map +0 -1
  349. package/dist/es5/init.js +0 -10
  350. package/dist/es5/init.js.map +0 -1
  351. package/dist/es5/types/webgl.js +0 -6
  352. package/dist/es5/types/webgl.js.map +0 -1
  353. package/dist/es5/types.js +0 -2
  354. package/dist/es5/types.js.map +0 -1
  355. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  356. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  357. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  358. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  359. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  360. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  361. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  362. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  363. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  364. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  365. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  366. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  367. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  368. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  369. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  370. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  371. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  372. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  373. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  374. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  375. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  376. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  377. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  378. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  379. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  380. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  381. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  382. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  383. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  384. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  385. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  386. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  387. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  388. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  389. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  390. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  392. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  394. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  396. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  397. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  398. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  399. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  400. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  401. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  402. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  403. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  404. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  405. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  406. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  407. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  408. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  409. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  410. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  411. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  412. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  413. package/dist/esm/adapter/webgl-device.js +0 -280
  414. package/dist/esm/adapter/webgl-device.js.map +0 -1
  415. package/dist/esm/bundle.js +0 -5
  416. package/dist/esm/bundle.js.map +0 -1
  417. package/dist/esm/classic/accessor.js +0 -144
  418. package/dist/esm/classic/accessor.js.map +0 -1
  419. package/dist/esm/classic/buffer.js +0 -384
  420. package/dist/esm/classic/buffer.js.map +0 -1
  421. package/dist/esm/classic/typed-array-utils.js +0 -112
  422. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  423. package/dist/esm/context/context/context-state.js +0 -26
  424. package/dist/esm/context/context/context-state.js.map +0 -1
  425. package/dist/esm/context/context/create-context.js +0 -49
  426. package/dist/esm/context/context/create-context.js.map +0 -1
  427. package/dist/esm/context/context/device-pixels.js +0 -98
  428. package/dist/esm/context/context/device-pixels.js.map +0 -1
  429. package/dist/esm/context/context/webgl-checks.js +0 -34
  430. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  431. package/dist/esm/context/debug/spector.js +0 -76
  432. package/dist/esm/context/debug/spector.js.map +0 -1
  433. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  434. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  435. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  436. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  437. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  438. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  439. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  440. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  441. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  442. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  443. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  444. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  445. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  446. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  447. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  448. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  449. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  450. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  451. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  452. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  453. package/dist/esm/index.js +0 -27
  454. package/dist/esm/index.js.map +0 -1
  455. package/dist/esm/init.js +0 -4
  456. package/dist/esm/init.js.map +0 -1
  457. package/dist/esm/types/webgl.js +0 -2
  458. package/dist/esm/types/webgl.js.map +0 -1
  459. package/dist/esm/types.js +0 -2
  460. package/dist/esm/types.js.map +0 -1
  461. package/dist/init.d.ts +0 -2
  462. package/dist/init.d.ts.map +0 -1
  463. package/dist/init.js +0 -4
  464. package/dist/init.js.map +0 -1
  465. package/src/bundle.ts +0 -4
  466. package/src/context/context/context-state.ts +0 -41
  467. package/src/context/context/device-pixels.ts +0 -152
  468. package/src/init.ts +0 -4
@@ -6,10 +6,10 @@ import type {
6
6
  CopyTextureToTextureOptions
7
7
  } from '@luma.gl/api';
8
8
 
9
- import CommandBuffer from './webgl-command-buffer';
10
- import WebGLDevice from '../webgl-device';
9
+ import {CommandBuffer} from './webgl-command-buffer';
10
+ import {WebGLDevice} from '../webgl-device';
11
11
 
12
- export default class WEBGLCommandEncoder extends CommandEncoder {
12
+ export class WEBGLCommandEncoder extends CommandEncoder {
13
13
  readonly device: WebGLDevice;
14
14
 
15
15
  readonly commandBuffer = new CommandBuffer();
@@ -19,7 +19,7 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
19
19
  this.device = device;
20
20
  }
21
21
 
22
- destroy() {}
22
+ override destroy(): void {}
23
23
 
24
24
  // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
25
25
  // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
@@ -41,10 +41,10 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
41
41
  this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
42
42
  }
43
43
 
44
- pushDebugGroup(groupLabel: string): void {}
45
- popDebugGroup() {}
44
+ override pushDebugGroup(groupLabel: string): void {}
45
+ override popDebugGroup() {}
46
46
 
47
- insertDebugMarker(markerLabel: string): void {}
47
+ override insertDebugMarker(markerLabel: string): void {}
48
48
 
49
49
  // writeTimestamp(querySet: Query, queryIndex: number): void {}
50
50
 
@@ -55,4 +55,4 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
55
55
  // destination: Buffer,
56
56
  // destinationOffset?: number;
57
57
  // }): void;
58
- };
58
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- export default class WEBGLExternalTexture extends WEBGLTexture {
2
+ export class WEBGLExternalTexture extends WEBGLTexture {
3
3
  readonly device: WebGLDevice;
4
4
  readonly gl: WebGLRenderingContext;
5
5
  readonly gl2: WebGL2RenderingContext | null;
@@ -1,24 +1,26 @@
1
- import type {FramebufferProps, DepthStencilTextureFormat, ColorTextureFormat} from '@luma.gl/api';
1
+ // luma.gl, MIT license
2
+
3
+ import type {FramebufferProps, ColorTextureFormat} from '@luma.gl/api';
2
4
  import {Framebuffer, Texture, log, assert} from '@luma.gl/api';
3
5
  import GL from '@luma.gl/constants';
4
- import WebGLDevice from '../webgl-device';
5
- import WebGLTexture from './webgl-texture';
6
- import Renderbuffer from '../objects/webgl-renderbuffer';
6
+ import {WebGLDevice} from '../webgl-device';
7
+ import {WEBGLTexture} from './webgl-texture';
8
+ import {WEBGLRenderbuffer} from '../objects/webgl-renderbuffer';
7
9
  import {getWebGLTextureFormat, getWebGLDepthStencilAttachment} from '../converters/texture-formats';
8
10
 
9
11
  export type TextureAttachment = [Texture, number?, number?];
10
- export type Attachment = WebGLTexture | Renderbuffer | TextureAttachment;
12
+ export type Attachment = WEBGLTexture | WEBGLRenderbuffer | TextureAttachment;
11
13
 
12
14
  /** luma.gl Framebuffer, WebGL implementation */
13
- export default class WEBGLFramebuffer extends Framebuffer {
15
+ export class WEBGLFramebuffer extends Framebuffer {
14
16
  device: WebGLDevice;
15
17
  gl: WebGLRenderingContext;
16
18
  handle: WebGLFramebuffer;
17
19
 
18
20
  get texture() { return this.colorAttachments[0]; }
19
- readonly colorAttachments: WebGLTexture[] = [];
20
- readonly depthStencilAttachment: WebGLTexture | undefined = undefined;
21
- protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];
21
+ readonly colorAttachments: WEBGLTexture[] = [];
22
+ readonly depthStencilAttachment: WEBGLTexture | null = null;
23
+ protected _ownResources: (WEBGLTexture | WEBGLRenderbuffer)[] = [];
22
24
 
23
25
  constructor(device: WebGLDevice, props: FramebufferProps) {
24
26
  super(device, props);
@@ -27,8 +29,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
27
29
  this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
28
30
 
29
31
  if (this.handle) { // default framebuffer is null...
30
- // @ts-expect-error Per SPECTOR docs
31
- this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};
32
+ device.setSpectorMetadata(this.handle, {id: this.props.id, props: this.props});
32
33
  }
33
34
 
34
35
  this.colorAttachments = this._createColorAttachments();
@@ -60,13 +61,14 @@ export default class WEBGLFramebuffer extends Framebuffer {
60
61
  }
61
62
  }
62
63
 
63
- destroy() {
64
+ override destroy(): void {
64
65
  if (this.handle !== null) {
65
66
  for (const resource of this._ownResources) {
66
67
  resource.destroy();
67
68
  }
68
69
  this.gl.deleteFramebuffer(this.handle);
69
- this.handle = null;
70
+ // this.handle = null;
71
+ this.destroyed = true;
70
72
  }
71
73
  }
72
74
 
@@ -84,12 +86,12 @@ export default class WEBGLFramebuffer extends Framebuffer {
84
86
  }
85
87
  }
86
88
 
87
- _createColorAttachments(): WebGLTexture[] {
89
+ _createColorAttachments(): WEBGLTexture[] {
88
90
  return this.props.colorAttachments.map(colorAttachment => {
89
91
  if (!colorAttachment) {
90
92
  return undefined;
91
93
  }
92
- if (colorAttachment instanceof WebGLTexture) {
94
+ if (colorAttachment instanceof WEBGLTexture) {
93
95
  return colorAttachment;
94
96
  }
95
97
  // if (typeof colorAttachment === 'default') {
@@ -101,7 +103,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
101
103
  }
102
104
 
103
105
  /** Create a color attachment */
104
- protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WebGLTexture {
106
+ protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WEBGLTexture {
105
107
  const texture = this.device._createTexture({
106
108
  id: `${this.id}-color`,
107
109
  data: null, // reserves texture memory, but texels are undefined
@@ -128,26 +130,26 @@ export default class WEBGLFramebuffer extends Framebuffer {
128
130
  // [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,
129
131
  // [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE
130
132
  // }
131
- }) as WebGLTexture;
133
+ }) ;
132
134
  this._ownResources.push(texture);
133
135
  return texture;
134
136
  }
135
137
 
136
138
  /** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */
137
- protected _createDepthStencilAttachment(): Renderbuffer | WebGLTexture {
139
+ protected _createDepthStencilAttachment(): WEBGLRenderbuffer | WEBGLTexture {
138
140
  if (!this.props.depthStencilAttachment) {
139
141
  return undefined;
140
142
  }
141
- if (this.props.depthStencilAttachment instanceof Renderbuffer) {
143
+ if (this.props.depthStencilAttachment instanceof WEBGLRenderbuffer) {
142
144
  return this.props.depthStencilAttachment;
143
145
  }
144
146
  if (this.props.depthStencilAttachment instanceof Texture) {
145
- return this.props.depthStencilAttachment as unknown as WebGLTexture;
147
+ return this.props.depthStencilAttachment as unknown as WEBGLTexture;
146
148
  }
147
149
  const format = this.props.depthStencilAttachment;
148
150
  const webglFormat = getWebGLTextureFormat(this.gl, format);
149
151
 
150
- const texture = new Renderbuffer(this.device, {
152
+ const texture = new WEBGLRenderbuffer(this.device, {
151
153
  id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?
152
154
  format: webglFormat,
153
155
  // dataFormat: GL.DEPTH_STENCIL,
@@ -187,21 +189,22 @@ export default class WEBGLFramebuffer extends Framebuffer {
187
189
  }
188
190
 
189
191
  /** Attach one attachment */
190
- protected _attachOne(attachmentPoint: GL, attachment: Attachment): WebGLTexture | Renderbuffer {
191
- if (attachment instanceof Renderbuffer) {
192
- this._attachRenderbuffer(attachmentPoint, attachment);
192
+ protected _attachOne(attachmentPoint: GL, attachment: Attachment): WEBGLTexture | WEBGLRenderbuffer {
193
+ if (attachment instanceof WEBGLRenderbuffer) {
194
+ this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
193
195
  return attachment;
194
196
  } else if (Array.isArray(attachment)) {
195
197
  const [texture, layer = 0, level = 0] = attachment;
196
- this._attachTexture(attachmentPoint, texture as unknown as WebGLTexture, layer, level);
197
- return texture as unknown as WebGLTexture;
198
- } else if (attachment instanceof WebGLTexture) {
198
+ this._attachTexture(attachmentPoint, texture as unknown as WEBGLTexture, layer, level);
199
+ return texture as unknown as WEBGLTexture;
200
+ } else if (attachment instanceof WEBGLTexture) {
199
201
  this._attachTexture(attachmentPoint, attachment, 0, 0);
200
202
  return attachment;
201
203
  }
204
+ throw new Error('attach');
202
205
  }
203
206
 
204
- protected _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {
207
+ protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
205
208
  this.gl.framebufferRenderbuffer(
206
209
  GL.FRAMEBUFFER,
207
210
  attachment,
@@ -213,10 +216,10 @@ export default class WEBGLFramebuffer extends Framebuffer {
213
216
  /**
214
217
  * @param attachment
215
218
  * @param texture
216
- * @param layer = 0 - index into WebGLTextureArray and Texture3D or face for `TextureCubeMap`
219
+ * @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
217
220
  * @param level = 0 - mipmapLevel (must be 0 in WebGL1)
218
221
  */
219
- protected _attachTexture(attachment: GL, texture: WebGLTexture, layer: number, level: number): void {
222
+ protected _attachTexture(attachment: GL, texture: WEBGLTexture, layer: number, level: number): void {
220
223
  const {gl, gl2} = this.device;
221
224
  gl.bindTexture(texture.target, texture.handle);
222
225
 
@@ -224,7 +227,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
224
227
  case GL.TEXTURE_2D_ARRAY:
225
228
  case GL.TEXTURE_3D:
226
229
  this.device.assertWebGL2();
227
- gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
230
+ gl2?.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
228
231
  break;
229
232
 
230
233
  case GL.TEXTURE_CUBE_MAP:
@@ -248,7 +251,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
248
251
  // Helper functions
249
252
 
250
253
  // Map an index to a cube map face constant
251
- function mapIndexToCubeMapFace(layer) {
254
+ function mapIndexToCubeMapFace(layer: number | GL): GL {
252
255
  // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
253
256
  // if smaller assume layer is index, otherwise assume it is already a cube map face constant
254
257
  return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
@@ -256,7 +259,7 @@ function mapIndexToCubeMapFace(layer) {
256
259
 
257
260
  // Helper METHODS
258
261
  // Get a string describing the framebuffer error if installed
259
- function _getFrameBufferStatus(status) {
262
+ function _getFrameBufferStatus(status: GL) {
260
263
  switch (status) {
261
264
  case GL.FRAMEBUFFER_COMPLETE:
262
265
  return 'success';
@@ -1,14 +1,15 @@
1
1
  import {RenderPass, RenderPassProps} from '@luma.gl/api';
2
- import WebGLDevice from '../webgl-device';
2
+ import {WebGLDevice} from '../webgl-device';
3
3
 
4
- export default class WEBGLRenderPass extends RenderPass {
4
+ export class WEBGLRenderPass extends RenderPass {
5
5
  readonly device: WebGLDevice;
6
6
 
7
7
  constructor(device: WebGLDevice, props: RenderPassProps) {
8
8
  super(device, props);
9
+ this.device = device;
9
10
  }
10
11
 
11
- endPass(): void {}
12
+ end(): void {}
12
13
 
13
14
  pushDebugGroup(groupLabel: string): void {}
14
15
  popDebugGroup(): void {}
@@ -1,32 +1,32 @@
1
1
  import type {
2
2
  RenderPipelineProps,
3
- RenderPipelineParameters,
4
3
  RenderPass,
5
4
  Buffer,
6
5
  Binding,
7
6
  ShaderLayout,
8
7
  PrimitiveTopology,
9
- BindingLayout,
8
+ // BindingLayout,
10
9
  AttributeLayout
11
10
  } from '@luma.gl/api';
12
11
  import {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';
13
12
  import GL from '@luma.gl/constants';
13
+
14
14
  import {getWebGLDataType} from '../converters/texture-formats';
15
15
  import {getShaderLayout} from '../helpers/get-shader-layout';
16
- import {withDeviceParameters} from '../converters/device-parameters';
16
+ import {withDeviceParameters, withGLParameters} from '../converters/device-parameters';
17
17
  import {setUniform} from '../helpers/set-uniform';
18
18
  // import {copyUniform, checkUniformValues} from '../../classes/uniforms';
19
19
 
20
- import WebGLDevice from '../webgl-device';
21
- import WEBGLBuffer from './webgl-buffer';
22
- import WEBGLShader from './webgl-shader';
23
- import WEBGLTexture from './webgl-texture';
24
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
20
+ import {WebGLDevice} from '../webgl-device';
21
+ import {WEBGLBuffer} from './webgl-buffer';
22
+ import {WEBGLShader} from './webgl-shader';
23
+ import {WEBGLTexture} from './webgl-texture';
24
+ import {WEBGLVertexArrayObject} from '../objects/webgl-vertex-array-object';
25
25
 
26
26
  const LOG_PROGRAM_PERF_PRIORITY = 4;
27
27
 
28
28
  /** Creates a new render pipeline */
29
- export default class WEBGLRenderPipeline extends RenderPipeline {
29
+ export class WEBGLRenderPipeline extends RenderPipeline {
30
30
  device: WebGLDevice;
31
31
  handle: WebGLProgram;
32
32
  vs: WEBGLShader;
@@ -35,7 +35,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
35
35
 
36
36
  // configuration: ProgramConfiguration;
37
37
  // Experimental flag to avoid deleting Program object while it is cached
38
- varyings: string[];
38
+ varyings: string[] | null = null;
39
39
  vertexArrayObject: WEBGLVertexArrayObject;
40
40
  _indexBuffer?: Buffer;
41
41
  uniforms: Record<string, any> = {};
@@ -43,14 +43,13 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
43
43
  _textureUniforms: Record<string, any> = {};
44
44
  _textureIndexCounter: number = 0;
45
45
  _uniformCount: number = 0;
46
- _uniformSetters: Record<string, Function>;
46
+ _uniformSetters: Record<string, Function> = {}; // TODO are these used?
47
47
 
48
48
  constructor(device: WebGLDevice, props: RenderPipelineProps) {
49
49
  super(device, props);
50
50
  this.device = device;
51
51
  this.handle = this.props.handle || this.device.gl.createProgram();
52
- // @ts-expect-error
53
- this.handle.__SPECTOR_Metadata = {id: this.props.id};
52
+ this.device.setSpectorMetadata(this.handle, {id: this.props.id});
54
53
 
55
54
  // Create shaders if needed
56
55
  this.vs = cast<WEBGLShader>(props.vs);
@@ -64,7 +63,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
64
63
  if (varyings && varyings.length > 0) {
65
64
  this.device.assertWebGL2();
66
65
  this.varyings = varyings;
67
- this.device.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);
66
+ this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);
68
67
  }
69
68
 
70
69
  this._compileAndLink();
@@ -73,10 +72,11 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
73
72
  this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
74
73
  }
75
74
 
76
- destroy(): void {
75
+ override destroy(): void {
77
76
  if (this.handle) {
78
77
  this.device.gl.deleteProgram(this.handle);
79
- this.handle = null;
78
+ // this.handle = null;
79
+ this.destroyed = true;
80
80
  }
81
81
  }
82
82
 
@@ -93,7 +93,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
93
93
  const attribute = getAttributeLayout(this.layout, name);
94
94
  if (!attribute) {
95
95
  log.warn(`Ignoring buffer supplied for unknown attribute "${name}" in pipeline "${this.id}" (buffer "${buffer.id}")`)();
96
- continue;
96
+ continue; // eslint-disable-line no-continue
97
97
  }
98
98
  const decoded = decodeVertexFormat(attribute.format);
99
99
  const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;
@@ -106,7 +106,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
106
106
  offset: 0,
107
107
  normalized,
108
108
  integer,
109
- divisor: attribute.stepMode === 'instance' ? 1 : 0
109
+ divisor
110
110
  });
111
111
  }
112
112
  }
@@ -121,6 +121,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
121
121
  const binding = this.layout.bindings.find((binding) => binding.name === name);
122
122
  if (!binding) {
123
123
  log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();
124
+ continue; // eslint-disable-line no-continue
124
125
  }
125
126
  if (!value) {
126
127
  log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();
@@ -170,18 +171,18 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
170
171
  const {
171
172
  renderPass = this.device.getDefaultRenderPass(),
172
173
  vertexCount,
173
- indexCount,
174
+ // indexCount,
174
175
  instanceCount,
175
176
  firstVertex = 0,
176
- firstIndex,
177
- firstInstance,
178
- baseVertex
177
+ // firstIndex,
178
+ // firstInstance,
179
+ // baseVertex
179
180
  } = options;
180
181
 
181
182
  const drawMode = getDrawMode(this.props.topology);
182
183
  const isIndexed: boolean = Boolean(this._indexBuffer);
183
184
  const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
184
- const isInstanced: boolean = options.instanceCount > 0;
185
+ const isInstanced: boolean = Number(options.instanceCount) > 0;
185
186
 
186
187
  // Avoid WebGL draw call when not rendering any data or values are incomplete
187
188
  // Note: async textures set as uniforms might still be loading.
@@ -195,8 +196,6 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
195
196
  this.device.gl.useProgram(this.handle);
196
197
 
197
198
  this.vertexArrayObject.bind(() => {
198
- const parameters = {...this.props.parameters, framebuffer: renderPass.props.framebuffer};
199
-
200
199
  const primitiveMode = getGLPrimitive(this.props.topology);
201
200
  const transformFeedback: any = null;
202
201
  if (transformFeedback) {
@@ -208,31 +207,33 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
208
207
  this._applyUniforms();
209
208
 
210
209
  // TODO - double context push/pop
211
- withDeviceParameters(this.device, parameters, () => {
212
- // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
213
- if (isIndexed && isInstanced) {
214
- // ANGLE_instanced_arrays extension
215
- this.device.gl2.drawElementsInstanced(
216
- drawMode,
217
- vertexCount,
218
- indexType,
219
- firstVertex,
220
- instanceCount
221
- );
222
- // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
223
- // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
224
- } else if (isIndexed) {
225
- this.device.gl.drawElements(drawMode, vertexCount, indexType, firstVertex);
226
- } else if (isInstanced) {
227
- this.device.gl2.drawArraysInstanced(drawMode, firstVertex, vertexCount, instanceCount);
228
- } else {
229
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount);
210
+ withDeviceParameters(this.device, this.props.parameters, () => {
211
+ withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {
212
+ // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
213
+ if (isIndexed && isInstanced) {
214
+ // ANGLE_instanced_arrays extension
215
+ this.device.gl2?.drawElementsInstanced(
216
+ drawMode,
217
+ vertexCount || 0, // indexCount?
218
+ indexType,
219
+ firstVertex,
220
+ instanceCount || 0
221
+ );
222
+ // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
223
+ // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
224
+ } else if (isIndexed) {
225
+ this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?
226
+ } else if (isInstanced) {
227
+ this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
228
+ } else {
229
+ this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
230
+ }
231
+ });
232
+
233
+ if (transformFeedback) {
234
+ transformFeedback.end();
230
235
  }
231
236
  });
232
-
233
- if (transformFeedback) {
234
- transformFeedback.end();
235
- }
236
237
  });
237
238
 
238
239
  return true;
@@ -275,12 +276,12 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
275
276
  _areTexturesRenderable() {
276
277
  let texturesRenderable = true;
277
278
 
278
- for (const [name, texture] of Object.entries(this._textureUniforms)) {
279
+ for (const [, texture] of Object.entries(this._textureUniforms)) {
279
280
  texture.update();
280
281
  texturesRenderable = texturesRenderable && texture.loaded;
281
282
  }
282
283
 
283
- for (const [name, texture] of Object.entries(this.bindings)) {
284
+ for (const [, texture] of Object.entries(this.bindings)) {
284
285
  // texture.update();
285
286
  if (texture.loaded !== undefined) {
286
287
  texturesRenderable = texturesRenderable && texture.loaded;
@@ -295,6 +296,9 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
295
296
  this.device.gl.useProgram(this.handle);
296
297
 
297
298
  const {gl2} = this.device;
299
+ if (!gl2) {
300
+ throw new Error('bindings');
301
+ }
298
302
 
299
303
  let textureUnit = 0;
300
304
  let uniformBufferIndex = 0;
@@ -363,15 +367,17 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
363
367
  /** Get the primitive type for transform feedback */
364
368
  function getDrawMode(
365
369
  topology: PrimitiveTopology
366
- ): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.TRIANGLES | GL.TRIANGLE_STRIP {
370
+ ): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {
367
371
  // prettier-ignore
368
372
  switch (topology) {
369
- case 'point-list': return GL.POINTS;
370
- case 'line-list': return GL.LINES;
371
- case 'line-strip': return GL.LINE_STRIP;
372
- case 'triangle-list': return GL.TRIANGLES;
373
- case 'triangle-strip': return GL.TRIANGLE_STRIP;
374
- default: throw new Error(topology);
373
+ case 'point-list': return GL.POINTS;
374
+ case 'line-list': return GL.LINES;
375
+ case 'line-strip': return GL.LINE_STRIP;
376
+ case 'line-loop': return GL.LINE_LOOP;
377
+ case 'triangle-list': return GL.TRIANGLES;
378
+ case 'triangle-strip': return GL.TRIANGLE_STRIP;
379
+ case 'triangle-fan': return GL.TRIANGLE_FAN;
380
+ default: throw new Error(topology);
375
381
  }
376
382
  }
377
383
 
@@ -379,31 +385,36 @@ function getDrawMode(
379
385
  function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {
380
386
  // prettier-ignore
381
387
  switch (topology) {
382
- case 'point-list': return GL.POINTS;
383
- case 'line-list': return GL.LINES;
384
- case 'line-strip': return GL.LINES;
385
- case 'triangle-list': return GL.TRIANGLES;
386
- case 'triangle-strip': return GL.TRIANGLES;
387
- default: throw new Error(topology);
388
- }
389
- }
390
-
391
- function getAttributesByLocation(
392
- attributes: Record<string, Buffer>,
393
- layout: ShaderLayout
394
- ): Record<number, Buffer> {
395
- const byLocation: Record<number, Buffer> = {};
396
- for (const [name, buffer] of Object.entries(attributes)) {
397
- const attribute = getAttributeLayout(layout, name);
398
- byLocation[attribute.location] = buffer;
388
+ case 'point-list': return GL.POINTS;
389
+ case 'line-list': return GL.LINES;
390
+ case 'line-strip': return GL.LINES;
391
+ case 'line-loop': return GL.LINES;
392
+ case 'triangle-list': return GL.TRIANGLES;
393
+ case 'triangle-strip': return GL.TRIANGLES;
394
+ case 'triangle-fan': return GL.TRIANGLES;
395
+ default: throw new Error(topology);
399
396
  }
400
- return byLocation;
401
397
  }
402
398
 
403
- function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | undefined {
404
- return layout.attributes.find((binding) => binding.name === name);
399
+ // function getAttributesByLocation(
400
+ // attributes: Record<string, Buffer>,
401
+ // layout: ShaderLayout
402
+ // ): Record<number, Buffer> {
403
+ // const byLocation: Record<number, Buffer> = {};
404
+ // for (const [name, buffer] of Object.entries(attributes)) {
405
+ // const attribute = getAttributeLayout(layout, name);
406
+ // if (attribute) {
407
+ // byLocation[attribute.location] = buffer;
408
+ // }
409
+ // }
410
+ // return byLocation;
411
+ // }
412
+
413
+ function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {
414
+ return layout.attributes.find((binding) => binding.name === name) || null;
405
415
  }
406
416
 
417
+ /* TODO
407
418
  function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
408
419
  const binding = layout.bindings.find((binding) => binding.name === name);
409
420
  if (!binding) {
@@ -411,3 +422,4 @@ function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
411
422
  }
412
423
  return binding;
413
424
  }
425
+ */
@@ -1,8 +1,10 @@
1
+ // luma.gl, MIT license
2
+
1
3
  import {Sampler, SamplerProps} from '@luma.gl/api';
2
4
  import GL from '@luma.gl/constants';
3
- import type {WebGLSamplerParameters} from '../../types/webgl';
5
+ import type {GLSamplerParameters} from '../../types/webgl';
4
6
  import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
5
- import type WebGLDevice from '../webgl-device';
7
+ import type {WebGLDevice} from '../webgl-device';
6
8
 
7
9
  /**
8
10
  * Sampler object -
@@ -11,10 +13,10 @@ import type WebGLDevice from '../webgl-device';
11
13
  * so that they can be set directly on the texture
12
14
  * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
13
15
  */
14
- export default class WEBGLSampler extends Sampler {
16
+ export class WEBGLSampler extends Sampler {
15
17
  readonly device: WebGLDevice;
16
18
  readonly handle: WebGLSampler;
17
- readonly parameters: WebGLSamplerParameters;
19
+ readonly parameters: GLSamplerParameters;
18
20
 
19
21
  constructor(device: WebGLDevice, props: SamplerProps) {
20
22
  super(device, props);
@@ -26,7 +28,7 @@ export default class WEBGLSampler extends Sampler {
26
28
  }
27
29
  }
28
30
 
29
- destroy(): void {
31
+ override destroy(): void {
30
32
  if (this.handle) {
31
33
  this.device.gl2.deleteSampler(this.handle);
32
34
  // @ts-expect-error
@@ -34,8 +36,12 @@ export default class WEBGLSampler extends Sampler {
34
36
  }
35
37
  }
36
38
 
39
+ override toString(): string {
40
+ return `Sampler(${this.id},${JSON.stringify(this.props)})`;
41
+ }
42
+
37
43
  /** Set sampler parameters on the sampler */
38
- private _setSamplerParameters(parameters: WebGLSamplerParameters): void {
44
+ private _setSamplerParameters(parameters: GLSamplerParameters): void {
39
45
  for (const [pname, value] of Object.entries(parameters)) {
40
46
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
41
47
  // For now, pick the float version for parameters specified as GLfloat.