@luma.gl/webgl 9.0.0-alpha.3 → 9.0.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +14 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +28 -46
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +48 -16
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +13 -20
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  36. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  38. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  39. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  40. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  42. package/dist/adapter/helpers/get-shader-info.js +25 -0
  43. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  44. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  45. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  46. package/dist/adapter/helpers/get-shader-layout.js +58 -113
  47. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  48. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  52. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  53. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  54. package/dist/adapter/helpers/set-uniform.js +3 -33
  55. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  56. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  58. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  59. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  60. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  61. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  62. package/dist/adapter/objects/constants-to-keys.js +1 -28
  63. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  64. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  66. package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
  67. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  68. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  69. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  70. package/dist/adapter/objects/webgl-resource.js +19 -75
  71. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  72. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +39 -11
  73. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  74. package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
  75. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  76. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  77. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-buffer.js +43 -71
  79. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  80. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  81. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-command-buffer.js +169 -41
  83. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  84. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  85. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  86. package/dist/adapter/resources/webgl-command-encoder.js +9 -18
  87. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  88. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  89. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  90. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-framebuffer.js +41 -149
  92. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  93. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  94. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-render-pass.js +88 -9
  96. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  97. package/dist/adapter/resources/webgl-render-pipeline.d.ts +52 -14
  98. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-render-pipeline.js +119 -182
  100. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  101. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  102. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-sampler.js +7 -15
  104. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  105. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  106. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  107. package/dist/adapter/resources/webgl-shader.js +9 -22
  108. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  109. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  110. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  111. package/dist/adapter/resources/webgl-texture.js +98 -213
  112. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  113. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  114. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  115. package/dist/adapter/webgl-canvas-context.js +8 -20
  116. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  117. package/dist/adapter/webgl-device.d.ts +64 -41
  118. package/dist/adapter/webgl-device.d.ts.map +1 -1
  119. package/dist/adapter/webgl-device.js +133 -113
  120. package/dist/adapter/webgl-device.js.map +1 -1
  121. package/dist/classic/accessor.d.ts +3 -3
  122. package/dist/classic/accessor.d.ts.map +1 -1
  123. package/dist/classic/accessor.js +14 -38
  124. package/dist/classic/accessor.js.map +1 -1
  125. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
  126. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  127. package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
  128. package/dist/classic/buffer-with-accessor.js.map +1 -0
  129. package/dist/classic/clear.d.ts +22 -0
  130. package/dist/classic/clear.d.ts.map +1 -0
  131. package/dist/classic/clear.js +88 -0
  132. package/dist/classic/clear.js.map +1 -0
  133. package/dist/classic/copy-and-blit.d.ts +62 -0
  134. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  135. package/dist/classic/copy-and-blit.js +202 -0
  136. package/dist/classic/copy-and-blit.js.map +1 -0
  137. package/dist/classic/format-utils.d.ts +3 -0
  138. package/dist/classic/format-utils.d.ts.map +1 -0
  139. package/dist/classic/format-utils.js +38 -0
  140. package/dist/classic/format-utils.js.map +1 -0
  141. package/dist/classic/typed-array-utils.d.ts +15 -17
  142. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  143. package/dist/classic/typed-array-utils.js +1 -21
  144. package/dist/classic/typed-array-utils.js.map +1 -1
  145. package/dist/context/context/create-browser-context.d.ts +40 -0
  146. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  147. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
  148. package/dist/context/context/create-browser-context.js.map +1 -0
  149. package/dist/context/context/create-headless-context.d.ts +9 -0
  150. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  151. package/dist/context/context/create-headless-context.js +42 -0
  152. package/dist/context/context/create-headless-context.js.map +1 -0
  153. package/dist/context/context/webgl-checks.js +1 -4
  154. package/dist/context/context/webgl-checks.js.map +1 -1
  155. package/dist/context/debug/spector.d.ts +1 -2
  156. package/dist/context/debug/spector.d.ts.map +1 -1
  157. package/dist/context/debug/spector.js +8 -20
  158. package/dist/context/debug/spector.js.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  160. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.js +11 -34
  162. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
  164. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.js +8 -18
  166. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  168. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  170. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  171. package/dist/context/polyfill/context-data.d.ts +13 -0
  172. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  173. package/dist/context/polyfill/context-data.js +12 -0
  174. package/dist/context/polyfill/context-data.js.map +1 -0
  175. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  176. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  177. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  178. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  179. package/dist/context/polyfill/polyfill-context.js +21 -29
  180. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  182. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  183. package/dist/context/polyfill/polyfill-table.js +10 -32
  184. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  187. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +16 -51
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +7 -9
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +10245 -0
  198. package/dist/index.cjs +6550 -0
  199. package/dist/index.d.ts +25 -22
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +37 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +88 -35
  209. package/src/adapter/converters/sampler-parameters.ts +19 -9
  210. package/src/adapter/converters/shader-formats.ts +41 -0
  211. package/src/adapter/converters/texture-formats.ts +264 -194
  212. package/src/adapter/converters/vertex-formats.ts +68 -10
  213. package/src/adapter/device-helpers/device-features.ts +10 -3
  214. package/src/adapter/device-helpers/device-limits.ts +3 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +14 -10
  216. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +36 -21
  217. package/src/adapter/helpers/get-shader-info.ts +40 -0
  218. package/src/adapter/helpers/get-shader-layout.ts +120 -146
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  220. package/src/adapter/helpers/set-uniform.ts +7 -6
  221. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +4 -5
  222. package/src/adapter/objects/constants-to-keys.ts +3 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
  224. package/src/adapter/objects/webgl-resource.ts +14 -23
  225. package/src/adapter/objects/webgl-vertex-array-object.ts +202 -37
  226. package/src/adapter/resources/webgl-buffer.ts +56 -58
  227. package/src/adapter/resources/webgl-command-buffer.ts +332 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +17 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +2 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +88 -133
  231. package/src/adapter/resources/webgl-render-pass.ts +155 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +232 -131
  233. package/src/adapter/resources/webgl-sampler.ts +13 -8
  234. package/src/adapter/resources/webgl-shader.ts +11 -10
  235. package/src/adapter/resources/webgl-texture.ts +113 -85
  236. package/src/adapter/webgl-canvas-context.ts +14 -14
  237. package/src/adapter/webgl-device.ts +192 -77
  238. package/src/classic/accessor.ts +4 -17
  239. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
  240. package/src/classic/clear.ts +110 -0
  241. package/src/classic/copy-and-blit.ts +308 -0
  242. package/src/classic/format-utils.ts +43 -0
  243. package/src/classic/typed-array-utils.ts +18 -27
  244. package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
  245. package/src/context/context/create-headless-context.ts +48 -0
  246. package/src/context/context/webgl-checks.ts +1 -1
  247. package/src/context/debug/spector.ts +7 -6
  248. package/src/context/debug/webgl-developer-tools.ts +21 -15
  249. package/src/context/parameters/unified-parameter-api.ts +20 -14
  250. package/src/context/parameters/webgl-parameter-tables.ts +117 -98
  251. package/src/context/polyfill/context-data.ts +27 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
  253. package/src/context/polyfill/polyfill-context.ts +7 -9
  254. package/src/context/polyfill/polyfill-table.ts +18 -16
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  256. package/src/context/state-tracker/track-context-state.ts +14 -13
  257. package/src/context/state-tracker/with-parameters.ts +8 -2
  258. package/src/index.ts +42 -33
  259. package/src/types.ts +2 -0
  260. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  262. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  263. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  264. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  265. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  267. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  268. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  269. package/dist/adapter/helpers/uniforms.js.map +0 -1
  270. package/dist/bundle.d.ts +0 -2
  271. package/dist/bundle.d.ts.map +0 -1
  272. package/dist/bundle.js +0 -5
  273. package/dist/bundle.js.map +0 -1
  274. package/dist/classic/buffer.d.ts.map +0 -1
  275. package/dist/classic/buffer.js.map +0 -1
  276. package/dist/context/context/context-state.d.ts +0 -18
  277. package/dist/context/context/context-state.d.ts.map +0 -1
  278. package/dist/context/context/context-state.js +0 -26
  279. package/dist/context/context/context-state.js.map +0 -1
  280. package/dist/context/context/create-context.d.ts +0 -41
  281. package/dist/context/context/create-context.d.ts.map +0 -1
  282. package/dist/context/context/create-context.js +0 -49
  283. package/dist/context/context/create-context.js.map +0 -1
  284. package/dist/context/context/device-pixels.d.ts +0 -25
  285. package/dist/context/context/device-pixels.d.ts.map +0 -1
  286. package/dist/context/context/device-pixels.js +0 -98
  287. package/dist/context/context/device-pixels.js.map +0 -1
  288. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  289. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  290. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  291. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  292. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  293. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  294. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  295. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  296. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  297. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  298. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  299. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  300. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  301. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  302. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  303. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  304. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  305. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  306. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  307. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  308. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  309. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  310. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  311. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  312. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  313. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  314. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  315. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  316. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  317. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  318. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  319. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  320. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  321. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  322. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  323. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  324. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  325. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  326. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  327. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  328. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  329. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  330. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  331. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  332. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  333. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  335. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  337. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  339. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  341. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  343. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  344. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  345. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  346. package/dist/es5/adapter/webgl-device.js +0 -399
  347. package/dist/es5/adapter/webgl-device.js.map +0 -1
  348. package/dist/es5/bundle.js +0 -7
  349. package/dist/es5/bundle.js.map +0 -1
  350. package/dist/es5/classic/accessor.js +0 -181
  351. package/dist/es5/classic/accessor.js.map +0 -1
  352. package/dist/es5/classic/buffer.js +0 -470
  353. package/dist/es5/classic/buffer.js.map +0 -1
  354. package/dist/es5/classic/typed-array-utils.js +0 -126
  355. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  356. package/dist/es5/context/context/context-state.js +0 -31
  357. package/dist/es5/context/context/context-state.js.map +0 -1
  358. package/dist/es5/context/context/create-context.js +0 -69
  359. package/dist/es5/context/context/create-context.js.map +0 -1
  360. package/dist/es5/context/context/device-pixels.js +0 -115
  361. package/dist/es5/context/context/device-pixels.js.map +0 -1
  362. package/dist/es5/context/context/webgl-checks.js +0 -54
  363. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  364. package/dist/es5/context/debug/spector.js +0 -133
  365. package/dist/es5/context/debug/spector.js.map +0 -1
  366. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  367. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  368. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  369. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  370. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  371. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  372. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  373. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  374. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  375. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  376. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  377. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  378. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  379. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  380. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  381. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  382. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  383. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  384. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  385. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  386. package/dist/es5/index.js +0 -276
  387. package/dist/es5/index.js.map +0 -1
  388. package/dist/es5/init.js +0 -10
  389. package/dist/es5/init.js.map +0 -1
  390. package/dist/es5/types/webgl.js +0 -6
  391. package/dist/es5/types/webgl.js.map +0 -1
  392. package/dist/es5/types.js +0 -2
  393. package/dist/es5/types.js.map +0 -1
  394. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  395. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  396. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  397. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  398. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  399. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  400. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  401. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  402. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  403. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  404. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  405. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  406. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  407. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  408. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  409. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  410. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  411. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  412. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  413. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  414. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  415. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  416. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  417. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  418. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  419. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  420. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  421. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  422. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  423. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  424. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  425. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  426. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  427. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  428. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  429. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  430. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  431. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  432. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  433. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  434. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  435. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  436. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  437. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  438. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  439. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  441. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  443. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  445. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  447. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  449. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  450. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  451. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  452. package/dist/esm/adapter/webgl-device.js +0 -280
  453. package/dist/esm/adapter/webgl-device.js.map +0 -1
  454. package/dist/esm/bundle.js +0 -5
  455. package/dist/esm/bundle.js.map +0 -1
  456. package/dist/esm/classic/accessor.js +0 -144
  457. package/dist/esm/classic/accessor.js.map +0 -1
  458. package/dist/esm/classic/buffer.js +0 -384
  459. package/dist/esm/classic/buffer.js.map +0 -1
  460. package/dist/esm/classic/typed-array-utils.js +0 -112
  461. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  462. package/dist/esm/context/context/context-state.js +0 -26
  463. package/dist/esm/context/context/context-state.js.map +0 -1
  464. package/dist/esm/context/context/create-context.js.map +0 -1
  465. package/dist/esm/context/context/device-pixels.js +0 -98
  466. package/dist/esm/context/context/device-pixels.js.map +0 -1
  467. package/dist/esm/context/context/webgl-checks.js +0 -34
  468. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  469. package/dist/esm/context/debug/spector.js +0 -76
  470. package/dist/esm/context/debug/spector.js.map +0 -1
  471. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  472. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  473. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  474. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  475. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  476. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  477. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  478. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  479. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  480. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  481. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  482. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  483. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  484. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  485. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  486. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  487. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  488. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  489. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  490. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  491. package/dist/esm/index.js +0 -27
  492. package/dist/esm/index.js.map +0 -1
  493. package/dist/esm/init.js +0 -4
  494. package/dist/esm/init.js.map +0 -1
  495. package/dist/esm/types/webgl.js +0 -2
  496. package/dist/esm/types/webgl.js.map +0 -1
  497. package/dist/esm/types.js +0 -2
  498. package/dist/esm/types.js.map +0 -1
  499. package/dist/init.d.ts +0 -2
  500. package/dist/init.d.ts.map +0 -1
  501. package/dist/init.js +0 -4
  502. package/dist/init.js.map +0 -1
  503. package/dist/types/webgl.d.ts +0 -144
  504. package/dist/types/webgl.d.ts.map +0 -1
  505. package/dist/types/webgl.js +0 -2
  506. package/dist/types/webgl.js.map +0 -1
  507. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  508. package/src/bundle.ts +0 -4
  509. package/src/context/context/context-state.ts +0 -41
  510. package/src/context/context/device-pixels.ts +0 -152
  511. package/src/init.ts +0 -4
  512. package/src/types/webgl.ts +0 -283
