@luma.gl/webgl 9.0.0-alpha.15 → 9.0.0-alpha.17

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 (401) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +3 -23
  3. package/dist/adapter/converters/device-parameters.js.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +1 -5
  5. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +3 -58
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +10 -54
  11. package/dist/adapter/converters/texture-formats.js.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +0 -9
  13. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  14. package/dist/adapter/device-helpers/device-features.js +5 -22
  15. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  16. package/dist/adapter/device-helpers/device-limits.js +1 -4
  17. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  18. package/dist/adapter/device-helpers/get-device-info.js +6 -12
  19. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  20. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  21. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  22. package/dist/adapter/helpers/attribute-utils.js +0 -17
  23. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  24. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  25. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  26. package/dist/adapter/helpers/get-shader-info.js +25 -0
  27. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  28. package/dist/adapter/helpers/get-shader-layout.js +9 -57
  29. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  30. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  31. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  33. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  34. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  35. package/dist/adapter/helpers/set-uniform.js +0 -30
  36. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  37. package/dist/adapter/helpers/uniforms.js +0 -10
  38. package/dist/adapter/helpers/uniforms.js.map +1 -1
  39. package/dist/adapter/objects/constants-to-keys.js +0 -7
  40. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  41. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-renderbuffer.js +4 -20
  43. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  44. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  45. package/dist/adapter/objects/webgl-resource.js +13 -60
  46. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  47. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-vertex-array-object.js +6 -16
  49. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  50. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-buffer.js +13 -42
  52. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  53. package/dist/adapter/resources/webgl-command-buffer.js +2 -17
  54. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  55. package/dist/adapter/resources/webgl-command-encoder.js +1 -14
  56. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  57. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  58. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  59. package/dist/adapter/resources/webgl-framebuffer.js +5 -65
  60. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  62. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-render-pass.js +1 -8
  64. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  65. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-render-pipeline.js +9 -98
  67. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  68. package/dist/adapter/resources/webgl-sampler.js +1 -13
  69. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  71. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-shader.js +3 -17
  73. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  74. package/dist/adapter/resources/webgl-texture.d.ts +1 -1
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +44 -162
  77. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  78. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  79. package/dist/adapter/webgl-canvas-context.js +2 -16
  80. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  81. package/dist/adapter/webgl-device.d.ts +5 -0
  82. package/dist/adapter/webgl-device.d.ts.map +1 -1
  83. package/dist/adapter/webgl-device.js +40 -107
  84. package/dist/adapter/webgl-device.js.map +1 -1
  85. package/dist/classic/accessor.js +11 -35
  86. package/dist/classic/accessor.js.map +1 -1
  87. package/dist/classic/buffer.d.ts.map +1 -1
  88. package/dist/classic/buffer.js +20 -76
  89. package/dist/classic/buffer.js.map +1 -1
  90. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  91. package/dist/classic/typed-array-utils.js +0 -20
  92. package/dist/classic/typed-array-utils.js.map +1 -1
  93. package/dist/context/context/create-browser-context.d.ts +1 -0
  94. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  95. package/dist/context/context/create-browser-context.js +6 -14
  96. package/dist/context/context/create-browser-context.js.map +1 -1
  97. package/dist/context/context/create-headless-context.js +6 -7
  98. package/dist/context/context/create-headless-context.js.map +1 -1
  99. package/dist/context/context/webgl-checks.js +0 -3
  100. package/dist/context/context/webgl-checks.js.map +1 -1
  101. package/dist/context/debug/spector.d.ts +1 -0
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +6 -18
  104. package/dist/context/debug/spector.js.map +1 -1
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +4 -22
  107. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  108. package/dist/context/parameters/unified-parameter-api.js +4 -15
  109. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  110. package/dist/context/parameters/webgl-parameter-tables.js +1 -20
  111. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  112. package/dist/context/polyfill/context-data.js +0 -2
  113. package/dist/context/polyfill/context-data.js.map +1 -1
  114. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  115. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  116. package/dist/context/polyfill/polyfill-context.js +17 -24
  117. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  118. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  119. package/dist/context/polyfill/polyfill-table.js +3 -26
  120. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  121. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  122. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  123. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  124. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  125. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  127. package/dist/context/state-tracker/track-context-state.js +14 -48
  128. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  130. package/dist/context/state-tracker/with-parameters.js +3 -9
  131. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  132. package/dist/dist.dev.js +9205 -0
  133. package/dist/index.cjs +5948 -0
  134. package/dist/index.d.ts +0 -2
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +24 -26
  137. package/dist/index.js.map +1 -1
  138. package/dist/types/webgl.d.ts +4 -4
  139. package/dist/types/webgl.d.ts.map +1 -1
  140. package/dist/types/webgl.js.map +1 -1
  141. package/dist/types.js.map +1 -1
  142. package/dist.min.js +36 -0
  143. package/package.json +18 -9
  144. package/src/.DS_Store +0 -0
  145. package/src/adapter/.DS_Store +0 -0
  146. package/src/adapter/converters/device-parameters.ts +5 -2
  147. package/src/adapter/converters/sampler-parameters.ts +4 -2
  148. package/src/adapter/converters/texture-formats.ts +3 -1
  149. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  150. package/src/adapter/helpers/get-shader-info.ts +37 -0
  151. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  152. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  153. package/src/adapter/helpers/set-uniform.ts +2 -0
  154. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  155. package/src/adapter/objects/webgl-resource.ts +1 -1
  156. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  157. package/src/adapter/resources/webgl-buffer.ts +5 -5
  158. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  159. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  160. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  161. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  162. package/src/adapter/resources/webgl-shader.ts +3 -3
  163. package/src/adapter/resources/webgl-texture.ts +8 -9
  164. package/src/adapter/webgl-canvas-context.ts +2 -2
  165. package/src/adapter/webgl-device.ts +13 -3
  166. package/src/classic/accessor.ts +1 -1
  167. package/src/classic/buffer.ts +3 -3
  168. package/src/classic/typed-array-utils.ts +1 -1
  169. package/src/context/.DS_Store +0 -0
  170. package/src/context/context/create-browser-context.ts +4 -2
  171. package/src/context/context/create-headless-context.ts +2 -2
  172. package/src/context/debug/spector.ts +5 -4
  173. package/src/context/debug/webgl-developer-tools.ts +1 -1
  174. package/src/context/polyfill/polyfill-table.ts +1 -0
  175. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  176. package/src/context/state-tracker/track-context-state.ts +6 -5
  177. package/src/context/state-tracker/with-parameters.ts +1 -1
  178. package/src/index.ts +1 -5
  179. package/src/types/webgl.ts +6 -4
  180. package/dist/bundle.d.ts +0 -2
  181. package/dist/bundle.d.ts.map +0 -1
  182. package/dist/bundle.js +0 -5
  183. package/dist/bundle.js.map +0 -1
  184. package/dist/es5/adapter/converters/device-parameters.js +0 -174
  185. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  186. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  187. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  188. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  189. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  190. package/dist/es5/adapter/converters/texture-formats.js +0 -1022
  191. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  192. package/dist/es5/adapter/converters/vertex-formats.js +0 -48
  193. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  194. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  195. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  196. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  197. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  198. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -59
  199. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  200. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  201. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  202. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  203. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  204. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -389
  205. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  206. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  207. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  208. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  209. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  210. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  211. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  212. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  213. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  214. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  215. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  216. package/dist/es5/adapter/objects/webgl-resource.js +0 -287
  217. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  218. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  219. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  220. package/dist/es5/adapter/resources/webgl-buffer.js +0 -242
  221. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  222. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  223. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  224. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  225. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  226. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  227. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -347
  229. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  230. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  231. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  232. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -494
  233. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  234. package/dist/es5/adapter/resources/webgl-sampler.js +0 -101
  235. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  236. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  237. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  238. package/dist/es5/adapter/resources/webgl-texture.js +0 -980
  239. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  240. package/dist/es5/adapter/webgl-canvas-context.js +0 -96
  241. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  242. package/dist/es5/adapter/webgl-device.js +0 -474
  243. package/dist/es5/adapter/webgl-device.js.map +0 -1
  244. package/dist/es5/bundle.js +0 -7
  245. package/dist/es5/bundle.js.map +0 -1
  246. package/dist/es5/classic/accessor.js +0 -181
  247. package/dist/es5/classic/accessor.js.map +0 -1
  248. package/dist/es5/classic/buffer.js +0 -468
  249. package/dist/es5/classic/buffer.js.map +0 -1
  250. package/dist/es5/classic/typed-array-utils.js +0 -126
  251. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  252. package/dist/es5/context/context/create-browser-context.js +0 -83
  253. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  254. package/dist/es5/context/context/create-headless-context.js +0 -60
  255. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  256. package/dist/es5/context/context/webgl-checks.js +0 -54
  257. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  258. package/dist/es5/context/debug/spector.js +0 -133
  259. package/dist/es5/context/debug/spector.js.map +0 -1
  260. package/dist/es5/context/debug/webgl-developer-tools.js +0 -192
  261. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  262. package/dist/es5/context/parameters/unified-parameter-api.js +0 -101
  263. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  264. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -393
  265. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  266. package/dist/es5/context/polyfill/context-data.js +0 -21
  267. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  268. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  269. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  270. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  271. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  272. package/dist/es5/context/polyfill/polyfill-table.js +0 -167
  273. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  274. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  275. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  276. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  277. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  278. package/dist/es5/context/state-tracker/track-context-state.js +0 -210
  279. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  280. package/dist/es5/context/state-tracker/with-parameters.js +0 -52
  281. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  282. package/dist/es5/index.js +0 -276
  283. package/dist/es5/index.js.map +0 -1
  284. package/dist/es5/init.js +0 -10
  285. package/dist/es5/init.js.map +0 -1
  286. package/dist/es5/types/webgl.js +0 -6
  287. package/dist/es5/types/webgl.js.map +0 -1
  288. package/dist/es5/types.js +0 -2
  289. package/dist/es5/types.js.map +0 -1
  290. package/dist/esm/adapter/converters/device-parameters.js +0 -157
  291. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  292. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  293. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  294. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  295. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  296. package/dist/esm/adapter/converters/texture-formats.js +0 -945
  297. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  298. package/dist/esm/adapter/converters/vertex-formats.js +0 -38
  299. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  300. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  301. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  302. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  303. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  304. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -48
  305. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  306. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  307. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  308. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  309. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  310. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -328
  311. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  312. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  313. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  314. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  315. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  316. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  317. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  318. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  319. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  320. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  321. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  322. package/dist/esm/adapter/objects/webgl-resource.js +0 -210
  323. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  324. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  325. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  326. package/dist/esm/adapter/resources/webgl-buffer.js +0 -162
  327. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  328. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  329. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  330. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  331. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  332. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  333. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  334. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  335. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  336. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  337. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  338. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  339. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/esm/adapter/resources/webgl-sampler.js +0 -54
  341. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  342. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  343. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  344. package/dist/esm/adapter/resources/webgl-texture.js +0 -832
  345. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  346. package/dist/esm/adapter/webgl-canvas-context.js +0 -55
  347. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  348. package/dist/esm/adapter/webgl-device.js +0 -346
  349. package/dist/esm/adapter/webgl-device.js.map +0 -1
  350. package/dist/esm/bundle.js +0 -5
  351. package/dist/esm/bundle.js.map +0 -1
  352. package/dist/esm/classic/accessor.js +0 -144
  353. package/dist/esm/classic/accessor.js.map +0 -1
  354. package/dist/esm/classic/buffer.js +0 -383
  355. package/dist/esm/classic/buffer.js.map +0 -1
  356. package/dist/esm/classic/typed-array-utils.js +0 -112
  357. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  358. package/dist/esm/context/context/create-browser-context.js +0 -61
  359. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  360. package/dist/esm/context/context/create-headless-context.js +0 -43
  361. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  362. package/dist/esm/context/context/webgl-checks.js +0 -34
  363. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  364. package/dist/esm/context/debug/spector.js +0 -76
  365. package/dist/esm/context/debug/spector.js.map +0 -1
  366. package/dist/esm/context/debug/webgl-developer-tools.js +0 -115
  367. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  368. package/dist/esm/context/parameters/unified-parameter-api.js +0 -66
  369. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  370. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -446
  371. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  372. package/dist/esm/context/polyfill/context-data.js +0 -14
  373. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  374. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  375. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  376. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  377. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  378. package/dist/esm/context/polyfill/polyfill-table.js +0 -161
  379. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  380. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  381. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  382. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  383. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  384. package/dist/esm/context/state-tracker/track-context-state.js +0 -182
  385. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  386. package/dist/esm/context/state-tracker/with-parameters.js +0 -40
  387. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  388. package/dist/esm/index.js +0 -27
  389. package/dist/esm/index.js.map +0 -1
  390. package/dist/esm/init.js +0 -4
  391. package/dist/esm/init.js.map +0 -1
  392. package/dist/esm/types/webgl.js +0 -2
  393. package/dist/esm/types/webgl.js.map +0 -1
  394. package/dist/esm/types.js +0 -2
  395. package/dist/esm/types.js.map +0 -1
  396. package/dist/init.d.ts +0 -2
  397. package/dist/init.d.ts.map +0 -1
  398. package/dist/init.js +0 -4
  399. package/dist/init.js.map +0 -1
  400. package/src/bundle.ts +0 -4
  401. package/src/init.ts +0 -4
