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

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 (454) 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.js +1 -5
  6. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  8. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.js +19 -55
  10. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  11. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/texture-formats.js +13 -66
  13. package/dist/adapter/converters/texture-formats.js.map +1 -1
  14. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  15. package/dist/adapter/converters/vertex-formats.js +2 -8
  16. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  17. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/device-features.js +13 -20
  19. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  20. package/dist/adapter/device-helpers/device-limits.js +1 -4
  21. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  22. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  23. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  24. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  25. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  26. package/dist/adapter/helpers/attribute-utils.js +0 -17
  27. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  28. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  29. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  30. package/dist/adapter/helpers/get-shader-info.js +25 -0
  31. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  32. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  33. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  34. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  35. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  36. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  37. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  39. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  40. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  41. package/dist/adapter/helpers/set-uniform.js +1 -31
  42. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  43. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  44. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  45. package/dist/adapter/helpers/uniforms.js +4 -14
  46. package/dist/adapter/helpers/uniforms.js.map +1 -1
  47. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  48. package/dist/adapter/objects/constants-to-keys.js +0 -7
  49. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  50. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  51. package/dist/adapter/objects/webgl-renderbuffer.js +5 -21
  52. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  53. package/dist/adapter/objects/webgl-resource.d.ts +2 -4
  54. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  55. package/dist/adapter/objects/webgl-resource.js +14 -67
  56. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  57. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  58. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  59. package/dist/adapter/objects/webgl-vertex-array-object.js +6 -16
  60. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  61. package/dist/adapter/resources/webgl-buffer.d.ts +1 -2
  62. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-buffer.js +17 -48
  64. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  65. package/dist/adapter/resources/webgl-command-buffer.js +2 -17
  66. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  67. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-command-encoder.js +1 -14
  69. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  70. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  71. package/dist/adapter/resources/webgl-framebuffer.d.ts +1 -1
  72. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-framebuffer.js +9 -67
  74. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  75. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  76. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-render-pass.js +2 -7
  78. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  79. package/dist/adapter/resources/webgl-render-pipeline.d.ts +1 -1
  80. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pipeline.js +50 -139
  82. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  83. package/dist/adapter/resources/webgl-sampler.d.ts +3 -2
  84. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-sampler.js +4 -12
  86. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  87. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  88. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  89. package/dist/adapter/resources/webgl-shader.js +7 -20
  90. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  91. package/dist/adapter/resources/webgl-texture.d.ts +23 -23
  92. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  93. package/dist/adapter/resources/webgl-texture.js +65 -182
  94. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  95. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  96. package/dist/adapter/webgl-canvas-context.js +5 -18
  97. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  98. package/dist/adapter/webgl-device.d.ts +45 -29
  99. package/dist/adapter/webgl-device.d.ts.map +1 -1
  100. package/dist/adapter/webgl-device.js +107 -108
  101. package/dist/adapter/webgl-device.js.map +1 -1
  102. package/dist/classic/accessor.d.ts.map +1 -1
  103. package/dist/classic/accessor.js +11 -35
  104. package/dist/classic/accessor.js.map +1 -1
  105. package/dist/classic/buffer.d.ts +0 -1
  106. package/dist/classic/buffer.d.ts.map +1 -1
  107. package/dist/classic/buffer.js +29 -86
  108. package/dist/classic/buffer.js.map +1 -1
  109. package/dist/classic/typed-array-utils.d.ts +1 -1
  110. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  111. package/dist/classic/typed-array-utils.js +0 -20
  112. package/dist/classic/typed-array-utils.js.map +1 -1
  113. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  114. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  115. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  116. package/dist/context/context/create-browser-context.js.map +1 -0
  117. package/dist/context/context/create-headless-context.d.ts +9 -0
  118. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  119. package/dist/context/context/create-headless-context.js +42 -0
  120. package/dist/context/context/create-headless-context.js.map +1 -0
  121. package/dist/context/context/webgl-checks.js +0 -3
  122. package/dist/context/context/webgl-checks.js.map +1 -1
  123. package/dist/context/debug/spector.d.ts +1 -0
  124. package/dist/context/debug/spector.d.ts.map +1 -1
  125. package/dist/context/debug/spector.js +7 -19
  126. package/dist/context/debug/spector.js.map +1 -1
  127. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  128. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  129. package/dist/context/debug/webgl-developer-tools.js +8 -32
  130. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  131. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/unified-parameter-api.js +8 -18
  134. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  135. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  136. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  137. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  138. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  139. package/dist/context/polyfill/context-data.d.ts +13 -0
  140. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  141. package/dist/context/polyfill/context-data.js +12 -0
  142. package/dist/context/polyfill/context-data.js.map +1 -0
  143. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  144. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  145. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  146. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  147. package/dist/context/polyfill/polyfill-context.js +20 -28
  148. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  149. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  150. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  151. package/dist/context/polyfill/polyfill-table.js +8 -30
  152. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  153. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  154. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  155. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +15 -50
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  162. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  163. package/dist/context/state-tracker/with-parameters.js +7 -9
  164. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  165. package/dist/dist.dev.js +9205 -0
  166. package/dist/index.cjs +5948 -0
  167. package/dist/index.d.ts +6 -6
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +24 -26
  170. package/dist/index.js.map +1 -1
  171. package/dist/types/webgl.d.ts +8 -7
  172. package/dist/types/webgl.d.ts.map +1 -1
  173. package/dist/types/webgl.js.map +1 -1
  174. package/dist/types.js.map +1 -1
  175. package/dist.min.js +36 -0
  176. package/package.json +18 -9
  177. package/src/adapter/converters/device-parameters.ts +44 -15
  178. package/src/adapter/converters/sampler-parameters.ts +18 -7
  179. package/src/adapter/converters/texture-formats.ts +18 -16
  180. package/src/adapter/converters/vertex-formats.ts +1 -0
  181. package/src/adapter/device-helpers/device-features.ts +9 -2
  182. package/src/adapter/device-helpers/device-limits.ts +1 -1
  183. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  184. package/src/adapter/helpers/get-shader-info.ts +37 -0
  185. package/src/adapter/helpers/get-shader-layout.ts +58 -36
  186. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  187. package/src/adapter/helpers/set-uniform.ts +3 -1
  188. package/src/adapter/helpers/uniforms.ts +21 -10
  189. package/src/adapter/objects/constants-to-keys.ts +4 -1
  190. package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
  191. package/src/adapter/objects/webgl-resource.ts +7 -12
  192. package/src/adapter/objects/webgl-vertex-array-object.ts +5 -5
  193. package/src/adapter/resources/webgl-buffer.ts +14 -14
  194. package/src/adapter/resources/webgl-command-encoder.ts +5 -5
  195. package/src/adapter/resources/webgl-framebuffer.ts +14 -11
  196. package/src/adapter/resources/webgl-render-pass.ts +2 -1
  197. package/src/adapter/resources/webgl-render-pipeline.ts +83 -71
  198. package/src/adapter/resources/webgl-sampler.ts +10 -4
  199. package/src/adapter/resources/webgl-shader.ts +9 -8
  200. package/src/adapter/resources/webgl-texture.ts +51 -41
  201. package/src/adapter/webgl-canvas-context.ts +5 -6
  202. package/src/adapter/webgl-device.ts +144 -60
  203. package/src/classic/accessor.ts +1 -14
  204. package/src/classic/buffer.ts +14 -21
  205. package/src/classic/typed-array-utils.ts +4 -2
  206. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  207. package/src/context/context/create-headless-context.ts +48 -0
  208. package/src/context/debug/spector.ts +6 -5
  209. package/src/context/debug/webgl-developer-tools.ts +13 -13
  210. package/src/context/parameters/unified-parameter-api.ts +17 -11
  211. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  212. package/src/context/polyfill/context-data.ts +27 -0
  213. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  214. package/src/context/polyfill/polyfill-context.ts +6 -8
  215. package/src/context/polyfill/polyfill-table.ts +16 -14
  216. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  217. package/src/context/state-tracker/track-context-state.ts +13 -12
  218. package/src/context/state-tracker/with-parameters.ts +8 -2
  219. package/src/index.ts +14 -12
  220. package/src/types/webgl.ts +10 -7
  221. package/dist/bundle.d.ts +0 -2
  222. package/dist/bundle.d.ts.map +0 -1
  223. package/dist/bundle.js +0 -5
  224. package/dist/bundle.js.map +0 -1
  225. package/dist/context/context/context-state.d.ts +0 -18
  226. package/dist/context/context/context-state.d.ts.map +0 -1
  227. package/dist/context/context/context-state.js +0 -26
  228. package/dist/context/context/context-state.js.map +0 -1
  229. package/dist/context/context/create-context.d.ts.map +0 -1
  230. package/dist/context/context/create-context.js.map +0 -1
  231. package/dist/context/context/device-pixels.d.ts +0 -25
  232. package/dist/context/context/device-pixels.d.ts.map +0 -1
  233. package/dist/context/context/device-pixels.js +0 -98
  234. package/dist/context/context/device-pixels.js.map +0 -1
  235. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  236. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  237. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  238. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  239. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  240. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  241. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  242. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  243. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  244. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  245. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  246. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  247. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  248. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  249. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  250. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  251. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  252. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  253. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  254. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  255. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  256. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  257. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  258. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  259. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  260. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  261. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  262. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  263. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  264. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  265. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  266. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  267. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  268. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  269. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  270. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  271. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  272. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  273. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  274. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  275. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  276. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  277. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  278. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  279. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  280. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  281. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  282. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  283. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  284. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  286. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  288. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  290. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  291. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  292. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  293. package/dist/es5/adapter/webgl-device.js +0 -399
  294. package/dist/es5/adapter/webgl-device.js.map +0 -1
  295. package/dist/es5/bundle.js +0 -7
  296. package/dist/es5/bundle.js.map +0 -1
  297. package/dist/es5/classic/accessor.js +0 -181
  298. package/dist/es5/classic/accessor.js.map +0 -1
  299. package/dist/es5/classic/buffer.js +0 -470
  300. package/dist/es5/classic/buffer.js.map +0 -1
  301. package/dist/es5/classic/typed-array-utils.js +0 -126
  302. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  303. package/dist/es5/context/context/context-state.js +0 -31
  304. package/dist/es5/context/context/context-state.js.map +0 -1
  305. package/dist/es5/context/context/create-context.js +0 -69
  306. package/dist/es5/context/context/create-context.js.map +0 -1
  307. package/dist/es5/context/context/device-pixels.js +0 -115
  308. package/dist/es5/context/context/device-pixels.js.map +0 -1
  309. package/dist/es5/context/context/webgl-checks.js +0 -54
  310. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  311. package/dist/es5/context/debug/spector.js +0 -133
  312. package/dist/es5/context/debug/spector.js.map +0 -1
  313. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  314. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  315. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  316. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  317. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  318. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  319. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  320. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  321. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  322. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  323. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  324. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  325. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  326. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  327. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  328. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  329. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  330. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  331. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  332. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  333. package/dist/es5/index.js +0 -276
  334. package/dist/es5/index.js.map +0 -1
  335. package/dist/es5/init.js +0 -10
  336. package/dist/es5/init.js.map +0 -1
  337. package/dist/es5/types/webgl.js +0 -6
  338. package/dist/es5/types/webgl.js.map +0 -1
  339. package/dist/es5/types.js +0 -2
  340. package/dist/es5/types.js.map +0 -1
  341. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  342. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  343. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  344. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  345. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  346. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  347. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  348. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  349. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  350. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  351. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  352. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  353. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  354. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  355. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  356. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  357. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  358. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  359. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  360. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  361. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  362. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  363. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  364. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  365. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  366. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  367. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  368. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  369. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  370. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  371. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  372. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  373. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  374. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  375. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  376. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  377. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  378. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  379. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  380. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  381. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  382. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  383. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  384. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  385. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  386. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  387. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  388. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  389. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  390. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  392. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  394. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  396. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  397. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  398. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  399. package/dist/esm/adapter/webgl-device.js +0 -280
  400. package/dist/esm/adapter/webgl-device.js.map +0 -1
  401. package/dist/esm/bundle.js +0 -5
  402. package/dist/esm/bundle.js.map +0 -1
  403. package/dist/esm/classic/accessor.js +0 -144
  404. package/dist/esm/classic/accessor.js.map +0 -1
  405. package/dist/esm/classic/buffer.js +0 -384
  406. package/dist/esm/classic/buffer.js.map +0 -1
  407. package/dist/esm/classic/typed-array-utils.js +0 -112
  408. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  409. package/dist/esm/context/context/context-state.js +0 -26
  410. package/dist/esm/context/context/context-state.js.map +0 -1
  411. package/dist/esm/context/context/create-context.js +0 -49
  412. package/dist/esm/context/context/create-context.js.map +0 -1
  413. package/dist/esm/context/context/device-pixels.js +0 -98
  414. package/dist/esm/context/context/device-pixels.js.map +0 -1
  415. package/dist/esm/context/context/webgl-checks.js +0 -34
  416. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  417. package/dist/esm/context/debug/spector.js +0 -76
  418. package/dist/esm/context/debug/spector.js.map +0 -1
  419. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  420. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  421. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  422. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  423. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  424. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  425. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  426. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  427. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  428. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  429. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  430. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  431. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  432. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  433. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  434. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  435. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  436. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  437. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  438. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  439. package/dist/esm/index.js +0 -27
  440. package/dist/esm/index.js.map +0 -1
  441. package/dist/esm/init.js +0 -4
  442. package/dist/esm/init.js.map +0 -1
  443. package/dist/esm/types/webgl.js +0 -2
  444. package/dist/esm/types/webgl.js.map +0 -1
  445. package/dist/esm/types.js +0 -2
  446. package/dist/esm/types.js.map +0 -1
  447. package/dist/init.d.ts +0 -2
  448. package/dist/init.d.ts.map +0 -1
  449. package/dist/init.js +0 -4
  450. package/dist/init.js.map +0 -1
  451. package/src/bundle.ts +0 -4
  452. package/src/context/context/context-state.ts +0 -41
  453. package/src/context/context/device-pixels.ts +0 -152
  454. package/src/init.ts +0 -4
