@luma.gl/webgl 9.0.0-alpha.16 → 9.0.0-alpha.19

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 (417) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +117 -200
  3. package/dist/adapter/converters/device-parameters.js.map +1 -0
  4. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  6. package/dist/adapter/converters/renderbuffer-formats.js +172 -62
  7. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -0
  8. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.js +151 -149
  10. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +847 -438
  14. package/dist/adapter/converters/texture-formats.js.map +1 -0
  15. package/dist/adapter/converters/vertex-formats.js +24 -15
  16. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  17. package/dist/adapter/device-helpers/device-features.js +84 -120
  18. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  19. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  20. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/device-limits.js +83 -88
  22. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  23. package/dist/adapter/device-helpers/get-device-info.js +37 -42
  24. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  25. package/dist/adapter/device-helpers/is-old-ie.js +8 -10
  26. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  27. package/dist/adapter/helpers/attribute-utils.js +57 -50
  28. package/dist/adapter/helpers/attribute-utils.js.map +1 -0
  29. package/dist/adapter/helpers/get-shader-info.d.ts +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-info.js +19 -21
  32. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  33. package/dist/adapter/helpers/get-shader-layout.js +251 -310
  34. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  35. package/dist/adapter/helpers/parse-shader-compiler-log.js +26 -32
  36. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  37. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  38. package/dist/adapter/helpers/set-uniform.js +80 -67
  39. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  40. package/dist/adapter/helpers/uniforms.js +75 -80
  41. package/dist/adapter/helpers/uniforms.js.map +1 -0
  42. package/dist/adapter/objects/constants-to-keys.js +26 -33
  43. package/dist/adapter/objects/constants-to-keys.js.map +1 -0
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +70 -67
  47. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -0
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +158 -213
  50. package/dist/adapter/objects/webgl-resource.js.map +1 -0
  51. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  52. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  53. package/dist/adapter/objects/webgl-vertex-array-object.js +66 -74
  54. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  55. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-buffer.js +118 -150
  57. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  58. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-buffer.js +41 -40
  61. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  62. package/dist/adapter/resources/webgl-command-encoder.js +37 -26
  63. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  64. package/dist/adapter/resources/webgl-external-texture.js +1 -91
  65. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  66. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-framebuffer.js +198 -231
  69. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  70. package/dist/adapter/resources/webgl-render-pass.js +11 -8
  71. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +289 -316
  74. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  75. package/dist/adapter/resources/webgl-sampler.js +35 -42
  76. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  77. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-shader.js +53 -57
  79. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  80. package/dist/adapter/resources/webgl-texture.d.ts +4 -4
  81. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-texture.js +697 -661
  83. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +35 -55
  86. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  87. package/dist/adapter/webgl-device.d.ts +5 -0
  88. package/dist/adapter/webgl-device.d.ts.map +1 -1
  89. package/dist/adapter/webgl-device.js +270 -287
  90. package/dist/adapter/webgl-device.js.map +1 -0
  91. package/dist/classic/accessor.js +103 -120
  92. package/dist/classic/accessor.js.map +1 -0
  93. package/dist/classic/buffer.d.ts +1 -1
  94. package/dist/classic/buffer.d.ts.map +1 -1
  95. package/dist/classic/buffer.js +300 -325
  96. package/dist/classic/buffer.js.map +1 -0
  97. package/dist/classic/typed-array-utils.d.ts +1 -1
  98. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  99. package/dist/classic/typed-array-utils.js +81 -91
  100. package/dist/classic/typed-array-utils.js.map +1 -0
  101. package/dist/context/context/create-browser-context.d.ts +3 -1
  102. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  103. package/dist/context/context/create-browser-context.js +49 -66
  104. package/dist/context/context/create-browser-context.js.map +1 -0
  105. package/dist/context/context/create-headless-context.d.ts +1 -1
  106. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  107. package/dist/context/context/create-headless-context.js +30 -24
  108. package/dist/context/context/create-headless-context.js.map +1 -0
  109. package/dist/context/context/webgl-checks.js +17 -25
  110. package/dist/context/context/webgl-checks.js.map +1 -0
  111. package/dist/context/debug/spector.d.ts +3 -1
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +50 -53
  114. package/dist/context/debug/spector.js.map +1 -0
  115. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  116. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  117. package/dist/context/debug/webgl-developer-tools.js +76 -107
  118. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  119. package/dist/context/parameters/unified-parameter-api.js +46 -93
  120. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  121. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  122. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  123. package/dist/context/parameters/webgl-parameter-tables.js +404 -462
  124. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  125. package/dist/context/polyfill/context-data.js +10 -16
  126. package/dist/context/polyfill/context-data.js.map +1 -0
  127. package/dist/context/polyfill/get-parameter-polyfill.js +71 -91
  128. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  129. package/dist/context/polyfill/polyfill-context.js +73 -75
  130. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  132. package/dist/context/polyfill/polyfill-table.js +116 -133
  133. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  135. package/dist/context/polyfill/polyfill-vertex-array-object.js +227 -255
  136. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +14 -16
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  140. package/dist/context/state-tracker/track-context-state.js +127 -183
  141. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  142. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  143. package/dist/context/state-tracker/with-parameters.js +29 -43
  144. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  145. package/dist/dist.dev.js +9205 -0
  146. package/dist/index.cjs +5948 -0
  147. package/dist/index.d.ts +0 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +25 -41
  150. package/dist/index.js.map +1 -0
  151. package/dist/types/webgl.d.ts +16 -16
  152. package/dist/types/webgl.d.ts.map +1 -1
  153. package/dist/types/webgl.js +1 -0
  154. package/dist/types/webgl.js.map +1 -0
  155. package/dist/types.d.ts +1 -1
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +1 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist.min.js +36 -0
  160. package/package.json +18 -9
  161. package/src/adapter/converters/device-parameters.ts +5 -2
  162. package/src/adapter/converters/sampler-parameters.ts +4 -2
  163. package/src/adapter/converters/texture-formats.ts +3 -1
  164. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  165. package/src/adapter/helpers/get-shader-info.ts +1 -1
  166. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  167. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  168. package/src/adapter/helpers/set-uniform.ts +2 -0
  169. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  170. package/src/adapter/objects/webgl-resource.ts +1 -1
  171. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  172. package/src/adapter/resources/webgl-buffer.ts +6 -6
  173. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  174. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  175. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  176. package/src/adapter/resources/webgl-shader.ts +1 -1
  177. package/src/adapter/resources/webgl-texture.ts +8 -9
  178. package/src/adapter/webgl-canvas-context.ts +2 -2
  179. package/src/adapter/webgl-device.ts +12 -2
  180. package/src/classic/accessor.ts +1 -1
  181. package/src/classic/buffer.ts +3 -3
  182. package/src/classic/typed-array-utils.ts +1 -1
  183. package/src/context/context/create-browser-context.ts +4 -2
  184. package/src/context/context/create-headless-context.ts +2 -2
  185. package/src/context/debug/spector.ts +5 -4
  186. package/src/context/debug/webgl-developer-tools.ts +1 -0
  187. package/src/context/polyfill/polyfill-table.ts +1 -0
  188. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  189. package/src/context/state-tracker/track-context-state.ts +6 -5
  190. package/src/context/state-tracker/with-parameters.ts +1 -1
  191. package/src/index.ts +1 -5
  192. package/src/types/webgl.ts +2 -0
  193. package/dist/bundle.d.ts +0 -2
  194. package/dist/bundle.d.ts.map +0 -1
  195. package/dist/bundle.js +0 -4
  196. package/dist/dist.min.js +0 -1
  197. package/dist/es5/adapter/converters/device-parameters.js +0 -139
  198. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  199. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -151
  200. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  201. package/dist/es5/adapter/converters/sampler-parameters.js +0 -182
  202. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  203. package/dist/es5/adapter/converters/texture-formats.js +0 -950
  204. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  205. package/dist/es5/adapter/converters/vertex-formats.js +0 -36
  206. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  207. package/dist/es5/adapter/device-helpers/device-features.js +0 -121
  208. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  209. package/dist/es5/adapter/device-helpers/device-limits.js +0 -54
  210. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -49
  212. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  213. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -15
  214. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  215. package/dist/es5/adapter/helpers/attribute-utils.js +0 -69
  216. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  217. package/dist/es5/adapter/helpers/get-shader-info.js +0 -31
  218. package/dist/es5/adapter/helpers/get-shader-info.js.map +0 -1
  219. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -311
  220. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  221. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -54
  222. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  223. package/dist/es5/adapter/helpers/set-uniform.js +0 -92
  224. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  225. package/dist/es5/adapter/helpers/uniforms.js +0 -88
  226. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  227. package/dist/es5/adapter/objects/constants-to-keys.js +0 -43
  228. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  229. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -122
  230. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  231. package/dist/es5/adapter/objects/webgl-resource.js +0 -233
  232. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  233. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -109
  234. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  235. package/dist/es5/adapter/resources/webgl-buffer.js +0 -196
  236. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  237. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -70
  238. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  239. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -80
  240. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  241. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  242. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  243. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -275
  244. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  245. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -45
  246. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  247. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -385
  248. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  249. package/dist/es5/adapter/resources/webgl-sampler.js +0 -75
  250. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/es5/adapter/resources/webgl-shader.js +0 -111
  252. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  253. package/dist/es5/adapter/resources/webgl-texture.js +0 -826
  254. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  255. package/dist/es5/adapter/webgl-canvas-context.js +0 -72
  256. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  257. package/dist/es5/adapter/webgl-device.js +0 -387
  258. package/dist/es5/adapter/webgl-device.js.map +0 -1
  259. package/dist/es5/bundle.js +0 -6
  260. package/dist/es5/bundle.js.map +0 -1
  261. package/dist/es5/classic/accessor.js +0 -151
  262. package/dist/es5/classic/accessor.js.map +0 -1
  263. package/dist/es5/classic/buffer.js +0 -398
  264. package/dist/es5/classic/buffer.js.map +0 -1
  265. package/dist/es5/classic/typed-array-utils.js +0 -99
  266. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  267. package/dist/es5/context/context/create-browser-context.js +0 -66
  268. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  269. package/dist/es5/context/context/create-headless-context.js +0 -47
  270. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  271. package/dist/es5/context/context/webgl-checks.js +0 -44
  272. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  273. package/dist/es5/context/debug/spector.js +0 -99
  274. package/dist/es5/context/debug/spector.js.map +0 -1
  275. package/dist/es5/context/debug/webgl-developer-tools.js +0 -146
  276. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  277. package/dist/es5/context/parameters/unified-parameter-api.js +0 -76
  278. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  279. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -346
  280. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  281. package/dist/es5/context/polyfill/context-data.js +0 -18
  282. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  283. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -69
  284. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  285. package/dist/es5/context/polyfill/polyfill-context.js +0 -109
  286. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  287. package/dist/es5/context/polyfill/polyfill-table.js +0 -143
  288. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  289. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -271
  290. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  291. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -23
  292. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  293. package/dist/es5/context/state-tracker/track-context-state.js +0 -167
  294. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  295. package/dist/es5/context/state-tracker/with-parameters.js +0 -40
  296. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  297. package/dist/es5/index.js +0 -249
  298. package/dist/es5/index.js.map +0 -1
  299. package/dist/es5/init.js +0 -7
  300. package/dist/es5/init.js.map +0 -1
  301. package/dist/es5/types/webgl.js +0 -5
  302. package/dist/es5/types/webgl.js.map +0 -1
  303. package/dist/es5/types.js +0 -2
  304. package/dist/es5/types.js.map +0 -1
  305. package/dist/esm/adapter/converters/device-parameters.js +0 -137
  306. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  307. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -181
  308. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  309. package/dist/esm/adapter/converters/sampler-parameters.js +0 -172
  310. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  311. package/dist/esm/adapter/converters/texture-formats.js +0 -901
  312. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  313. package/dist/esm/adapter/converters/vertex-formats.js +0 -29
  314. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  315. package/dist/esm/adapter/device-helpers/device-features.js +0 -95
  316. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  317. package/dist/esm/adapter/device-helpers/device-limits.js +0 -88
  318. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  319. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -42
  320. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  321. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -9
  322. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  323. package/dist/esm/adapter/helpers/attribute-utils.js +0 -64
  324. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/esm/adapter/helpers/get-shader-info.js +0 -25
  326. package/dist/esm/adapter/helpers/get-shader-info.js.map +0 -1
  327. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -282
  328. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  329. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -30
  330. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  331. package/dist/esm/adapter/helpers/set-uniform.js +0 -85
  332. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  333. package/dist/esm/adapter/helpers/uniforms.js +0 -89
  334. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  335. package/dist/esm/adapter/objects/constants-to-keys.js +0 -35
  336. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  337. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -78
  338. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  339. package/dist/esm/adapter/objects/webgl-resource.js +0 -163
  340. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  341. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -74
  342. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  343. package/dist/esm/adapter/resources/webgl-buffer.js +0 -134
  344. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  345. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -50
  346. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  347. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -41
  348. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  349. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  350. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  351. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -207
  352. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  353. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -14
  354. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  355. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -311
  356. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  357. package/dist/esm/adapter/resources/webgl-sampler.js +0 -42
  358. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  359. package/dist/esm/adapter/resources/webgl-shader.js +0 -62
  360. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  361. package/dist/esm/adapter/resources/webgl-texture.js +0 -714
  362. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  363. package/dist/esm/adapter/webgl-canvas-context.js +0 -41
  364. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  365. package/dist/esm/adapter/webgl-device.js +0 -276
  366. package/dist/esm/adapter/webgl-device.js.map +0 -1
  367. package/dist/esm/bundle.js +0 -4
  368. package/dist/esm/bundle.js.map +0 -1
  369. package/dist/esm/classic/accessor.js +0 -120
  370. package/dist/esm/classic/accessor.js.map +0 -1
  371. package/dist/esm/classic/buffer.js +0 -327
  372. package/dist/esm/classic/buffer.js.map +0 -1
  373. package/dist/esm/classic/typed-array-utils.js +0 -92
  374. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  375. package/dist/esm/context/context/create-browser-context.js +0 -53
  376. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  377. package/dist/esm/context/context/create-headless-context.js +0 -39
  378. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  379. package/dist/esm/context/context/webgl-checks.js +0 -31
  380. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  381. package/dist/esm/context/debug/spector.js +0 -64
  382. package/dist/esm/context/debug/spector.js.map +0 -1
  383. package/dist/esm/context/debug/webgl-developer-tools.js +0 -97
  384. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  385. package/dist/esm/context/parameters/unified-parameter-api.js +0 -55
  386. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  387. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -427
  388. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  389. package/dist/esm/context/polyfill/context-data.js +0 -12
  390. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  391. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -86
  392. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  393. package/dist/esm/context/polyfill/polyfill-context.js +0 -84
  394. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  395. package/dist/esm/context/polyfill/polyfill-table.js +0 -138
  396. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  397. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -265
  398. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  399. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -17
  400. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  401. package/dist/esm/context/state-tracker/track-context-state.js +0 -148
  402. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  403. package/dist/esm/context/state-tracker/with-parameters.js +0 -34
  404. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  405. package/dist/esm/index.js +0 -27
  406. package/dist/esm/index.js.map +0 -1
  407. package/dist/esm/init.js +0 -4
  408. package/dist/esm/init.js.map +0 -1
  409. package/dist/esm/types/webgl.js +0 -2
  410. package/dist/esm/types/webgl.js.map +0 -1
  411. package/dist/esm/types.js +0 -2
  412. package/dist/esm/types.js.map +0 -1
  413. package/dist/init.d.ts +0 -2
  414. package/dist/init.d.ts.map +0 -1
  415. package/dist/init.js +0 -3
  416. package/src/bundle.ts +0 -4
  417. package/src/init.ts +0 -4