@@ -1,162 +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", null);
24
-
25
- _defineProperty(this, "webglUsage", void 0);
26
-
27
- this.device = device;
28
- this.gl = this.device.gl;
29
- this.gl2 = this.device.gl2;
30
- const handle = typeof props === 'object' ? props.handle : undefined;
31
- this.handle = handle || this.gl.createBuffer();
32
- this.handle.__SPECTOR_Metadata = { ...this.props,
33
- data: typeof this.props.data
34
- };
35
- this.target = this.props.target || getWebGLTarget(this.props.usage);
36
- this.webglUsage = this.props.webglUsage || getWebGLUsage(this.props.usage);
37
- this.debugData = null;
38
-
39
- if (props.data) {
40
- this._initWithData(props.data, props.byteOffset, props.byteLength);
41
- } else {
42
- this._initWithByteLength(props.byteLength || 0);
43
- }
44
- }
45
-
46
- _initWithData(data, byteOffset = 0, byteLength = data.byteLength + byteOffset) {
47
- assert(ArrayBuffer.isView(data));
48
-
49
- const target = this._getWriteTarget();
50
-
51
- this.gl.bindBuffer(target, this.handle);
52
- this.gl.bufferData(target, byteLength, this.webglUsage);
53
- this.gl.bufferSubData(target, byteOffset, data);
54
- this.gl.bindBuffer(target, null);
55
- this.debugData = data.slice(0, DEBUG_DATA_LENGTH);
56
- this.bytesUsed = byteLength;
57
- this.byteLength = byteLength;
58
- this.trackAllocatedMemory(byteLength);
59
- return this;
60
- }
61
-
62
- _initWithByteLength(byteLength) {
63
- assert(byteLength >= 0);
64
- let data = byteLength;
65
-
66
- if (byteLength === 0) {
67
- data = new Float32Array(0);
68
- }
69
-
70
- const target = this._getWriteTarget();
71
-
72
- this.gl.bindBuffer(target, this.handle);
73
- this.gl.bufferData(target, data, this.webglUsage);
74
- this.gl.bindBuffer(target, null);
75
- this.debugData = null;
76
- this.bytesUsed = byteLength;
77
- this.byteLength = byteLength;
78
- return this;
79
- }
80
-
81
- destroy() {
82
- if (!this.destroyed && this.handle) {
83
- this.removeStats();
84
- this.trackDeallocatedMemory();
85
- this.gl.deleteBuffer(this.handle);
86
- this.destroyed = true;
87
- }
88
- }
89
-
90
- write(data, byteOffset = 0) {
91
- const srcOffset = 0;
92
- const byteLength = data.byteLength;
93
- const target = this.device.isWebGL2 ? GL.COPY_WRITE_BUFFER : this.target;
94
- this.gl.bindBuffer(target, this.handle);
95
-
96
- if (srcOffset !== 0 || byteLength !== undefined) {
97
- this.device.assertWebGL2();
98
- this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);
99
- } else {
100
- this.gl.bufferSubData(target, byteOffset, data);
101
- }
102
-
103
- this.gl.bindBuffer(target, null);
104
- }
105
-
106
- async readAsync(byteOffset = 0, byteLength) {
107
- this.device.assertWebGL2();
108
- const data = new Uint8Array(byteLength);
109
- const dstOffset = 0;
110
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);
111
- this.gl2.getBufferSubData(GL.COPY_READ_BUFFER, byteOffset, data, dstOffset, byteLength);
112
- this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);
113
- return data;
114
- }
115
-
116
- _invalidateDebugData() {
117
- this.debugData = null;
118
- }
119
-
120
- _getWriteTarget() {
121
- return this.target;
122
- }
123
-
124
- _getReadTarget() {
125
- return this.target;
126
- return this.device.isWebGL2 ? GL.COPY_READ_BUFFER : this.target;
127
- }
128
-
129
- }
130
-
131
- function getWebGLTarget(usage) {
132
- if (usage & Buffer.INDEX) {
133
- return GL.ELEMENT_ARRAY_BUFFER;
134
- }
135
-
136
- if (usage & Buffer.VERTEX) {
137
- return GL.ARRAY_BUFFER;
138
- }
139
-
140
- if (usage & Buffer.UNIFORM) {
141
- return GL.UNIFORM_BUFFER;
142
- }
143
-
144
- return GL.ARRAY_BUFFER;
145
- }
146
-
147
- function getWebGLUsage(usage) {
148
- if (usage & Buffer.INDEX) {
149
- return GL.STATIC_DRAW;
150
- }
151
-
152
- if (usage & Buffer.VERTEX) {
153
- return GL.STATIC_DRAW;
154
- }
155
-
156
- if (usage & Buffer.UNIFORM) {
157
- return GL.DYNAMIC_DRAW;
158
- }
159
-
160
- return GL.DYNAMIC_DRAW;
161
- }
162
- //# 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","destroyed","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 | null = null;\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 override destroy(): void {\n if (!this.destroyed && this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n this.destroyed = true;\n // this.handle = null;\n }\n }\n\n override 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 override 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;;AAEQE,EAAAA,OAAO,GAAS,CAAE;;AAM3BC,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;;AAEQQ,EAAAA,cAAc,CAACC,UAAD,EAA2B,CAAE;;AAC3CC,EAAAA,aAAa,GAAG,CAAE;;AAElBC,EAAAA,iBAAiB,CAACC,WAAD,EAA4B,CAAE;;AAnCM;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 override destroy(): void {}\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 override pushDebugGroup(groupLabel: string): void {}\n override popDebugGroup() {}\n\n override 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,267 +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", null);
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.destroyed = true;
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
- throw new Error('attach');
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
- }
238
-
239
- function mapIndexToCubeMapFace(layer) {
240
- return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
241
- }
242
-
243
- 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
- }
266
- }
267
- //# 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","gl","handle","undefined","createFramebuffer","__SPECTOR_Metadata","id","_createColorAttachments","depthStencilAttachment","_createDepthStencilAttachment","prevHandle","bindFramebuffer","FRAMEBUFFER","i","length","attachment","attachmentPoint","COLOR_ATTACHMENT0","_attachOne","format","check","_checkStatus","destroy","resource","_ownResources","deleteFramebuffer","destroyed","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":["// luma.gl, MIT license\n\nimport type {FramebufferProps, 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 | null = null;\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 override destroy(): void {\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 this.destroyed = true;\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 throw new Error('attach');\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: number | GL): GL {\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: GL) {\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,21 +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
- this.device = device;
10
- }
11
-
12
- endPass() {}
13
-
14
- pushDebugGroup(groupLabel) {}
15
-
16
- popDebugGroup() {}
17
-
18
- insertDebugMarker(markerLabel) {}
19
-
20
- }
21
- //# sourceMappingURL=webgl-render-pass.js.map