@@ -1,19 +1,19 @@
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
 
@@ -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,6 +1,8 @@
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
7
  import type WebGLDevice from '../webgl-device';
6
8
 
@@ -14,7 +16,7 @@ import type WebGLDevice from '../webgl-device';
14
16
  export default 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.
@@ -1,14 +1,14 @@
1
1
  // luma.gl, MIT license
2
- import {log, uid, Shader, ShaderProps} from '@luma.gl/api';
2
+ import {log, uid, Shader, ShaderProps, CompilerMessage, formatCompilerLog} from '@luma.gl/api';
3
3
  import GL from '@luma.gl/constants';
4
- import {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';
4
+ import {getShaderInfo} from '../helpers/get-shader-info';
5
5
  import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
6
6
  import WebGLDevice from '../webgl-device';
7
7
 
8
8
  /**
9
9
  * An immutable compiled shader program that execute portions of the GPU Pipeline
10
10
  */
11
- export default class WEBGLShader extends Shader {
11
+ export default class WEBGLShader extends Shader {
12
12
  readonly device: WebGLDevice;
13
13
  readonly handle: WebGLShader;
14
14
 
@@ -28,18 +28,18 @@ import WebGLDevice from '../webgl-device';
28
28
  this._compile(this.source);
29
29
  }
30
30
 
31
- destroy(): void {
31
+ override destroy(): void {
32
32
  if (this.handle) {
33
33
  this.removeStats();
34
34
  this.device.gl.deleteShader(this.handle);
35
- // @ts-expect-error
36
- this.handle = null;
35
+ // this.handle = null;
36
+ this.destroyed = true;
37
37
  }
38
38
  }
39
39
 
40
40
  async compilationInfo(): Promise<readonly CompilerMessage[]> {
41
41
  const log = this.device.gl.getShaderInfoLog(this.handle);
42
- return parseShaderCompilerLog(log);
42
+ return log ? parseShaderCompilerLog(log) : [];
43
43
  }
44
44
 
45
45
  // PRIVATE METHODS
@@ -58,7 +58,8 @@ import WebGLDevice from '../webgl-device';
58
58
  const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
59
59
  if (!compileStatus) {
60
60
  const shaderLog = gl.getShaderInfoLog(this.handle);
61
- const messages = parseShaderCompilerLog(shaderLog).filter(message => message.type === 'error');
61
+ const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
62
+ const messages = parsedLog.filter(message => message.type === 'error');
62
63
  const formattedLog = formatCompilerLog(messages, source);
63
64
  const shaderName: string = getShaderInfo(source).name;
64
65
  const shaderDescription = `${this.stage} shader ${shaderName}`;
@@ -10,11 +10,12 @@ import {
10
10
  Sampler,
11
11
  SamplerProps,
12
12
  SamplerParameters,
13
+ TypedArray,
13
14
  isObjectEmpty
14
15
  } from '@luma.gl/api';
15
16
  import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/api';
16
17
  import GL from '@luma.gl/constants';
17
- import type {WebGLSamplerParameters} from '../../types/webgl';
18
+ import type {GLSamplerParameters} from '../../types/webgl';
18
19
  import {withParameters} from '../../context/state-tracker/with-parameters';
19
20
  import {
20
21
  getWebGLTextureFormat,
@@ -31,22 +32,31 @@ import WEBGLSampler from './webgl-sampler';
31
32
 
32
33
  export type {TextureProps};
33
34
 
35
+ export type TextureSourceData =
36
+ TypedArray |
37
+ ImageData |
38
+ HTMLImageElement |
39
+ HTMLCanvasElement |
40
+ ImageBitmap |
41
+ HTMLVideoElement
42
+ ;
43
+
34
44
  type SetImageDataOptions = {
35
45
  target?: number;
36
46
  level?: number;
37
47
  dataFormat?: any;
38
- width: number;
39
- height: number;
48
+ width?: number;
49
+ height?: number;
40
50
  depth?: number;
41
- format: any;
51
+ format?: any;
42
52
  type?: any;
43
53
  offset?: number;
44
- data: any;
54
+ data: any; // TextureSourceData;
45
55
  compressed?: boolean;
46
56
  parameters?: Record<GL, any>;
47
57
  /** @deprecated */
48
58
  pixels?: any;
49
- };
59
+ }
50
60
 
51
61
  /**
52
62
  * @param {*} pixels, data -
@@ -92,10 +102,10 @@ type SetSubImageDataOptions = {
92
102
  type SetImageData3DOptions = {
93
103
  level?: number;
94
104
  dataFormat?: any;
95
- width: number;
96
- height: number;
105
+ width?: number;
106
+ height?: number;
97
107
  depth?: number;
98
- format: any;
108
+ format?: any;
99
109
  type?: any;
100
110
  offset?: number;
101
111
  data: any;
@@ -166,8 +176,7 @@ export default class WEBGLTexture extends Texture {
166
176
  this.gl = this.device.gl;
167
177
  this.gl2 = this.device.gl2;
168
178
  this.handle = this.props.handle || this.gl.createTexture();
169
- // @ts-expect-error Per SPECTOR docs
170
- this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
179
+ this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
171
180
 
172
181
  this.target = getWebGLTextureTarget(this.props);
173
182
 
@@ -184,17 +193,17 @@ export default class WEBGLTexture extends Texture {
184
193
  Object.seal(this);
185
194
  }
186
195
 
187
- destroy(): void {
196
+ override destroy(): void {
188
197
  if (this.handle) {
189
198
  this.gl.deleteTexture(this.handle);
190
199
  this.removeStats();
191
200
  this.trackDeallocatedMemory('Texture');
192
- // @ts-expect-error
193
- this.handle = null;
201
+ // this.handle = null;
202
+ this.destroyed = true;
194
203
  }
195
204
  }
196
205
 
197
- toString(): string {
206
+ override toString(): string {
198
207
  return `Texture(${this.id},${this.width}x${this.height})`;
199
208
  }
200
209
 
@@ -228,7 +237,7 @@ export default class WEBGLTexture extends Texture {
228
237
  return this;
229
238
  }
230
239
 
231
- let {parameters = {} as Record<GL, any>} = props;
240
+ const {parameters = {} as Record<GL, any>} = props;
232
241
 
233
242
  const {
234
243
  pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
@@ -357,7 +366,8 @@ export default class WEBGLTexture extends Texture {
357
366
  * If size has changed, reinitializes with current format
358
367
  * @note note clears image and mipmaps
359
368
  */
360
- resize({height, width, mipmaps = false}): this {
369
+ resize(options: {height: number, width: number, mipmaps?: boolean}): this {
370
+ const {height, width, mipmaps = false} = options;
361
371
  if (width !== this.width || height !== this.height) {
362
372
  return this.initialize({
363
373
  width,
@@ -372,7 +382,7 @@ export default class WEBGLTexture extends Texture {
372
382
  }
373
383
 
374
384
  /** Update external texture (video frame) */
375
- update(): this {
385
+ update(): void {
376
386
  if (this._video) {
377
387
  const {video, parameters, lastTime} = this._video;
378
388
  // @ts-expect-error
@@ -479,7 +489,7 @@ export default class WEBGLTexture extends Texture {
479
489
  withParameters(this.gl, parameters, () => {
480
490
  switch (dataType) {
481
491
  case 'null':
482
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
492
+ gl.texImage2D(target, level, format, width, height, 0 /* border*/, dataFormat, type, data);
483
493
  break;
484
494
  case 'typed-array':
485
495
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
@@ -508,7 +518,7 @@ export default class WEBGLTexture extends Texture {
508
518
  format,
509
519
  width,
510
520
  height,
511
- 0 /*border*/,
521
+ 0 /* border*/,
512
522
  dataFormat,
513
523
  type,
514
524
  offset
@@ -523,7 +533,7 @@ export default class WEBGLTexture extends Texture {
523
533
  format,
524
534
  width,
525
535
  height,
526
- 0 /*border*/,
536
+ 0 /* border*/,
527
537
  dataFormat,
528
538
  type,
529
539
  data
@@ -713,7 +723,7 @@ export default class WEBGLTexture extends Texture {
713
723
 
714
724
  // HELPER METHODS
715
725
 
716
- _deduceParameters(opts) {
726
+ _deduceParameters(opts: TextureProps) {
717
727
  const {format, data} = opts;
718
728
  let {width, height, dataFormat, type, compressed} = opts;
719
729
 
@@ -808,7 +818,7 @@ export default class WEBGLTexture extends Texture {
808
818
  resolvedFaces[index].forEach((image, lodLevel) => {
809
819
  // TODO: adjust width & height for LOD!
810
820
  if (width && height) {
811
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
821
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
812
822
  } else {
813
823
  gl.texImage2D(face, lodLevel, format, format, type, image);
814
824
  }
@@ -847,7 +857,7 @@ export default class WEBGLTexture extends Texture {
847
857
  )
848
858
  );
849
859
  } else if (this.width || this.height) {
850
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
860
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
851
861
  } else {
852
862
  gl.texImage2D(face, 0, format, format, type, imageData);
853
863
  }
@@ -856,18 +866,20 @@ export default class WEBGLTexture extends Texture {
856
866
  }
857
867
 
858
868
  /** Image 3D copies from Typed Array or WebGLBuffer */
859
- setImageData3D({
860
- level = 0,
861
- dataFormat,
862
- format,
863
- type, // = GL.UNSIGNED_BYTE,
864
- width,
865
- height,
866
- depth = 1,
867
- offset = 0,
868
- data,
869
- parameters = {} as Record<GL, any> as Record<GL, any>
870
- }: SetImageData3DOptions) {
869
+ setImageData3D(options: SetImageData3DOptions) {
870
+ const {
871
+ level = 0,
872
+ dataFormat,
873
+ format,
874
+ type, // = GL.UNSIGNED_BYTE,
875
+ width,
876
+ height,
877
+ depth = 1,
878
+ offset = 0,
879
+ data,
880
+ parameters = {}
881
+ } = options;
882
+
871
883
  this.trackDeallocatedMemory('Texture');
872
884
 
873
885
  this.gl.bindTexture(this.target, this.handle);
@@ -927,7 +939,7 @@ export default class WEBGLTexture extends Texture {
927
939
  * Sets sampler parameters on texture
928
940
  * @note: Applies NPOT workaround if appropriate
929
941
  */
930
- _setSamplerParameters(parameters: WebGLSamplerParameters) {
942
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
931
943
  // Work around WebGL1 sampling restrictions on NPOT textures
932
944
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
933
945
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -943,7 +955,7 @@ export default class WEBGLTexture extends Texture {
943
955
  this.gl.bindTexture(this.target, this.handle);
944
956
  for (const [pname, pvalue] of Object.entries(parameters)) {
945
957
  const param = Number(pname);
946
- let value = pvalue;
958
+ const value = pvalue;
947
959
 
948
960
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
949
961
  // For now, pick the float version for parameters specified as GLfloat.
@@ -959,7 +971,7 @@ export default class WEBGLTexture extends Texture {
959
971
  }
960
972
  }
961
973
  this.gl.bindTexture(this.target, null);
962
- return this;
974
+ return;
963
975
  }
964
976
 
965
977
  /** @deprecated For LegacyTexture subclass */
@@ -1018,6 +1030,4 @@ function isNPOT(width: number, height: number): boolean {
1018
1030
 
1019
1031
  function logParameters(parameters: Record<number, GL | number>) {
1020
1032
  log.log(1, 'texture sampler parameters', parameters)();
1021
- for (const [pname, pvalue] of Object.entries(parameters)) {
1022
- }
1023
1033
  }
@@ -1,7 +1,6 @@
1
1
  // luma.gl, MIT license
2
2
  import type {CanvasContextProps} from '@luma.gl/api';
3
3
  import {CanvasContext} from '@luma.gl/api';
4
- import {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
5
4
  import WebGLDevice from './webgl-device';
6
5
  import WEBGLFramebuffer from './resources/webgl-framebuffer';
7
6
 
@@ -12,13 +11,14 @@ import WEBGLFramebuffer from './resources/webgl-framebuffer';
12
11
  export default class WebGLCanvasContext extends CanvasContext {
13
12
  readonly device: WebGLDevice;
14
13
  presentationSize: [number, number];
15
- private _framebuffer: WEBGLFramebuffer;
14
+ private _framebuffer: WEBGLFramebuffer | null = null;
16
15
 
17
16
  constructor(device: WebGLDevice, props: CanvasContextProps) {
18
17
  // Note: Base class creates / looks up the canvas (unless under Node.js)
19
18
  super(props);
20
19
  this.device = device;
21
20
  this.presentationSize = [-1, -1];
21
+ this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
22
22
  this.update();
23
23
  }
24
24
 
@@ -49,17 +49,16 @@ export default class WebGLCanvasContext extends CanvasContext {
49
49
  * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
50
50
  * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
51
51
  */
52
- resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
52
+ resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
53
53
  // Resize browser context .
54
54
  if (this.canvas) {
55
- const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
56
- setDevicePixelRatio(this.device.gl, devicePixelRatio, options);
55
+ this.setDevicePixelRatio(devicePixelRatio, options);
57
56
  return;
58
57
  }
59
58
 
60
59
  // Resize headless gl context
61
60
  const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
62
- if (ext && options && `width` in options && `height` in options) {
61
+ if (ext && options && 'width' in options && 'height' in options) {
63
62
  ext.resize(options.width, options.height);
64
63
  }
65
64
  }