@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10

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 (553) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -1,267 +1,190 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Framebuffer, Texture, log, assert } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import WebGLTexture from './webgl-texture';
5
- import Renderbuffer from '../objects/webgl-renderbuffer';
6
- import { getWebGLTextureFormat, getWebGLDepthStencilAttachment } from '../converters/texture-formats';
7
- export default class WEBGLFramebuffer extends Framebuffer {
8
- get texture() {
9
- return this.colorAttachments[0];
10
- }
11
-
12
- constructor(device, props) {
13
- super(device, props);
14
-
15
- _defineProperty(this, "device", void 0);
16
-
17
- _defineProperty(this, "gl", void 0);
18
-
19
- _defineProperty(this, "handle", void 0);
20
-
21
- _defineProperty(this, "colorAttachments", []);
22
-
23
- _defineProperty(this, "depthStencilAttachment", null);
24
-
25
- _defineProperty(this, "d", void 0);
26
-
27
- _defineProperty(this, "_ownResources", []);
28
-
29
- this.device = device;
30
- this.gl = device.gl;
31
- this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
32
-
33
- if (this.handle) {
34
- this.handle.__SPECTOR_Metadata = {
35
- id: this.props.id,
36
- props: this.props
37
- };
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { Framebuffer, assert } from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
6
+ import { WEBGLTexture } from "./webgl-texture.js";
7
+ import { WEBGLTextureView } from "./webgl-texture-view.js";
8
+ import { getDepthStencilAttachmentWebGL } from "../converters/texture-formats.js";
9
+ /** luma.gl Framebuffer, WebGL implementation */
10
+ export class WEBGLFramebuffer extends Framebuffer {
11
+ device;
12
+ gl;
13
+ handle;
14
+ get texture() {
15
+ return this.colorAttachments[0];
16
+ }
17
+ constructor(device, props) {
18
+ super(device, props);
19
+ // WebGL default framebuffer handle is null
20
+ const isDefaultFramebuffer = props.handle === null;
21
+ this.device = device;
22
+ this.gl = device.gl;
23
+ this.handle =
24
+ this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();
25
+ if (!isDefaultFramebuffer) {
26
+ // default framebuffer handle is null, so we can't set spector metadata...
27
+ device.setSpectorMetadata(this.handle, { id: this.props.id, props: this.props });
28
+ // Auto create textures for attachments if needed
29
+ this.autoCreateAttachmentTextures();
30
+ /** Attach from a map of attachments */
31
+ this.gl.bindFramebuffer(36160, this.handle);
32
+ // Walk the attachments
33
+ for (let i = 0; i < this.colorAttachments.length; ++i) {
34
+ const attachment = this.colorAttachments[i];
35
+ const attachmentPoint = 36064 + i;
36
+ if (attachment) {
37
+ this._attachOne(attachmentPoint, attachment);
38
+ }
39
+ }
40
+ if (this.depthStencilAttachment) {
41
+ this._attachOne(getDepthStencilAttachmentWebGL(this.depthStencilAttachment.props.format), this.depthStencilAttachment);
42
+ }
43
+ /** Check the status */
44
+ // @ts-expect-error
45
+ if (props.check !== false) {
46
+ const status = this.gl.checkFramebufferStatus(36160);
47
+ if (status !== 36053) {
48
+ throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
49
+ }
50
+ }
51
+ this.gl.bindFramebuffer(36160, null);
52
+ }
53
+ }
54
+ /** destroys any auto created resources etc. */
55
+ destroy() {
56
+ super.destroy(); // destroys owned resources etc.
57
+ if (!this.destroyed && this.handle !== null) {
58
+ this.gl.deleteFramebuffer(this.handle);
59
+ // this.handle = null;
60
+ }
61
+ }
62
+ // PRIVATE
63
+ /** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */
64
+ createDepthStencilTexture(format) {
65
+ // return new WEBGLRenderbuffer(this.device, {
66
+ return new WEBGLTexture(this.device, {
67
+ id: `${this.id}-depth-stencil`,
68
+ format,
69
+ width: this.width,
70
+ height: this.height,
71
+ mipmaps: false
72
+ });
73
+ }
74
+ /**
75
+ * Attachment resize is expected to be a noop if size is same
76
+ */
77
+ resizeAttachments(width, height) {
78
+ // for default framebuffer, just update the stored size
79
+ if (this.handle === null) {
80
+ // assert(width === undefined && height === undefined);
81
+ this.width = this.gl.drawingBufferWidth;
82
+ this.height = this.gl.drawingBufferHeight;
83
+ return this;
84
+ }
85
+ if (width === undefined) {
86
+ width = this.gl.drawingBufferWidth;
87
+ }
88
+ if (height === undefined) {
89
+ height = this.gl.drawingBufferHeight;
90
+ }
91
+ // TODO Not clear that this is better than default destroy/create implementation
92
+ for (const colorAttachment of this.colorAttachments) {
93
+ colorAttachment.texture.resize({ width, height });
94
+ }
95
+ if (this.depthStencilAttachment) {
96
+ this.depthStencilAttachment.texture.resize({ width, height });
97
+ }
98
+ return this;
99
+ }
100
+ /** Attach one attachment */
101
+ _attachOne(attachmentPoint, attachment) {
102
+ // if (attachment instanceof WEBGLRenderbuffer) {
103
+ // this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
104
+ // return attachment;
105
+ // }
106
+ if (Array.isArray(attachment)) {
107
+ const [texture, layer = 0, level = 0] = attachment;
108
+ this._attachTexture(attachmentPoint, texture, layer, level);
109
+ return texture;
110
+ }
111
+ if (attachment instanceof WEBGLTexture) {
112
+ this._attachTexture(attachmentPoint, attachment, 0, 0);
113
+ return attachment;
114
+ }
115
+ if (attachment instanceof WEBGLTextureView) {
116
+ const textureView = attachment;
117
+ this._attachTexture(attachmentPoint, textureView.texture, textureView.props.baseMipLevel, textureView.props.baseArrayLayer);
118
+ return attachment.texture;
119
+ }
120
+ throw new Error('attach');
121
+ }
122
+ // TODO - we do not seem to need render buffers in WebGL 2
123
+ // protected _attachWEBGLRenderbuffer(attachment: GL, renderbuffer: WEBGLRenderbuffer): void {
124
+ // this.gl.framebufferRenderbuffer(
125
+ // GL.FRAMEBUFFER,
126
+ // attachment,
127
+ // GL.RENDERBUFFER,
128
+ // renderbuffer.handle
129
+ // );
130
+ // }
131
+ /**
132
+ * @param attachment
133
+ * @param texture
134
+ * @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
135
+ * @param level = 0 - mipmapLevel
136
+ */
137
+ _attachTexture(attachment, texture, layer, level) {
138
+ const { gl } = this.device;
139
+ gl.bindTexture(texture.target, texture.handle);
140
+ switch (texture.target) {
141
+ case 35866:
142
+ case 32879:
143
+ gl.framebufferTextureLayer(36160, attachment, texture.target, level, layer);
144
+ break;
145
+ case 34067:
146
+ // layer must be a cubemap face (or if index, converted to cube map face)
147
+ const face = mapIndexToCubeMapFace(layer);
148
+ gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);
149
+ break;
150
+ case 3553:
151
+ gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);
152
+ break;
153
+ default:
154
+ assert(false, 'Illegal texture type');
155
+ }
156
+ gl.bindTexture(texture.target, null);
38
157
  }
39
-
40
- this.colorAttachments = this._createColorAttachments();
41
- this.depthStencilAttachment = this._createDepthStencilAttachment();
42
- const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
43
-
44
- for (let i = 0; i < this.colorAttachments.length; ++i) {
45
- const attachment = this.colorAttachments[i];
46
- const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
47
-
48
- if (attachment) {
49
- this._attachOne(attachmentPoint, attachment);
50
- }
51
- }
52
-
53
- if (this.props.depthStencilAttachment) {
54
- this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
55
- }
56
-
57
- this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
58
-
59
- if (props.check !== false) {
60
- this._checkStatus();
61
- }
62
- }
63
-
64
- destroy() {
65
- if (this.handle !== null) {
66
- for (const resource of this._ownResources) {
67
- resource.destroy();
68
- }
69
-
70
- this.gl.deleteFramebuffer(this.handle);
71
- this.destroyed = true;
72
- }
73
- }
74
-
75
- _checkStatus() {
76
- const {
77
- gl
78
- } = this;
79
- const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
80
- const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
81
- gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
82
-
83
- if (status !== gl.FRAMEBUFFER_COMPLETE) {
84
- throw new Error("Framebuffer ".concat(_getFrameBufferStatus(status)));
85
- }
86
- }
87
-
88
- _createColorAttachments() {
89
- return this.props.colorAttachments.map(colorAttachment => {
90
- if (!colorAttachment) {
91
- return undefined;
92
- }
93
-
94
- if (colorAttachment instanceof WebGLTexture) {
95
- return colorAttachment;
96
- }
97
-
98
- return this._createColorAttachment(colorAttachment, this.width, this.height);
99
- });
100
- }
101
-
102
- _createColorAttachment(format, width, height) {
103
- const texture = this.device._createTexture({
104
- id: "".concat(this.id, "-color"),
105
- data: null,
106
- format,
107
- width,
108
- height,
109
- mipmaps: false,
110
- sampler: {
111
- minFilter: 'linear',
112
- magFilter: 'linear',
113
- addressModeU: 'clamp-to-edge',
114
- addressModeV: 'clamp-to-edge'
115
- }
116
- });
117
-
118
- this._ownResources.push(texture);
119
-
120
- return texture;
121
- }
122
-
123
- _createDepthStencilAttachment() {
124
- if (!this.props.depthStencilAttachment) {
125
- return undefined;
126
- }
127
-
128
- if (this.props.depthStencilAttachment instanceof Renderbuffer) {
129
- return this.props.depthStencilAttachment;
130
- }
131
-
132
- if (this.props.depthStencilAttachment instanceof Texture) {
133
- return this.props.depthStencilAttachment;
134
- }
135
-
136
- const format = this.props.depthStencilAttachment;
137
- const webglFormat = getWebGLTextureFormat(this.gl, format);
138
- const texture = new Renderbuffer(this.device, {
139
- id: "".concat(this.id, "-depth-stencil"),
140
- format: webglFormat,
141
- width: this.width,
142
- height: this.height
143
- });
144
-
145
- this._ownResources.push(texture);
146
-
147
- return texture;
148
- }
149
-
150
- _resizeAttachments(width, height) {
151
- var _this$depthStencilAtt;
152
-
153
- if (this.handle === null) {
154
- this.width = this.gl.drawingBufferWidth;
155
- this.height = this.gl.drawingBufferHeight;
156
- return this;
157
- }
158
-
159
- if (width === undefined) {
160
- width = this.gl.drawingBufferWidth;
161
- }
162
-
163
- if (height === undefined) {
164
- height = this.gl.drawingBufferHeight;
165
- }
166
-
167
- if (width !== this.width && height !== this.height) {
168
- log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
169
- }
170
-
171
- for (const colorAttachment of this.colorAttachments) {
172
- colorAttachment.resize({
173
- width,
174
- height
175
- });
176
- }
177
-
178
- (_this$depthStencilAtt = this.depthStencilAttachment) === null || _this$depthStencilAtt === void 0 ? void 0 : _this$depthStencilAtt.resize({
179
- width,
180
- height
181
- });
182
- return this;
183
- }
184
-
185
- _attachOne(attachmentPoint, attachment) {
186
- if (attachment instanceof Renderbuffer) {
187
- this._attachRenderbuffer(attachmentPoint, attachment);
188
-
189
- return attachment;
190
- } else if (Array.isArray(attachment)) {
191
- const [texture, layer = 0, level = 0] = attachment;
192
-
193
- this._attachTexture(attachmentPoint, texture, layer, level);
194
-
195
- return texture;
196
- } else if (attachment instanceof WebGLTexture) {
197
- this._attachTexture(attachmentPoint, attachment, 0, 0);
198
-
199
- return attachment;
200
- }
201
- }
202
-
203
- _attachRenderbuffer(attachment, renderbuffer) {
204
- this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
205
- }
206
-
207
- _attachTexture(attachment, texture, layer, level) {
208
- const {
209
- gl,
210
- gl2
211
- } = this.device;
212
- gl.bindTexture(texture.target, texture.handle);
213
-
214
- switch (texture.target) {
215
- case GL.TEXTURE_2D_ARRAY:
216
- case GL.TEXTURE_3D:
217
- this.device.assertWebGL2();
218
- gl2 === null || gl2 === void 0 ? void 0 : gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
219
- break;
220
-
221
- case GL.TEXTURE_CUBE_MAP:
222
- const face = mapIndexToCubeMapFace(layer);
223
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
224
- break;
225
-
226
- case GL.TEXTURE_2D:
227
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
228
- break;
229
-
230
- default:
231
- assert(false, 'Illegal texture type');
232
- }
233
-
234
- gl.bindTexture(texture.target, null);
235
- }
236
-
237
158
  }