@@ -1,41 +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
- _defineProperty(this, "device", void 0);
8
- _defineProperty(this, "commandBuffer", new CommandBuffer());
9
- this.device = device;
10
- }
11
- destroy() {}
12
- copyBufferToBuffer(options) {
13
- this.commandBuffer.commands.push({
14
- name: 'copy-buffer-to-buffer',
15
- options
16
- });
17
- }
18
- copyBufferToTexture(options) {
19
- this.commandBuffer.commands.push({
20
- name: 'copy-buffer-to-texture',
21
- options
22
- });
23
- }
24
- copyTextureToBuffer(options) {
25
- this.commandBuffer.commands.push({
26
- name: 'copy-texture-to-buffer',
27
- options
28
- });
29
- }
30
- copyTextureToTexture(options) {
31
- this.commandBuffer.commands.push({
32
- name: 'copy-texture-to-texture',
33
- options
34
- });
35
- }
36
- pushDebugGroup(groupLabel) {}
37
- popDebugGroup() {}
38
- insertDebugMarker(markerLabel) {}
39
- }
40
- ;
41
- //# sourceMappingURL=webgl-command-encoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgl-command-encoder.js","names":["CommandEncoder","CommandBuffer","WEBGLCommandEncoder","constructor","device","props","_defineProperty","destroy","copyBufferToBuffer","options","commandBuffer","commands","push","name","copyBufferToTexture","copyTextureToBuffer","copyTextureToTexture","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"sources":["../../../../src/adapter/resources/webgl-command-encoder.ts"],"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"],"mappings":";AAAA,SAAQA,cAAc,QAA4B,cAAc;AAQhE,OAAOC,aAAa,MAAM,wBAAwB;AAGlD,eAAe,MAAMC,mBAAmB,SAASF,cAAc,CAAC;EAK9DG,WAAWA,CAACC,MAAmB,EAAEC,KAA0B,EAAE;IAC3D,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA,wBAHU,IAAIL,aAAa,EAAE;IAI1C,IAAI,CAACG,MAAM,GAAGA,MAAM;EACtB;EAESG,OAAOA,CAAA,EAAS,CAAC;EAM1BC,kBAAkBA,CAACC,OAAkC,EAAQ;IAC3D,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,uBAAuB;MAAEJ;IAAO,CAAC,CAAC;EAC5E;EAEAK,mBAAmBA,CAACL,OAAmC,EAAE;IACvD,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,wBAAwB;MAAEJ;IAAO,CAAC,CAAC;EAC7E;EAEAM,mBAAmBA,CAACN,OAAmC,EAAQ;IAC7D,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,wBAAwB;MAAEJ;IAAO,CAAC,CAAC;EAC7E;EAEAO,oBAAoBA,CAACP,OAAoC,EAAQ;IAC/D,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACC,IAAI,CAAC;MAACC,IAAI,EAAE,yBAAyB;MAAEJ;IAAO,CAAC,CAAC;EAC9E;EAESQ,cAAcA,CAACC,UAAkB,EAAQ,CAAC;EAC1CC,aAAaA,CAAA,EAAG,CAAC;EAEjBC,iBAAiBA,CAACC,WAAmB,EAAQ,CAAC;AAWzD;AAAC"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=webgl-external-texture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgl-external-texture.js","names":[],"sources":["../../../../src/adapter/resources/webgl-external-texture.ts"],"sourcesContent":["/*\nexport default class WEBGLExternalTexture extends WEBGLTexture {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext | null;\n readonly handle: WebGLTexture;\n\n data;\n\n width: number = undefined;\n height: number = undefined;\n depth: number = undefined;\n\n format = undefined;\n type = undefined;\n dataFormat = undefined;\n border = undefined;\n mipmaps: boolean = undefined;\n\n textureUnit: number = undefined;\n\n sampler: WEBGLSampler;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n loaded = false;\n _video;\n\n readonly target: GL;\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_3D will give rise to an error\n // (while run-time).\n\n static isSupported(device: WebGLDevice, options?: TextureSupportOptions): boolean {\n const {format, linearFiltering} = options;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(device.gl, format);\n supported = supported && (!linearFiltering || isTextureFormatFilterable(device.gl, format));\n }\n return supported;\n }\n\n // eslint-disable-next-line max-statements\n constructor(device: Device | WebGLRenderingContext, props: TextureProps) {\n super(WebGLDevice.attach(device), {id: uid('texture'), ...props});\n\n this.target = getWebGLTextureTarget(props);\n\n this.device = WebGLDevice.attach(device);\n this.gl = this.device.gl;\n this.gl2 = this.device.gl2;\n this.handle = this.props.handle || this.gl.createTexture();\n\n let data = props.data;\n\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-expect-error\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n update(): this {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-expect-error\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n\n*/"],"mappings":""}
@@ -1,207 +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
- constructor(device, props) {
12
- super(device, props);
13
- _defineProperty(this, "device", void 0);
14
- _defineProperty(this, "gl", void 0);
15
- _defineProperty(this, "handle", void 0);
16
- _defineProperty(this, "colorAttachments", []);
17
- _defineProperty(this, "depthStencilAttachment", null);
18
- _defineProperty(this, "_ownResources", []);
19
- this.device = device;
20
- this.gl = device.gl;
21
- this.handle = this.props.handle !== undefined ? this.props.handle : this.gl.createFramebuffer();
22
- if (this.handle) {
23
- this.handle.__SPECTOR_Metadata = {
24
- id: this.props.id,
25
- props: this.props
26
- };
27
- }
28
- this.colorAttachments = this._createColorAttachments();
29
- this.depthStencilAttachment = this._createDepthStencilAttachment();
30
- const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
31
- for (let i = 0; i < this.colorAttachments.length; ++i) {
32
- const attachment = this.colorAttachments[i];
33
- const attachmentPoint = GL.COLOR_ATTACHMENT0 + i;
34
- if (attachment) {
35
- this._attachOne(attachmentPoint, attachment);
36
- }
37
- }
38
- if (this.props.depthStencilAttachment) {
39
- this._attachOne(getWebGLDepthStencilAttachment(this.depthStencilAttachment.format), this.depthStencilAttachment);
40
- }
41
- this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
42
- if (props.check !== false) {
43
- this._checkStatus();
44
- }
45
- }
46
- destroy() {
47
- if (this.handle !== null) {
48
- for (const resource of this._ownResources) {
49
- resource.destroy();
50
- }
51
- this.gl.deleteFramebuffer(this.handle);
52
- this.destroyed = true;
53
- }
54
- }
55
- _checkStatus() {
56
- const {
57
- gl
58
- } = this;
59
- const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);
60
- const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);
61
- gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);
62
- if (status !== gl.FRAMEBUFFER_COMPLETE) {
63
- throw new Error("Framebuffer ".concat(_getFrameBufferStatus(status)));
64
- }
65
- }
66
- _createColorAttachments() {
67
- return this.props.colorAttachments.map(colorAttachment => {
68
- if (!colorAttachment) {
69
- return undefined;
70
- }
71
- if (colorAttachment instanceof WebGLTexture) {
72
- return colorAttachment;
73
- }
74
- return this._createColorAttachment(colorAttachment, this.width, this.height);
75
- });
76
- }
77
- _createColorAttachment(format, width, height) {
78
- const texture = this.device._createTexture({
79
- id: "".concat(this.id, "-color"),
80
- data: null,
81
- format,
82
- width,
83
- height,
84
- mipmaps: false,
85
- sampler: {
86
- minFilter: 'linear',
87
- magFilter: 'linear',
88
- addressModeU: 'clamp-to-edge',
89
- addressModeV: 'clamp-to-edge'
90
- }
91
- });
92
- this._ownResources.push(texture);
93
- return texture;
94
- }
95
- _createDepthStencilAttachment() {
96
- if (!this.props.depthStencilAttachment) {
97
- return undefined;
98
- }
99
- if (this.props.depthStencilAttachment instanceof Renderbuffer) {
100
- return this.props.depthStencilAttachment;
101
- }
102
- if (this.props.depthStencilAttachment instanceof Texture) {
103
- return this.props.depthStencilAttachment;
104
- }
105
- const format = this.props.depthStencilAttachment;
106
- const webglFormat = getWebGLTextureFormat(this.gl, format);
107
- const texture = new Renderbuffer(this.device, {
108
- id: "".concat(this.id, "-depth-stencil"),
109
- format: webglFormat,
110
- width: this.width,
111
- height: this.height
112
- });
113
- this._ownResources.push(texture);
114
- return texture;
115
- }
116
- _resizeAttachments(width, height) {
117
- var _this$depthStencilAtt;
118
- if (this.handle === null) {
119
- this.width = this.gl.drawingBufferWidth;
120
- this.height = this.gl.drawingBufferHeight;
121
- return this;
122
- }
123
- if (width === undefined) {
124
- width = this.gl.drawingBufferWidth;
125
- }
126
- if (height === undefined) {
127
- height = this.gl.drawingBufferHeight;
128
- }
129
- if (width !== this.width && height !== this.height) {
130
- log.log(2, "Resizing framebuffer ".concat(this.id, " to ").concat(width, "x").concat(height))();
131
- }
132
- for (const colorAttachment of this.colorAttachments) {
133
- colorAttachment.resize({
134
- width,
135
- height
136
- });
137
- }
138
- (_this$depthStencilAtt = this.depthStencilAttachment) === null || _this$depthStencilAtt === void 0 ? void 0 : _this$depthStencilAtt.resize({
139
- width,
140
- height
141
- });
142
- return this;
143
- }
144
- _attachOne(attachmentPoint, attachment) {
145
- if (attachment instanceof Renderbuffer) {
146
- this._attachRenderbuffer(attachmentPoint, attachment);
147
- return attachment;
148
- } else if (Array.isArray(attachment)) {
149
- const [texture, layer = 0, level = 0] = attachment;
150
- this._attachTexture(attachmentPoint, texture, layer, level);
151
- return texture;
152
- } else if (attachment instanceof WebGLTexture) {
153
- this._attachTexture(attachmentPoint, attachment, 0, 0);
154
- return attachment;
155
- }
156
- throw new Error('attach');
157
- }
158
- _attachRenderbuffer(attachment, renderbuffer) {
159
- this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);
160
- }
161
- _attachTexture(attachment, texture, layer, level) {
162
- const {
163
- gl,
164
- gl2
165
- } = this.device;
166
- gl.bindTexture(texture.target, texture.handle);
167
- switch (texture.target) {
168
- case GL.TEXTURE_2D_ARRAY:
169
- case GL.TEXTURE_3D:
170
- this.device.assertWebGL2();
171
- gl2 === null || gl2 === void 0 ? void 0 : gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);
172
- break;
173
- case GL.TEXTURE_CUBE_MAP:
174
- const face = mapIndexToCubeMapFace(layer);
175
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);
176
- break;
177
- case GL.TEXTURE_2D:
178
- gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);
179
- break;
180
- default:
181
- assert(false, 'Illegal texture type');
182
- }
183
- gl.bindTexture(texture.target, null);
184
- }
185
- }
186
- function mapIndexToCubeMapFace(layer) {
187
- return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
188
- }
189
- function _getFrameBufferStatus(status) {
190
- switch (status) {
191
- case GL.FRAMEBUFFER_COMPLETE:
192
- return 'success';
193
- case GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
194
- return 'Mismatched attachments';
195
- case GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
196
- return 'No attachments';
197
- case GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
198
- return 'Height/width mismatch';
199
- case GL.FRAMEBUFFER_UNSUPPORTED:
200
- return 'Unsupported or split attachments';
201
- case GL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
202
- return 'Samples mismatch';
203
- default:
204
- return "".concat(status);
205
- }
206
- }
207
- //# sourceMappingURL=webgl-framebuffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgl-framebuffer.js","names":["Framebuffer","Texture","log","assert","GL","WebGLTexture","Renderbuffer","getWebGLTextureFormat","getWebGLDepthStencilAttachment","WEBGLFramebuffer","texture","colorAttachments","constructor","device","props","_defineProperty","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","concat","_getFrameBufferStatus","map","colorAttachment","_createColorAttachment","width","height","_createTexture","data","mipmaps","sampler","minFilter","magFilter","addressModeU","addressModeV","push","webglFormat","_resizeAttachments","_this$depthStencilAtt","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"],"sources":["../../../../src/adapter/resources/webgl-framebuffer.ts"],"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"],"mappings":"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"}
@@ -1,14 +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
- _defineProperty(this, "device", void 0);
7
- this.device = device;
8
- }
9
- end() {}
10
- pushDebugGroup(groupLabel) {}
11
- popDebugGroup() {}
12
- insertDebugMarker(markerLabel) {}
13
- }
14
- //# sourceMappingURL=webgl-render-pass.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgl-render-pass.js","names":["RenderPass","WEBGLRenderPass","constructor","device","props","_defineProperty","end","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"sources":["../../../../src/adapter/resources/webgl-render-pass.ts"],"sourcesContent":["import {RenderPass, RenderPassProps} from '@luma.gl/api';\nimport WebGLDevice from '../webgl-device';\n\nexport default class WEBGLRenderPass extends RenderPass {\n readonly device: WebGLDevice;\n\n constructor(device: WebGLDevice, props: RenderPassProps) {\n super(device, props);\n this.device = device;\n }\n\n end(): void {}\n\n pushDebugGroup(groupLabel: string): void {}\n popDebugGroup(): void {}\n insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n\n // beginOcclusionQuery(queryIndex: number): void;\n // endOcclusionQuery(): void;\n\n // executeBundles(bundles: Iterable<GPURenderBundle>): void;\n}\n"],"mappings":";AAAA,SAAQA,UAAU,QAAwB,cAAc;AAGxD,eAAe,MAAMC,eAAe,SAASD,UAAU,CAAC;EAGtDE,WAAWA,CAACC,MAAmB,EAAEC,KAAsB,EAAE;IACvD,KAAK,CAACD,MAAM,EAAEC,KAAK,CAAC;IAACC,eAAA;IACrB,IAAI,CAACF,MAAM,GAAGA,MAAM;EACtB;EAEAG,GAAGA,CAAA,EAAS,CAAC;EAEbC,cAAcA,CAACC,UAAkB,EAAQ,CAAC;EAC1CC,aAAaA,CAAA,EAAS,CAAC;EACvBC,iBAAiBA,CAACC,WAAmB,EAAQ,CAAC;AAQhD"}
@@ -1,311 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { RenderPipeline, cast, log, decodeVertexFormat } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getWebGLDataType } from '../converters/texture-formats';
5
- import { getShaderLayout } from '../helpers/get-shader-layout';
6
- import { withDeviceParameters, withGLParameters } from '../converters/device-parameters';
7
- import { setUniform } from '../helpers/set-uniform';
8
- import WEBGLBuffer from './webgl-buffer';
9
- import WEBGLTexture from './webgl-texture';
10
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
11
- const LOG_PROGRAM_PERF_PRIORITY = 4;
12
- export default class WEBGLRenderPipeline extends RenderPipeline {
13
- constructor(device, props) {
14
- super(device, props);
15
- _defineProperty(this, "device", void 0);
16
- _defineProperty(this, "handle", void 0);
17
- _defineProperty(this, "vs", void 0);
18
- _defineProperty(this, "fs", void 0);
19
- _defineProperty(this, "layout", void 0);
20
- _defineProperty(this, "varyings", null);
21
- _defineProperty(this, "vertexArrayObject", void 0);
22
- _defineProperty(this, "_indexBuffer", void 0);
23
- _defineProperty(this, "uniforms", {});
24
- _defineProperty(this, "bindings", {});
25
- _defineProperty(this, "_textureUniforms", {});
26
- _defineProperty(this, "_textureIndexCounter", 0);
27
- _defineProperty(this, "_uniformCount", 0);
28
- _defineProperty(this, "_uniformSetters", {});
29
- this.device = device;
30
- this.handle = this.props.handle || this.device.gl.createProgram();
31
- this.handle.__SPECTOR_Metadata = {
32
- id: this.props.id
33
- };
34
- this.vs = cast(props.vs);
35
- this.fs = cast(props.fs);
36
- const {
37
- varyings,
38
- bufferMode = GL.SEPARATE_ATTRIBS
39
- } = props;
40
- if (varyings && varyings.length > 0) {
41
- var _this$device$gl;
42
- this.device.assertWebGL2();
43
- this.varyings = varyings;
44
- (_this$device$gl = this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
45
- }
46
- this._compileAndLink();
47
- this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);
48
- this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
49
- }
50
- destroy() {
51
- if (this.handle) {
52
- this.device.gl.deleteProgram(this.handle);
53
- this.destroyed = true;
54
- }
55
- }
56
- setIndexBuffer(indexBuffer) {
57
- const webglBuffer = cast(indexBuffer);
58
- this.vertexArrayObject.setElementBuffer(webglBuffer);
59
- this._indexBuffer = indexBuffer;
60
- }
61
- setAttributes(attributes) {
62
- for (const [name, buffer] of Object.entries(attributes)) {
63
- const webglBuffer = cast(buffer);
64
- const attribute = getAttributeLayout(this.layout, name);
65
- if (!attribute) {
66
- log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
67
- continue;
68
- }
69
- const decoded = decodeVertexFormat(attribute.format);
70
- const {
71
- type: typeString,
72
- components: size,
73
- byteLength: stride,
74
- normalized,
75
- integer
76
- } = decoded;
77
- const divisor = attribute.stepMode === 'instance' ? 1 : 0;
78
- const type = getWebGLDataType(typeString);
79
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
80
- size,
81
- type,
82
- stride,
83
- offset: 0,
84
- normalized,
85
- integer,
86
- divisor
87
- });
88
- }
89
- }
90
- setBindings(bindings) {
91
- for (const [name, value] of Object.entries(bindings)) {
92
- const binding = this.layout.bindings.find(binding => binding.name === name);
93
- if (!binding) {
94
- log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(this.id))();
95
- continue;
96
- }
97
- if (!value) {
98
- log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(this.id))();
99
- }
100
- switch (binding.type) {
101
- case 'uniform':
102
- if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
103
- throw new Error('buffer value');
104
- }
105
- break;
106
- case 'texture':
107
- if (!(value instanceof WEBGLTexture)) {
108
- throw new Error('texture value');
109
- }
110
- break;
111
- case 'sampler':
112
- log.warn("Ignoring sampler ".concat(name))();
113
- break;
114
- default:
115
- throw new Error(binding.type);
116
- }
117
- this.bindings[name] = value;
118
- }
119
- }
120
- setUniforms(uniforms) {
121
- Object.assign(this.uniforms, uniforms);
122
- }
123
- draw(options) {
124
- var _this$_indexBuffer;
125
- const {
126
- renderPass = this.device.getDefaultRenderPass(),
127
- vertexCount,
128
- instanceCount,
129
- firstVertex = 0
130
- } = options;
131
- const drawMode = getDrawMode(this.props.topology);
132
- const isIndexed = Boolean(this._indexBuffer);
133
- const indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
134
- const isInstanced = Number(options.instanceCount) > 0;
135
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
136
- return false;
137
- }
138
- this.device.gl.useProgram(this.handle);
139
- this.vertexArrayObject.bind(() => {
140
- const primitiveMode = getGLPrimitive(this.props.topology);
141
- const transformFeedback = null;
142
- if (transformFeedback) {
143
- transformFeedback.begin(primitiveMode);
144
- }
145
- this._applyBindings();
146
- this._applyUniforms();
147
- withDeviceParameters(this.device, this.props.parameters, () => {
148
- withGLParameters(this.device, {
149
- framebuffer: renderPass.props.framebuffer
150
- }, () => {
151
- if (isIndexed && isInstanced) {
152
- var _this$device$gl2;
153
- (_this$device$gl2 = this.device.gl2) === null || _this$device$gl2 === void 0 ? void 0 : _this$device$gl2.drawElementsInstanced(drawMode, vertexCount || 0, indexType, firstVertex, instanceCount || 0);
154
- } else if (isIndexed) {
155
- this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex);
156
- } else if (isInstanced) {
157
- var _this$device$gl3;
158
- (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
159
- } else {
160
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
161
- }
162
- });
163
- if (transformFeedback) {
164
- transformFeedback.end();
165
- }
166
- });
167
- });
168
- return true;
169
- }
170
- _compileAndLink() {
171
- const {
172
- gl
173
- } = this.device;
174
- gl.attachShader(this.handle, this.vs.handle);
175
- gl.attachShader(this.handle, this.fs.handle);
176
- log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
177
- gl.linkProgram(this.handle);
178
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
179
- if (gl.debug || log.level > 0) {
180
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
181
- if (!linked) {
182
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
183
- }
184
- gl.validateProgram(this.handle);
185
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
186
- if (!validated) {
187
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
188
- }
189
- }
190
- }
191
- _areTexturesRenderable() {
192
- let texturesRenderable = true;
193
- for (const [, texture] of Object.entries(this._textureUniforms)) {
194
- texture.update();
195
- texturesRenderable = texturesRenderable && texture.loaded;
196
- }
197
- for (const [, texture] of Object.entries(this.bindings)) {
198
- if (texture.loaded !== undefined) {
199
- texturesRenderable = texturesRenderable && texture.loaded;
200
- }
201
- }
202
- return texturesRenderable;
203
- }
204
- _applyBindings() {
205
- this.device.gl.useProgram(this.handle);
206
- const {
207
- gl2
208
- } = this.device;
209
- if (!gl2) {
210
- throw new Error('bindings');
211
- }
212
- let textureUnit = 0;
213
- let uniformBufferIndex = 0;
214
- for (const binding of this.layout.bindings) {
215
- const value = this.bindings[binding.name];
216
- if (!value) {
217
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
218
- }
219
- switch (binding.type) {
220
- case 'uniform':
221
- const {
222
- name
223
- } = binding;
224
- const location = gl2.getUniformBlockIndex(this.handle, name);
225
- if (location === GL.INVALID_INDEX) {
226
- throw new Error("Invalid uniform block name ".concat(name));
227
- }
228
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
229
- if (value instanceof WEBGLBuffer) {
230
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
231
- } else {
232
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
233
- }
234
- uniformBufferIndex += 1;
235
- break;
236
- case 'texture':
237
- if (!(value instanceof WEBGLTexture)) {
238
- throw new Error('texture');
239
- }
240
- const texture = value;
241
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
242
- gl2.bindTexture(texture.target, texture.handle);
243
- textureUnit += 1;
244
- break;
245
- case 'sampler':
246
- break;
247
- case 'storage':
248
- case 'read-only-storage':
249
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
250
- }
251
- }
252
- }
253
- _applyUniforms() {
254
- for (const uniformLayout of this.layout.uniforms || []) {
255
- const {
256
- name,
257
- location,
258
- type,
259
- textureUnit
260
- } = uniformLayout;
261
- const value = this.uniforms[name] || textureUnit;
262
- if (value !== undefined) {
263
- setUniform(this.device.gl, location, type, value);
264
- }
265
- }
266
- }
267
- }
268
- function getDrawMode(topology) {
269
- switch (topology) {
270
- case 'point-list':
271
- return GL.POINTS;
272
- case 'line-list':
273
- return GL.LINES;
274
- case 'line-strip':
275
- return GL.LINE_STRIP;
276
- case 'line-loop':
277
- return GL.LINE_LOOP;
278
- case 'triangle-list':
279
- return GL.TRIANGLES;
280
- case 'triangle-strip':
281
- return GL.TRIANGLE_STRIP;
282
- case 'triangle-fan':
283
- return GL.TRIANGLE_FAN;
284
- default:
285
- throw new Error(topology);
286
- }
287
- }
288
- function getGLPrimitive(topology) {
289
- switch (topology) {
290
- case 'point-list':
291
- return GL.POINTS;
292
- case 'line-list':
293
- return GL.LINES;
294
- case 'line-strip':
295
- return GL.LINES;
296
- case 'line-loop':
297
- return GL.LINES;
298
- case 'triangle-list':
299
- return GL.TRIANGLES;
300
- case 'triangle-strip':
301
- return GL.TRIANGLES;
302
- case 'triangle-fan':
303
- return GL.TRIANGLES;
304
- default:
305
- throw new Error(topology);
306
- }
307
- }
308
- function getAttributeLayout(layout, name) {
309
- return layout.attributes.find(binding => binding.name === name) || null;
310
- }
311
- //# sourceMappingURL=webgl-render-pipeline.js.map