@@ -1,164 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Buffer, assert } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- const DEBUG_DATA_LENGTH = 10;
5
- export default class WEBGLBuffer extends Buffer {
6
- constructor(device, props = {}) {
7
- super(device, props);
8
-
9
- _defineProperty(this, "device", void 0);
10
-
11
- _defineProperty(this, "gl", void 0);
12
-
13
- _defineProperty(this, "gl2", void 0);
14
-
15
- _defineProperty(this, "handle", void 0);
16
-
17
- _defineProperty(this, "target", void 0);
18
-
19
- _defineProperty(this, "byteLength", void 0);
20
-
21
- _defineProperty(this, "bytesUsed", void 0);
22
-
23
- _defineProperty(this, "debugData", void 0);
24
-
25
- _defineProperty(this, "webglUsage", void 0);
26
-
27
- _defineProperty(this, "accessor", void 0);
28
-
29
- this.device = device;
30
- this.gl = this.device.gl;
31
- this.gl2 = this.device.gl2;
32
- const handle = typeof props === 'object' ? props.handle : undefined;
33
- this.handle = handle || this.gl.createBuffer();
34
- this.handle.__SPECTOR_Metadata = { ...this.props,
35
- data: typeof this.props.data
36
- };
37
- this.target = this.props.target || getWebGLTarget(this.props.usage);
38
- this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
39
- this.debugData = null;
40
-
41
- if (props.data) {
42
- this._initWithData(props.data, props.byteOffset, props.byteLength);
43
- } else {
44
- this._initWithByteLength(props.byteLength || 0);
45
- }
46
- }
47
-
48
- _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
49
- assert(ArrayBuffer.isView(data));
50
-
51
- const target = this._getWriteTarget();
52
-
53
- this.gl.bindBuffer(target, this.handle);
54
- this.gl.bufferData(target, byteLength, this.webglUsage);
55
- this.gl.bufferSubData(target, byteOffset, data);
56
- this.gl.bindBuffer(target, null);
57
- this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
58
- this.bytesUsed = byteLength;
59
- this.byteLength = byteLength;
60
- this.trackAllocatedMemory(byteLength);
61
- return this;
62
- }
63
-
64
- _initWithByteLength(byteLength) {
65
- assert(byteLength >= 0);
66
- let data = byteLength;
67
-
68
- if (byteLength === 0) {
69
- data = new Float32Array(0);
70
- }
71
-
72
- const target = this._getWriteTarget();
73
-
74
- this.gl.bindBuffer(target, this.handle);
75
- this.gl.bufferData(target, data, this.webglUsage);
76
- this.gl.bindBuffer(target, null);
77
- this.debugData = null;
78
- this.bytesUsed = byteLength;
79
- this.byteLength = byteLength;
80
- return this;
81
- }
82
-
83
- destroy() {
84
- if (this.handle) {
85
- this.removeStats();
86
- this.trackDeallocatedMemory();
87
- this.gl.deleteBuffer(this.handle);
88
- this.handle = null;
89
- }
90
- }
91
-
92
- write(data, byteOffset = 0) {
93
- const srcOffset = 0;
94
- const byteLength = data.byteLength;
95
- const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
96
- this.gl.bindBuffer(target, this.handle);
97
-
98
- if (srcOffset !== 0 || byteLength !== undefined) {
99
- this.device.assertWebGL2();
100
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
101
- } else {
102
- this.gl.bufferSubData(target, byteOffset, data);
103
- }
104
-
105
- this.gl.bindBuffer(target, null);
106
- }
107
-
108
- async readAsync(byteOffset = 0, byteLength) {
109
- this.device.assertWebGL2();
110
- const data = new Uint8Array(byteLength);
111
- const dstOffset = 0;
112
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
113
- this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
114
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
115
- return data;
116
- }
117
-
118
- _invalidateDebugData() {
119
- this.debugData = null;
120
- }
121
-
122
- _getWriteTarget() {
123
- return this.target;
124
- }
125
-
126
- _getReadTarget() {
127
- return this.target;
128
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
129
- }
130
-
131
- }
132
-
133
- function getWebGLTarget(usage) {
134
- if (usage & Buffer.INDEX) {
135
- return GL.ELEMENT_ARRAY_BUFFER;
136
- }
137
-
138
- if (usage & Buffer.VERTEX) {
139
- return GL.ARRAY_BUFFER;
140
- }
141
-
142
- if (usage & Buffer.UNIFORM) {
143
- return GL.UNIFORM_BUFFER;
144
- }
145
-
146
- return GL.ARRAY_BUFFER;
147
- }
148
-
149
- function getWebGLUsage(usage) {
150
- if (usage & Buffer.INDEX) {
151
- return GL.STATIC_DRAW;
152
- }
153
-
154
- if (usage & Buffer.VERTEX) {
155
- return GL.STATIC_DRAW;
156
- }
157
-
158
- if (usage & Buffer.UNIFORM) {
159
- return GL.DYNAMIC_DRAW;
160
- }
161
-
162
- return GL.DYNAMIC_DRAW;
163
- }
164
- //# sourceMappingURL=webgl-buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-buffer.ts"],"names":["Buffer","assert","GL","DEBUG_DATA_LENGTH","WEBGLBuffer","constructor","device","props","gl","gl2","handle","undefined","createBuffer","__SPECTOR_Metadata","data","target","getWebGLTarget","usage","webglUsage","getWebGLUsage","debugData","_initWithData","byteOffset","byteLength","_initWithByteLength","ArrayBuffer","isView","_getWriteTarget","bindBuffer","bufferData","bufferSubData","slice","bytesUsed","trackAllocatedMemory","Float32Array","destroy","removeStats","trackDeallocatedMemory","deleteBuffer","write","srcOffset","isWebGL2","COPY_WRITE_BUFFER","assertWebGL2","offset","readAsync","Uint8Array","dstOffset","COPY_READ_BUFFER","getBufferSubData","_invalidateDebugData","_getReadTarget","INDEX","ELEMENT_ARRAY_BUFFER","VERTEX","ARRAY_BUFFER","UNIFORM","UNIFORM_BUFFER","STATIC_DRAW","DYNAMIC_DRAW"],"mappings":"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","sourcesContent":["import type {BufferProps} from '@luma.gl/api';\nimport {Buffer, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../webgl-device';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n/** WebGL Buffer interface */\nexport default class WEBGLBuffer extends Buffer {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLBuffer;\n readonly target: number;\n\n byteLength: number;\n bytesUsed: number;\n debugData: ArrayBuffer;\n\n webglUsage: number;\n\n accessor: {};\n\n constructor(device: WebGLDevice, props: BufferProps = {}) {\n super(device, props);\n\n this.device = device;\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n\n const handle = typeof props === 'object' ? (props as BufferProps).handle : undefined;\n this.handle = handle || this.gl.createBuffer();\n // @ts-expect-error Add metadata for spector\n this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n // @ts-expect-error Hack - Checking for subclass prop\n this.target = this.props.target || getWebGLTarget(this.props.usage);\n // @ts-expect-error Hack - Checking for subclass prop\n this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);\n this.debugData = null;\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._initWithData(props.data, props.byteOffset, props.byteLength);\n } else {\n this._initWithByteLength(props.byteLength || 0);\n }\n\n // Deprecated: Merge main props and accessor\n // this.accessor = {...props.accessor};\n\n // Object.seal(this);\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _initWithData(data, byteOffset: number = 0, byteLength: number = data.byteLength + byteOffset): this {\n assert(ArrayBuffer.isView(data));\n\n const target = this._getWriteTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.webglUsage);\n this.gl.bufferSubData(target, byteOffset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _initWithByteLength(byteLength: number): this {\n assert(byteLength >= 0);\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const target = this._getWriteTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, this.webglUsage);\n this.gl.bindBuffer(target, null);\n\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n return this;\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n }\n\n write(data: ArrayBufferView, byteOffset: number = 0): void {\n const srcOffset = 0;\n const byteLength = data.byteLength;\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n this.device.assertWebGL2();\n\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, byteOffset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n // this.debugData = data.slice(byteOffset, 40);\n }\n\n /** Read data from the buffer */\n async readAsync(\n byteOffset: number = 0,\n byteLength?: number\n ): Promise<ArrayBuffer> {\n this.device.assertWebGL2();\n\n const data = new Uint8Array(byteLength);\n const dstOffset = 0;\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n // this.debugData = null;\n\n return data;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n _invalidateDebugData() {\n this.debugData = null;\n }\n\n _getWriteTarget() {\n return this.target;\n // return this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getReadTarget() {\n return this.target;\n return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;\n }\n}\n\n// static MAP_READ = 0x01;\n// static MAP_WRITE = 0x02;\n// static COPY_SRC = 0x0004;\n// static COPY_DST = 0x0008;\n// static INDEX = 0x0010;\n// static VERTEX = 0x0020;\n// static UNIFORM = 0x0040;\n// static STORAGE = 0x0080;\n// static INDIRECT = 0x0100;\n// static QUERY_RESOLVE = 0x0200;\n\nfunction getWebGLTarget(usage: number): GL {\n if (usage & Buffer.INDEX) {\n return GL.ELEMENT_ARRAY_BUFFER;\n }\n if (usage & Buffer.VERTEX) {\n return GL.ARRAY_BUFFER;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.UNIFORM_BUFFER;\n }\n\n // gl.COPY_READ_BUFFER: Buffer for copying from one buffer object to another.\n // gl.COPY_WRITE_BUFFER: Buffer for copying from one buffer object to another.\n // gl.TRANSFORM_FEEDBACK_BUFFER: Buffer for transform feedback operations.\n // gl.PIXEL_PACK_BUFFER: Buffer used for pixel transfer operations.\n // gl.PIXEL_UNPACK_BUFFER: Buffer used for pixel transfer operations.\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n return GL.ARRAY_BUFFER;\n}\n\nfunction getWebGLUsage(usage: number): GL {\n if (usage & Buffer.INDEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.VERTEX) {\n return GL.STATIC_DRAW;\n }\n if (usage & Buffer.UNIFORM) {\n return GL.DYNAMIC_DRAW;\n }\n return GL.DYNAMIC_DRAW;\n}\n"],"file":"webgl-buffer.js"}
@@ -1,65 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import GL from '@luma.gl/constants';
3
-
4
- function cast(value) {
5
- return value;
6
- }
7
-
8
- export default class CommandBuffer {
9
- constructor() {
10
- _defineProperty(this, "commands", []);
11
- }
12
-
13
- }
14
- export function submitCommands(device, commands = []) {
15
- for (const command of commands) {
16
- switch (command.name) {
17
- case 'copy-buffer-to-buffer':
18
- _copyBufferToBuffer(device, command.options);
19
-
20
- break;
21
-
22
- case 'copy-buffer-to-texture':
23
- _copyBufferToTexture(device, command.options);
24
-
25
- break;
26
-
27
- case 'copy-texture-to-buffer':
28
- _copyTextureToBuffer(device, command.options);
29
-
30
- break;
31
-
32
- case 'copy-texture-to-texture':
33
- _copyTextureToTexture(device, command.options);
34
-
35
- break;
36
- }
37
- }
38
- }
39
-
40
- function _copyBufferToBuffer(device, options) {
41
- const source = cast(options.source);
42
- const destination = cast(options.destination);
43
- const {
44
- gl2
45
- } = device;
46
-
47
- if (gl2) {
48
- var _options$sourceOffset, _options$destinationO;
49
-
50
- gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);
51
- gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);
52
- gl2.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, (_options$sourceOffset = options.sourceOffset) !== null && _options$sourceOffset !== void 0 ? _options$sourceOffset : 0, (_options$destinationO = options.destinationOffset) !== null && _options$destinationO !== void 0 ? _options$destinationO : 0, options.size);
53
- gl2.bindBuffer(GL.COPY_READ_BUFFER, null);
54
- gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);
55
- } else {
56
- throw new Error('copyBufferToBuffer not implemented in WebGL1');
57
- }
58
- }
59
-
60
- function _copyBufferToTexture(device, options) {}
61
-
62
- function _copyTextureToBuffer(device, options) {}
63
-
64
- function _copyTextureToTexture(device, options) {}
65
- //# sourceMappingURL=webgl-command-buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-command-buffer.ts"],"names":["GL","cast","value","CommandBuffer","submitCommands","device","commands","command","name","_copyBufferToBuffer","options","_copyBufferToTexture","_copyTextureToBuffer","_copyTextureToTexture","source","destination","gl2","bindBuffer","COPY_READ_BUFFER","handle","COPY_WRITE_BUFFER","copyBufferSubData","sourceOffset","destinationOffset","size","Error"],"mappings":";AAMA,OAAOA,EAAP,MAAe,oBAAf;;AAIA,SAASC,IAAT,CAAiBC,KAAjB,EAAoC;AAClC,SAAOA,KAAP;AACD;;AA4BD,eAAe,MAAMC,aAAN,CAAoB;AAAA;AAAA,sCACX,EADW;AAAA;;AAAA;AAInC,OAAO,SAASC,cAAT,CAAwBC,MAAxB,EAA6CC,QAAmB,GAAG,EAAnE,EAAuE;AAC5E,OAAK,MAAMC,OAAX,IAAsBD,QAAtB,EAAgC;AAC9B,YAAQC,OAAO,CAACC,IAAhB;AACE,WAAK,uBAAL;AACEC,QAAAA,mBAAmB,CAACJ,MAAD,EAASE,OAAO,CAACG,OAAjB,CAAnB;;AACA;;AACF,WAAK,wBAAL;AACEC,QAAAA,oBAAoB,CAACN,MAAD,EAASE,OAAO,CAACG,OAAjB,CAApB;;AACA;;AACF,WAAK,wBAAL;AACEE,QAAAA,oBAAoB,CAACP,MAAD,EAASE,OAAO,CAACG,OAAjB,CAApB;;AACA;;AACF,WAAK,yBAAL;AACEG,QAAAA,qBAAqB,CAACR,MAAD,EAASE,OAAO,CAACG,OAAjB,CAArB;;AACA;AAZJ;AAcD;AACF;;AAED,SAASD,mBAAT,CAA6BJ,MAA7B,EAAkDK,OAAlD,EAA4F;AAC1F,QAAMI,MAAM,GAAGb,IAAI,CAAcS,OAAO,CAACI,MAAtB,CAAnB;AACA,QAAMC,WAAW,GAAGd,IAAI,CAAcS,OAAO,CAACK,WAAtB,CAAxB;AAEA,QAAM;AAACC,IAAAA;AAAD,MAAQX,MAAd;;AACA,MAAIW,GAAJ,EAAS;AAAA;;AAGPA,IAAAA,GAAG,CAACC,UAAJ,CAAejB,EAAE,CAACkB,gBAAlB,EAAoCJ,MAAM,CAACK,MAA3C;AACAH,IAAAA,GAAG,CAACC,UAAJ,CAAejB,EAAE,CAACoB,iBAAlB,EAAqCL,WAAW,CAACI,MAAjD;AACAH,IAAAA,GAAG,CAACK,iBAAJ,CACErB,EAAE,CAACkB,gBADL,EAEElB,EAAE,CAACoB,iBAFL,2BAGEV,OAAO,CAACY,YAHV,yEAG0B,CAH1B,2BAIEZ,OAAO,CAACa,iBAJV,yEAI+B,CAJ/B,EAKEb,OAAO,CAACc,IALV;AAOAR,IAAAA,GAAG,CAACC,UAAJ,CAAejB,EAAE,CAACkB,gBAAlB,EAAoC,IAApC;AACAF,IAAAA,GAAG,CAACC,UAAJ,CAAejB,EAAE,CAACoB,iBAAlB,EAAqC,IAArC;AACD,GAdD,MAcO;AAGL,UAAM,IAAIK,KAAJ,CAAU,8CAAV,CAAN;AACD;AACF;;AAED,SAASd,oBAAT,CAA8BN,MAA9B,EAAmDK,OAAnD,EAA8F,CAAE;;AAEhG,SAASE,oBAAT,CAA8BP,MAA9B,EAAmDK,OAAnD,EAA8F,CAAE;;AAEhG,SAASG,qBAAT,CAA+BR,MAA/B,EAAoDK,OAApD,EAAgG,CAAE","sourcesContent":["import type {\n CopyBufferToBufferOptions,\n CopyBufferToTextureOptions,\n CopyTextureToBufferOptions,\n CopyTextureToTextureOptions\n} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\n\nfunction cast<T>(value: unknown): T {\n return value as T;\n}\n\ntype CopyBufferToBufferCommand = {\n name: 'copy-buffer-to-buffer';\n options: CopyBufferToBufferOptions;\n};\n\ntype CopyBufferToTextureCommand = {\n name: 'copy-buffer-to-texture';\n options: CopyBufferToTextureOptions;\n};\n\ntype CopyTextureToBufferCommand = {\n name: 'copy-texture-to-buffer';\n options: CopyTextureToBufferOptions;\n};\n\ntype CopyTextureToTextureCommand = {\n name: 'copy-texture-to-texture';\n options: CopyTextureToTextureOptions;\n};\n\ntype Command =\n | CopyBufferToBufferCommand\n | CopyBufferToTextureCommand\n | CopyTextureToBufferCommand\n | CopyTextureToTextureCommand;\n\nexport default class CommandBuffer {\n commands: Command[] = [];\n}\n\nexport function submitCommands(device: WebGLDevice, commands: Command[] = []) {\n for (const command of commands) {\n switch (command.name) {\n case 'copy-buffer-to-buffer':\n _copyBufferToBuffer(device, command.options);\n break;\n case 'copy-buffer-to-texture':\n _copyBufferToTexture(device, command.options);\n break;\n case 'copy-texture-to-buffer':\n _copyTextureToBuffer(device, command.options);\n break;\n case 'copy-texture-to-texture':\n _copyTextureToTexture(device, command.options);\n break;\n }\n }\n}\n\nfunction _copyBufferToBuffer(device: WebGLDevice, options: CopyBufferToBufferOptions): void {\n const source = cast<WEBGLBuffer>(options.source);\n const destination = cast<WEBGLBuffer>(options.destination);\n\n const {gl2} = device;\n if (gl2) {\n // In WebGL2 we can perform the copy on the GPU\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl2.bindBuffer(GL.COPY_READ_BUFFER, source.handle);\n gl2.bindBuffer(GL.COPY_WRITE_BUFFER, destination.handle);\n gl2.copyBufferSubData(\n GL.COPY_READ_BUFFER,\n GL.COPY_WRITE_BUFFER,\n options.sourceOffset ?? 0,\n options.destinationOffset ?? 0,\n options.size\n );\n gl2.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl2.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n } else {\n // TODO - in WebGL1 we would have to read back to CPU\n // read / write buffer from / to CPU\n throw new Error('copyBufferToBuffer not implemented in WebGL1');\n }\n}\n\nfunction _copyBufferToTexture(device: WebGLDevice, options: CopyBufferToTextureOptions): void {}\n\nfunction _copyTextureToBuffer(device: WebGLDevice, options: CopyTextureToBufferOptions): void {}\n\nfunction _copyTextureToTexture(device: WebGLDevice, options: CopyTextureToTextureOptions): void {}\n"],"file":"webgl-command-buffer.js"}
@@ -1,53 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { CommandEncoder } from '@luma.gl/api';
3
- import CommandBuffer from './webgl-command-buffer';
4
- export default class WEBGLCommandEncoder extends CommandEncoder {
5
- constructor(device, props) {
6
- super(props);
7
-
8
- _defineProperty(this, "device", void 0);
9
-
10
- _defineProperty(this, "commandBuffer", new CommandBuffer());
11
-
12
- this.device = device;
13
- }
14
-
15
- destroy() {}
16
-
17
- copyBufferToBuffer(options) {
18
- this.commandBuffer.commands.push({
19
- name: 'copy-buffer-to-buffer',
20
- options
21
- });
22
- }
23
-
24
- copyBufferToTexture(options) {
25
- this.commandBuffer.commands.push({
26
- name: 'copy-buffer-to-texture',
27
- options
28
- });
29
- }
30
-
31
- copyTextureToBuffer(options) {
32
- this.commandBuffer.commands.push({
33
- name: 'copy-texture-to-buffer',
34
- options
35
- });
36
- }
37
-
38
- copyTextureToTexture(options) {
39
- this.commandBuffer.commands.push({
40
- name: 'copy-texture-to-texture',
41
- options
42
- });
43
- }
44
-
45
- pushDebugGroup(groupLabel) {}
46
-
47
- popDebugGroup() {}
48
-
49
- insertDebugMarker(markerLabel) {}
50
-
51
- }
52
- ;
53
- //# sourceMappingURL=webgl-command-encoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-command-encoder.ts"],"names":["CommandEncoder","CommandBuffer","WEBGLCommandEncoder","constructor","device","props","destroy","copyBufferToBuffer","options","commandBuffer","commands","push","name","copyBufferToTexture","copyTextureToBuffer","copyTextureToTexture","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"mappings":";AAAA,SAAQA,cAAR,QAAkD,cAAlD;AAQA,OAAOC,aAAP,MAA0B,wBAA1B;AAGA,eAAe,MAAMC,mBAAN,SAAkCF,cAAlC,CAAiD;AAK9DG,EAAAA,WAAW,CAACC,MAAD,EAAsBC,KAAtB,EAAkD;AAC3D,UAAMA,KAAN;;AAD2D;;AAAA,2CAFpC,IAAIJ,aAAJ,EAEoC;;AAE3D,SAAKG,MAAL,GAAcA,MAAd;AACD;;AAEDE,EAAAA,OAAO,GAAG,CAAE;;AAMZC,EAAAA,kBAAkB,CAACC,OAAD,EAA2C;AAC3D,SAAKC,aAAL,CAAmBC,QAAnB,CAA4BC,IAA5B,CAAiC;AAACC,MAAAA,IAAI,EAAE,uBAAP;AAAgCJ,MAAAA;AAAhC,KAAjC;AACD;;AAEDK,EAAAA,mBAAmB,CAACL,OAAD,EAAsC;AACvD,SAAKC,aAAL,CAAmBC,QAAnB,CAA4BC,IAA5B,CAAiC;AAACC,MAAAA,IAAI,EAAE,wBAAP;AAAiCJ,MAAAA;AAAjC,KAAjC;AACD;;AAEDM,EAAAA,mBAAmB,CAACN,OAAD,EAA4C;AAC7D,SAAKC,aAAL,CAAmBC,QAAnB,CAA4BC,IAA5B,CAAiC;AAACC,MAAAA,IAAI,EAAE,wBAAP;AAAiCJ,MAAAA;AAAjC,KAAjC;AACD;;AAEDO,EAAAA,oBAAoB,CAACP,OAAD,EAA6C;AAC/D,SAAKC,aAAL,CAAmBC,QAAnB,CAA4BC,IAA5B,CAAiC;AAACC,MAAAA,IAAI,EAAE,yBAAP;AAAkCJ,MAAAA;AAAlC,KAAjC;AACD;;AAEDQ,EAAAA,cAAc,CAACC,UAAD,EAA2B,CAAE;;AAC3CC,EAAAA,aAAa,GAAG,CAAE;;AAElBC,EAAAA,iBAAiB,CAACC,WAAD,EAA4B,CAAE;;AAnCe;AA8C/D","sourcesContent":["import {CommandEncoder, CommandEncoderProps} from '@luma.gl/api';\nimport type {\n CopyBufferToBufferOptions,\n CopyBufferToTextureOptions,\n CopyTextureToBufferOptions,\n CopyTextureToTextureOptions\n} from '@luma.gl/api';\n\nimport CommandBuffer from './webgl-command-buffer';\nimport WebGLDevice from '../webgl-device';\n\nexport default class WEBGLCommandEncoder extends CommandEncoder {\n readonly device: WebGLDevice;\n\n readonly commandBuffer = new CommandBuffer();\n\n constructor(device: WebGLDevice, props: CommandEncoderProps) {\n super(props);\n this.device = device;\n }\n\n destroy() {}\n\n // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;\n // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;\n // finish(options?: {id?: string}): GPUCommandBuffer;\n\n copyBufferToBuffer(options: CopyBufferToBufferOptions): void {\n this.commandBuffer.commands.push({name: 'copy-buffer-to-buffer', options});\n }\n\n copyBufferToTexture(options: CopyBufferToTextureOptions) {\n this.commandBuffer.commands.push({name: 'copy-buffer-to-texture', options});\n }\n\n copyTextureToBuffer(options: CopyTextureToBufferOptions): void {\n this.commandBuffer.commands.push({name: 'copy-texture-to-buffer', options});\n }\n\n copyTextureToTexture(options: CopyTextureToTextureOptions): void {\n this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});\n }\n\n pushDebugGroup(groupLabel: string): void {}\n popDebugGroup() {}\n\n insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: Query, queryIndex: number): void {}\n\n // resolveQuerySet(options: {\n // querySet: GPUQuerySet,\n // firstQuery: number,\n // queryCount: number,\n // destination: Buffer,\n // destinationOffset?: number;\n // }): void;\n};\n"],"file":"webgl-command-encoder.js"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=webgl-external-texture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"webgl-external-texture.js"}
@@ -1,265 +0,0 @@
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", undefined);
24
-
25
- _defineProperty(this, "_ownResources", []);
26
-
27
- this.device = device;
28
- this.gl = device.gl;
29
- this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
30
-
31
- if (this.handle) {
32
- this.handle.__SPECTOR_Metadata = {
33
- id: this.props.id,
34
- props: this.props
35
- };
36
- }
37
-
38
- this.colorAttachments = this._createColorAttachments();
39
- this.depthStencilAttachment = this._createDepthStencilAttachment();
40
- const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
41
-
42
- for (let i = 0; i < this.colorAttachments.length; ++i) {
43
- const attachment = this.colorAttachments[i];
44
- const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
45
-
46
- if (attachment) {
47
- this._attachOne(attachmentPoint, attachment);
48
- }
49
- }
50
-
51
- if (this.props.depthStencilAttachment) {
52
- this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
53
- }
54
-
55
- this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
56
-
57
- if (props.check !== false) {
58
- this._checkStatus();
59
- }
60
- }
61
-
62
- destroy() {
63
- if (this.handle !== null) {
64
- for (const resource of this._ownResources) {
65
- resource.destroy();
66
- }
67
-
68
- this.gl.deleteFramebuffer(this.handle);
69
- this.handle = null;
70
- }
71
- }
72
-
73
- _checkStatus() {
74
- const {
75
- gl
76
- } = this;
77
- const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
78
- const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
79
- gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
80
-
81
- if (status !== gl.FRAMEBUFFER_COMPLETE) {
82
- throw new Error("Framebuffer ".concat(_getFrameBufferStatus(status)));
83
- }
84
- }
85
-
86
- _createColorAttachments() {
87
- return this.props.colorAttachments.map(colorAttachment => {
88
- if (!colorAttachment) {
89
- return undefined;
90
- }
91
-
92
- if (colorAttachment instanceof WebGLTexture) {
93
- return colorAttachment;
94
- }
95
-
96
- return this._createColorAttachment(colorAttachment, this.width, this.height);
97
- });
98
- }
99
-
100
- _createColorAttachment(format, width, height) {
101
- const texture = this.device._createTexture({
102
- id: "".concat(this.id, "-color"),
103
- data: null,
104
- format,
105
- width,
106
- height,
107
- mipmaps: false,
108
- sampler: {
109
- minFilter: 'linear',
110
- magFilter: 'linear',
111
- addressModeU: 'clamp-to-edge',
112
- addressModeV: 'clamp-to-edge'
113
- }
114
- });
115
-
116
- this._ownResources.push(texture);
117
-
118
- return texture;
119
- }
120
-
121
- _createDepthStencilAttachment() {
122
- if (!this.props.depthStencilAttachment) {
123
- return undefined;
124
- }
125
-
126
- if (this.props.depthStencilAttachment instanceof Renderbuffer) {
127
- return this.props.depthStencilAttachment;
128
- }
129
-
130
- if (this.props.depthStencilAttachment instanceof Texture) {
131
- return this.props.depthStencilAttachment;
132
- }
133
-
134
- const format = this.props.depthStencilAttachment;
135
- const webglFormat = getWebGLTextureFormat(this.gl, format);
136
- const texture = new Renderbuffer(this.device, {
137
- id: "".concat(this.id, "-depth-stencil"),
138
- format: webglFormat,
139
- width: this.width,
140
- height: this.height
141
- });
142
-
143
- this._ownResources.push(texture);
144
-
145
- return texture;
146
- }
147
-
148
- _resizeAttachments(width, height) {
149
- var _this$depthStencilAtt;
150
-
151
- if (this.handle === null) {
152
- this.width = this.gl.drawingBufferWidth;
153
- this.height = this.gl.drawingBufferHeight;
154
- return this;
155
- }
156
-
157
- if (width === undefined) {
158
- width = this.gl.drawingBufferWidth;
159
- }
160
-
161
- if (height === undefined) {
162
- height = this.gl.drawingBufferHeight;
163
- }
164
-
165
- if (width !== this.width && height !== this.height) {
166
- log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
167
- }
168
-
169
- for (const colorAttachment of this.colorAttachments) {
170
- colorAttachment.resize({
171
- width,
172
- height
173
- });
174
- }
175
-
176
- (_this$depthStencilAtt = this.depthStencilAttachment) === null || _this$depthStencilAtt === void 0 ? void 0 : _this$depthStencilAtt.resize({
177
- width,
178
- height
179
- });
180
- return this;
181
- }
182
-
183
- _attachOne(attachmentPoint, attachment) {
184
- if (attachment instanceof Renderbuffer) {
185
- this._attachRenderbuffer(attachmentPoint, attachment);
186
-
187
- return attachment;
188
- } else if (Array.isArray(attachment)) {
189
- const [texture, layer = 0, level = 0] = attachment;
190
-
191
- this._attachTexture(attachmentPoint, texture, layer, level);
192
-
193
- return texture;
194
- } else if (attachment instanceof WebGLTexture) {
195
- this._attachTexture(attachmentPoint, attachment, 0, 0);
196
-
197
- return attachment;
198
- }
199
- }
200
-
201
- _attachRenderbuffer(attachment, renderbuffer) {
202
- this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
203
- }
204
-
205
- _attachTexture(attachment, texture, layer, level) {
206
- const {
207
- gl,
208
- gl2
209
- } = this.device;
210
- gl.bindTexture(texture.target, texture.handle);
211
-
212
- switch (texture.target) {
213
- case GL.TEXTURE_2D_ARRAY:
214
- case GL.TEXTURE_3D:
215
- this.device.assertWebGL2();
216
- gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
217
- break;
218
-
219
- case GL.TEXTURE_CUBE_MAP:
220
- const face = mapIndexToCubeMapFace(layer);
221
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
222
- break;
223
-
224
- case GL.TEXTURE_2D:
225
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
226
- break;
227
-
228
- default:
229
- assert(false, 'Illegal texture type');
230
- }
231
-
232
- gl.bindTexture(texture.target, null);
233
- }
234
-
235
- }
236
-
237
- function mapIndexToCubeMapFace(layer) {
238
- return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
239
- }
240
-
241
- function _getFrameBufferStatus(status) {
242
- switch (status) {
243
- case GL.FRAMEBUFFER_COMPLETE:
244
- return 'success';
245
-
246
- case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
247
- return 'Mismatched attachments';
248
-
249
- case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
250
- return 'No attachments';
251
-
252
- case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
253
- return 'Height/width mismatch';
254
-
255
- case GL.FRAMEBUFFER_UNSUPPORTED:
256
- return 'Unsupported or split attachments';
257
-
258
- case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
259
- return 'Samples mismatch';
260
-
261
- default:
262
- return "".concat(status);
263
- }
264
- }
265
- //# sourceMappingURL=webgl-framebuffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-framebuffer.ts"],"names":["Framebuffer","Texture","log","assert","GL","WebGLTexture","Renderbuffer","getWebGLTextureFormat","getWebGLDepthStencilAttachment","WEBGLFramebuffer","texture","colorAttachments","constructor","device","props","undefined","gl","handle","createFramebuffer","__SPECTOR_Metadata","id","_createColorAttachments","depthStencilAttachment","_createDepthStencilAttachment","prevHandle","bindFramebuffer","FRAMEBUFFER","i","length","attachment","attachmentPoint","COLOR_ATTACHMENT0","_attachOne","format","check","_checkStatus","destroy","resource","_ownResources","deleteFramebuffer","status","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","Error","_getFrameBufferStatus","map","colorAttachment","_createColorAttachment","width","height","_createTexture","data","mipmaps","sampler","minFilter","magFilter","addressModeU","addressModeV","push","webglFormat","_resizeAttachments","drawingBufferWidth","drawingBufferHeight","resize","_attachRenderbuffer","Array","isArray","layer","level","_attachTexture","renderbuffer","framebufferRenderbuffer","RENDERBUFFER","gl2","bindTexture","target","TEXTURE_2D_ARRAY","TEXTURE_3D","assertWebGL2","framebufferTextureLayer","TEXTURE_CUBE_MAP","face","mapIndexToCubeMapFace","framebufferTexture2D","TEXTURE_2D","TEXTURE_CUBE_MAP_POSITIVE_X","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"],"mappings":"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","sourcesContent":["import type {FramebufferProps, DepthStencilTextureFormat, ColorTextureFormat} from '@luma.gl/api';\nimport {Framebuffer, Texture, log, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../webgl-device';\nimport WebGLTexture from './webgl-texture';\nimport Renderbuffer from '../objects/webgl-renderbuffer';\nimport {getWebGLTextureFormat, getWebGLDepthStencilAttachment} from '../converters/texture-formats';\n\nexport type TextureAttachment = [Texture, number?, number?];\nexport type Attachment = WebGLTexture | Renderbuffer | TextureAttachment;\n\n/** luma.gl Framebuffer, WebGL implementation */\nexport default class WEBGLFramebuffer extends Framebuffer {\n device: WebGLDevice;\n gl: WebGLRenderingContext;\n handle: WebGLFramebuffer;\n\n get texture() { return this.colorAttachments[0]; }\n readonly colorAttachments: WebGLTexture[] = [];\n readonly depthStencilAttachment: WebGLTexture | undefined = undefined;\n protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];\n\n constructor(device: WebGLDevice, props: FramebufferProps) {\n super(device, props);\n this.device = device;\n this.gl = device.gl;\n this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();\n\n if (this.handle) { // default framebuffer is null...\n // @ts-expect-error Per SPECTOR docs\n this.handle.__SPECTOR_Metadata = {id: this.props.id, props: this.props};\n }\n\n this.colorAttachments = this._createColorAttachments();\n // @ts-expect-error\n this.depthStencilAttachment = this._createDepthStencilAttachment();\n\n /** Attach from a map of attachments */\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (let i = 0; i < this.colorAttachments.length; ++i) {\n const attachment = this.colorAttachments[i];\n const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;\n if (attachment) {\n this._attachOne(attachmentPoint, attachment);\n }\n }\n\n if (this.props.depthStencilAttachment) {\n this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);\n }\n\n // @ts-expect-error\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // @ts-expect-error\n if (props.check !== false) {\n this._checkStatus();\n }\n }\n\n destroy() {\n if (this.handle !== null) {\n for (const resource of this._ownResources) {\n resource.destroy();\n }\n this.gl.deleteFramebuffer(this.handle);\n this.handle = null;\n }\n }\n\n // PRIVATE\n\n /** Check the status */\n protected _checkStatus(): void {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n // @ts-expect-error\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);\n }\n }\n\n _createColorAttachments(): WebGLTexture[] {\n return this.props.colorAttachments.map(colorAttachment => {\n if (!colorAttachment) {\n return undefined;\n }\n if (colorAttachment instanceof WebGLTexture) {\n return colorAttachment;\n }\n // if (typeof colorAttachment === 'default') {\n // return this._createColorAttachment('rgba8unorm', this.width, this.height);\n // }\n // @ts-expect-error\n return this._createColorAttachment(colorAttachment, this.width, this.height);\n });\n }\n\n /** Create a color attachment */\n protected _createColorAttachment(format: ColorTextureFormat, width: number, height: number): WebGLTexture {\n const texture = this.device._createTexture({\n id: `${this.id}-color`,\n data: null, // reserves texture memory, but texels are undefined\n format,\n // type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n sampler: {\n minFilter: 'linear',\n magFilter: 'linear',\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge'\n },\n // parameters: {\n // [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n // [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n // [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n // }\n }) as WebGLTexture;\n this._ownResources.push(texture);\n return texture;\n }\n\n /** Create a depth stencil attachment GL.DEPTH24_STENCIL8 */\n protected _createDepthStencilAttachment(): Renderbuffer | WebGLTexture {\n if (!this.props.depthStencilAttachment) {\n return undefined;\n }\n if (this.props.depthStencilAttachment instanceof Renderbuffer) {\n return this.props.depthStencilAttachment;\n }\n if (this.props.depthStencilAttachment instanceof Texture) {\n return this.props.depthStencilAttachment as unknown as WebGLTexture;\n }\n const format = this.props.depthStencilAttachment;\n const webglFormat = getWebGLTextureFormat(this.gl, format);\n\n const texture = new Renderbuffer(this.device, {\n id: `${this.id}-depth-stencil`, // TODO misleading if not depth and stencil?\n format: webglFormat,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n width: this.width,\n height: this.height\n });\n this._ownResources.push(texture);\n return texture;\n }\n\n /** Attachment resize is expected to be a noop if size is same */\n protected _resizeAttachments(width: number, height: number): this {\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n // assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n\n for (const colorAttachment of this.colorAttachments) {\n colorAttachment.resize({width, height});\n }\n this.depthStencilAttachment?.resize({width, height});\n return this;\n }\n\n /** Attach one attachment */\n protected _attachOne(attachmentPoint: GL, attachment: Attachment): WebGLTexture | Renderbuffer {\n if (attachment instanceof Renderbuffer) {\n this._attachRenderbuffer(attachmentPoint, attachment);\n return attachment;\n } else if (Array.isArray(attachment)) {\n const [texture, layer = 0, level = 0] = attachment;\n this._attachTexture(attachmentPoint, texture as unknown as WebGLTexture, layer, level);\n return texture as unknown as WebGLTexture;\n } else if (attachment instanceof WebGLTexture) {\n this._attachTexture(attachmentPoint, attachment, 0, 0);\n return attachment;\n }\n }\n\n protected _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {\n this.gl.framebufferRenderbuffer(\n GL.FRAMEBUFFER,\n attachment,\n GL.RENDERBUFFER,\n renderbuffer.handle\n );\n }\n\n /**\n * @param attachment\n * @param texture\n * @param layer = 0 - index into WebGLTextureArray and Texture3D or face for `TextureCubeMap`\n * @param level = 0 - mipmapLevel (must be 0 in WebGL1)\n */\n protected _attachTexture(attachment: GL, texture: WebGLTexture, layer: number, level: number): void {\n const {gl, gl2} = this.device;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n this.device.assertWebGL2();\n gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n }\n}\n\n// Helper functions\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n switch (status) {\n case GL.FRAMEBUFFER_COMPLETE:\n return 'success';\n case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n return 'Mismatched attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n return 'No attachments';\n case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n return 'Height/width mismatch';\n case GL.FRAMEBUFFER_UNSUPPORTED:\n return 'Unsupported or split attachments';\n // WebGL2\n case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:\n return 'Samples mismatch';\n // OVR_multiview2 extension\n // case GL.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: return 'baseViewIndex mismatch';\n default:\n return `${status}`;\n }\n}\n"],"file":"webgl-framebuffer.js"}
@@ -1,19 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { RenderPass } from '@luma.gl/api';
3
- export default class WEBGLRenderPass extends RenderPass {
4
- constructor(device, props) {
5
- super(device, props);
6
-
7
- _defineProperty(this, "device", void 0);
8
- }
9
-
10
- endPass() {}
11
-
12
- pushDebugGroup(groupLabel) {}
13
-
14
- popDebugGroup() {}
15
-
16
- insertDebugMarker(markerLabel) {}
17
-
18
- }
19
- //# sourceMappingURL=webgl-render-pass.js.map