238
-
159
+ // Helper functions
160
+ // Map an index to a cube map face constant
239
161
  function mapIndexToCubeMapFace(layer) {
240
- return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
162
+ // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
163
+ // if smaller assume layer is index, otherwise assume it is already a cube map face constant
164
+ return layer < 34069
165
+ ? layer + 34069
166
+ : layer;
241
167
  }
242
-
168
+ // Helper METHODS
169
+ // Get a string describing the framebuffer error if installed
243
170
  function _getFrameBufferStatus(status) {
244
- switch (status) {
245
- case GL.FRAMEBUFFER_COMPLETE:
246
- return 'success';
247
-
248
- case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
249
- return 'Mismatched attachments';
250
-
251
- case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
252
- return 'No attachments';
253
-
254
- case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
255
- return 'Height/width mismatch';
256
-
257
- case GL.FRAMEBUFFER_UNSUPPORTED:
258
- return 'Unsupported or split attachments';
259
-
260
- case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
261
- return 'Samples mismatch';
262
-
263
- default:
264
- return "".concat(status);
265
- }
171
+ switch (status) {
172
+ case 36053:
173
+ return 'success';
174
+ case 36054:
175
+ return 'Mismatched attachments';
176
+ case 36055:
177
+ return 'No attachments';
178
+ case 36057:
179
+ return 'Height/width mismatch';
180
+ case 36061:
181
+ return 'Unsupported or split attachments';
182
+ // WebGL2
183
+ case 36182:
184
+ return 'Samples mismatch';
185
+ // OVR_multiview2 extension
186
+ // case GL.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: return 'baseViewIndex mismatch';
187
+ default:
188
+ return `${status}`;
189
+ }
266
190
  }
267
- //# sourceMappingURL=webgl-framebuffer.js.map
@@ -0,0 +1,44 @@
1
+ import { QuerySet, QuerySetProps } from '@luma.gl/core';
2
+ import { WebGLDevice } from "../webgl-device.js";
3
+ /**
4
+ * Asynchronous queries for different kinds of information
5
+ */
6
+ export declare class WEBGLQuerySet extends QuerySet {
7
+ device: WebGLDevice;
8
+ handle: WebGLQuery;
9
+ target: number | null;
10
+ _queryPending: boolean;
11
+ _pollingPromise: Promise<any> | null;
12
+ get [Symbol.toStringTag](): string;
13
+ constructor(device: WebGLDevice, props: QuerySetProps);
14
+ destroy(): void;
15
+ /**
16
+ * Shortcut for timer query (dependent on extension in both WebGL1 and 2)
17
+ * Measures GPU time delta between this call and a matching `end` call in the
18
+ * GPU instruction stream.
19
+ */
20
+ beginTimestampQuery(): void;
21
+ endTimestampQuery(): void;
22
+ beginOcclusionQuery(options?: {
23
+ conservative?: boolean;
24
+ }): void;
25
+ endOcclusionQuery(): void;
26
+ beginTransformFeedbackQuery(): void;
27
+ endTransformFeedbackQuery(): void;
28
+ resolveQuery(): Promise<bigint[]>;
29
+ /**
30
+ * Due to OpenGL API limitations, after calling `begin()` on one Query
31
+ * instance, `end()` must be called on that same instance before
32
+ * calling `begin()` on another query. While there can be multiple
33
+ * outstanding queries representing disjoint `begin()`/`end()` intervals.
34
+ * It is not possible to interleave or overlap `begin` and `end` calls.
35
+ */
36
+ protected _begin(target: number): void;
37
+ protected _end(): void;
38
+ isResultAvailable(): boolean;
39
+ isTimerDisjoint(): boolean;
40
+ getResult(): any;
41
+ getTimerMilliseconds(): number;
42
+ pollQuery(limit?: number): Promise<any>;
43
+ }
44
+ //# sourceMappingURL=webgl-query-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-query-set.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-query-set.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IAEnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,aAAa,UAAS;IACtB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAE5C,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;gBAGW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa;IAY5C,OAAO;IAMhB;;;;OAIG;IACH,mBAAmB,IAAI,IAAI;IAI3B,iBAAiB,IAAI,IAAI;IAKzB,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAM7D,iBAAiB;IAKjB,2BAA2B,IAAI,IAAI;IAInC,yBAAyB,IAAI,IAAI;IAI3B,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOvC;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAatC,SAAS,CAAC,IAAI,IAAI,IAAI;IAetB,iBAAiB,IAAI,OAAO;IAgB5B,eAAe,IAAI,OAAO;IAK1B,SAAS,IAAI,GAAG;IAKhB,oBAAoB;IAKpB,SAAS,CAAC,KAAK,GAAE,MAAiC,GAAG,OAAO,CAAC,GAAG,CAAC;CAyBlE"}
@@ -0,0 +1,136 @@
1
+ // WebGL2 Query (also handles disjoint timer extensions)
2
+ import { QuerySet } from '@luma.gl/core';
3
+ import { GL } from '@luma.gl/constants';
4
+ /**
5
+ * Asynchronous queries for different kinds of information
6
+ */
7
+ export class WEBGLQuerySet extends QuerySet {
8
+ device;
9
+ handle;
10
+ target = null;
11
+ _queryPending = false;
12
+ _pollingPromise = null;
13
+ get [Symbol.toStringTag]() {
14
+ return 'Query';
15
+ }
16
+ // Create a query class
17
+ constructor(device, props) {
18
+ super(device, props);
19
+ this.device = device;
20
+ if (props.count > 1) {
21
+ throw new Error('WebGL QuerySet can only have one value');
22
+ }
23
+ this.handle = this.device.gl.createQuery();
24
+ Object.seal(this);
25
+ }
26
+ destroy() {
27
+ this.device.gl.deleteQuery(this.handle);
28
+ }
29
+ // FOR RENDER PASS AND COMMAND ENCODER
30
+ /**
31
+ * Shortcut for timer query (dependent on extension in both WebGL1 and 2)
32
+ * Measures GPU time delta between this call and a matching `end` call in the
33
+ * GPU instruction stream.
34
+ */
35
+ beginTimestampQuery() {
36
+ return this._begin(35007);
37
+ }
38
+ endTimestampQuery() {
39
+ this._end();
40
+ }
41
+ // Shortcut for occlusion queries
42
+ beginOcclusionQuery(options) {
43
+ return this._begin(options?.conservative ? 36202 : 35887);
44
+ }
45
+ endOcclusionQuery() {
46
+ this._end();
47
+ }
48
+ // Shortcut for transformFeedbackQuery
49
+ beginTransformFeedbackQuery() {
50
+ return this._begin(35976);
51
+ }
52
+ endTransformFeedbackQuery() {
53
+ this._end();
54
+ }
55
+ async resolveQuery() {
56
+ const value = await this.pollQuery();
57
+ return [value];
58
+ }
59
+ // PRIVATE METHODS
60
+ /**
61
+ * Due to OpenGL API limitations, after calling `begin()` on one Query
62
+ * instance, `end()` must be called on that same instance before
63
+ * calling `begin()` on another query. While there can be multiple
64
+ * outstanding queries representing disjoint `begin()`/`end()` intervals.
65
+ * It is not possible to interleave or overlap `begin` and `end` calls.
66
+ */
67
+ _begin(target) {
68
+ // Don't start a new query if one is already active.
69
+ if (this._queryPending) {
70
+ return;
71
+ }
72
+ this.target = target;
73
+ this.device.gl.beginQuery(this.target, this.handle);
74
+ return;
75
+ }
76
+ // ends the current query
77
+ _end() {
78
+ // Can't end a new query if the last one hasn't been resolved.
79
+ if (this._queryPending) {
80
+ return;
81
+ }
82
+ if (this.target) {
83
+ this.device.gl.endQuery(this.target);
84
+ this.target = null;
85
+ this._queryPending = true;
86
+ }
87
+ return;
88
+ }
89
+ // Returns true if the query result is available
90
+ isResultAvailable() {
91
+ if (!this._queryPending) {
92
+ return false;
93
+ }
94
+ const resultAvailable = this.device.gl.getQueryParameter(this.handle, 34919);
95
+ if (resultAvailable) {
96
+ this._queryPending = false;
97
+ }
98
+ return resultAvailable;
99
+ }
100
+ // Timing query is disjoint, i.e. results are invalid
101
+ isTimerDisjoint() {
102
+ return this.device.gl.getParameter(36795);
103
+ }
104
+ // Returns query result.
105
+ getResult() {
106
+ return this.device.gl.getQueryParameter(this.handle, 34918);
107
+ }
108
+ // Returns the query result, converted to milliseconds to match JavaScript conventions.
109
+ getTimerMilliseconds() {
110
+ return this.getResult() / 1e6;
111
+ }
112
+ // Polls the query
113
+ pollQuery(limit = Number.POSITIVE_INFINITY) {
114
+ if (this._pollingPromise) {
115
+ return this._pollingPromise;
116
+ }
117
+ let counter = 0;
118
+ this._pollingPromise = new Promise((resolve, reject) => {
119
+ const poll = () => {
120
+ if (this.isResultAvailable()) {
121
+ resolve(this.getResult());
122
+ this._pollingPromise = null;
123
+ }
124
+ else if (counter++ > limit) {
125
+ reject('Timed out');
126
+ this._pollingPromise = null;
127
+ }
128
+ else {
129
+ requestAnimationFrame(poll);
130
+ }
131
+ };
132
+ requestAnimationFrame(poll);
133
+ });
134
+ return this._pollingPromise;
135
+ }
136
+ }
@@ -1,11 +1,28 @@
1
- import { RenderPass, RenderPassProps } from '@luma.gl/api';
2
- import WebGLDevice from '../webgl-device';
3
- export default class WEBGLRenderPass extends RenderPass {
1
+ import { RenderPass, RenderPassProps, NumberArray, RenderPassParameters } from '@luma.gl/core';
2
+ import { WebGLDevice } from "../webgl-device.js";
3
+ import { GLParameters } from '@luma.gl/constants';
4
+ export declare class WEBGLRenderPass extends RenderPass {
4
5
  readonly device: WebGLDevice;
6
+ /** Parameters that should be applied before each draw call */
7
+ glParameters: GLParameters;
5
8
  constructor(device: WebGLDevice, props: RenderPassProps);
6
- endPass(): void;
9
+ end(): void;
7
10
  pushDebugGroup(groupLabel: string): void;
8
11
  popDebugGroup(): void;
9
12
  insertDebugMarker(markerLabel: string): void;
13
+ /**
14
+ * Maps RenderPass parameters to GL parameters
15
+ */
16
+ setParameters(parameters?: RenderPassParameters): void;
17
+ beginOcclusionQuery(queryIndex: number): void;
18
+ endOcclusionQuery(): void;
19
+ /**
20
+ * Optionally clears depth, color and stencil buffers based on parameters
21
+ */
22
+ protected clear(): void;
23
+ /**
24
+ * WebGL2 - clear a specific color buffer
25
+ */
26
+ protected clearColorBuffer(drawBuffer?: number, value?: NumberArray): void;
10
27
  }
11
28
  //# sourceMappingURL=webgl-render-pass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACzD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IACrD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAKvD,OAAO,IAAI,IAAI;IAEf,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAQ7C"}
1
+ {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAapD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAYvD,GAAG,IAAI,IAAI;IAQX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IA+C1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,IAAI;IAOlC;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IA+BvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,WAA0B;CAwCrF"}