@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,338 +1,311 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import { RenderPipeline, cast, log, decodeVertexFormat } from '@luma.gl/api';
2
3
  import GL from '@luma.gl/constants';
3
- import { getWebGLDataType } from '../converters/texture-formats.js';
4
- import { getShaderLayout } from '../helpers/get-shader-layout.js';
5
- import { withDeviceParameters, withGLParameters } from '../converters/device-parameters.js';
6
- import { setUniform } from '../helpers/set-uniform.js';
7
- import WEBGLBuffer from './webgl-buffer.js';
8
- import WEBGLTexture from './webgl-texture.js';
9
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object.js';
4
+ import { getWebGLDataType } from "../converters/texture-formats.js";
5
+ import { getShaderLayout } from "../helpers/get-shader-layout.js";
6
+ import { withDeviceParameters, withGLParameters } from "../converters/device-parameters.js";
7
+ import { setUniform } from "../helpers/set-uniform.js";
8
+ import WEBGLBuffer from "./webgl-buffer.js";
9
+ import WEBGLTexture from "./webgl-texture.js";
10
+ import WEBGLVertexArrayObject from "../objects/webgl-vertex-array-object.js";
10
11
  const LOG_PROGRAM_PERF_PRIORITY = 4;
11
- /** Creates a new render pipeline */
12
12
  export default class WEBGLRenderPipeline extends RenderPipeline {
13
- constructor(device, props) {
14
- super(device, props);
15
- // configuration: ProgramConfiguration;
16
- // Experimental flag to avoid deleting Program object while it is cached
17
- this.varyings = null;
18
- this.uniforms = {};
19
- this.bindings = {};
20
- this._textureUniforms = {};
21
- this._textureIndexCounter = 0;
22
- this._uniformCount = 0;
23
- this._uniformSetters = {}; // TODO are these used?
24
- this.device = device;
25
- this.handle = this.props.handle || this.device.gl.createProgram();
26
- // @ts-expect-error
27
- this.handle.__SPECTOR_Metadata = { id: this.props.id };
28
- // Create shaders if needed
29
- this.vs = cast(props.vs);
30
- this.fs = cast(props.fs);
31
- // assert(this.vs.stage === 'vertex');
32
- // assert(this.fs.stage === 'fragment');
33
- // Setup varyings if supplied
34
- // @ts-expect-error WebGL only
35
- const { varyings, bufferMode = GL.SEPARATE_ATTRIBS } = props;
36
- if (varyings && varyings.length > 0) {
37
- this.device.assertWebGL2();
38
- this.varyings = varyings;
39
- this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);
40
- }
41
- this._compileAndLink();
42
- this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);
43
- this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
44
- }
45
- destroy() {
46
- if (this.handle) {
47
- this.device.gl.deleteProgram(this.handle);
48
- // this.handle = null;
49
- this.destroyed = true;
50
- }
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.device.setSpectorMetadata(this.handle, {
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);
51
45
  }
52
- setIndexBuffer(indexBuffer) {
53
- const webglBuffer = cast(indexBuffer);
54
- this.vertexArrayObject.setElementBuffer(webglBuffer);
55
- this._indexBuffer = indexBuffer;
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;
56
54
  }
57
- /** @todo needed for portable model */
58
- setAttributes(attributes) {
59
- for (const [name, buffer] of Object.entries(attributes)) {
60
- const webglBuffer = cast(buffer);
61
- const attribute = getAttributeLayout(this.layout, name);
62
- if (!attribute) {
63
- log.warn(`Ignoring buffer supplied for unknown attribute "${name}" in pipeline "${this.id}" (buffer "${buffer.id}")`)();
64
- continue;
65
- }
66
- const decoded = decodeVertexFormat(attribute.format);
67
- const { type: typeString, components: size, byteLength: stride, normalized, integer } = decoded;
68
- const divisor = attribute.stepMode === 'instance' ? 1 : 0;
69
- const type = getWebGLDataType(typeString);
70
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
71
- size,
72
- type,
73
- stride,
74
- offset: 0,
75
- normalized,
76
- integer,
77
- divisor
78
- });
79
- }
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
+ });
80
88
  }
81
- /** @todo needed for portable model */
82
- setBindings(bindings) {
83
- // if (log.priority >= 2) {
84
- // checkUniformValues(uniforms, this.id, this._uniformSetters);
85
- // }
86
- for (const [name, value] of Object.entries(bindings)) {
87
- const binding = this.layout.bindings.find((binding) => binding.name === name);
88
- if (!binding) {
89
- log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();
90
- continue;
91
- }
92
- if (!value) {
93
- log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();
94
- }
95
- switch (binding.type) {
96
- case 'uniform':
97
- // @ts-expect-error
98
- if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
99
- throw new Error('buffer value');
100
- }
101
- break;
102
- case 'texture':
103
- if (!(value instanceof WEBGLTexture)) {
104
- throw new Error('texture value');
105
- }
106
- break;
107
- case 'sampler':
108
- log.warn(`Ignoring sampler ${name}`)();
109
- break;
110
- default:
111
- throw new Error(binding.type);
112
- }
113
- this.bindings[name] = value;
114
- }
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;
115
118
  }
116
- setUniforms(uniforms) {
117
- // TODO - check against layout
118
- Object.assign(this.uniforms, uniforms);
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;
119
137
  }
120
- /** @todo needed for portable model
121
- * @note The WebGL API is offers many ways to draw things
122
- * This function unifies those ways into a single call using common parameters with sane defaults
123
- */
124
- draw(options) {
125
- const { renderPass = this.device.getDefaultRenderPass(), vertexCount,
126
- // indexCount,
127
- instanceCount, firstVertex = 0,
128
- // firstIndex,
129
- // firstInstance,
130
- // baseVertex
131
- } = options;
132
- const drawMode = getDrawMode(this.props.topology);
133
- const isIndexed = Boolean(this._indexBuffer);
134
- const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
135
- const isInstanced = Number(options.instanceCount) > 0;
136
- // Avoid WebGL draw call when not rendering any data or values are incomplete
137
- // Note: async textures set as uniforms might still be loading.
138
- // Now that all uniforms have been updated, check if any texture
139
- // in the uniforms is not yet initialized, then we don't draw
140
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
141
- // (isInstanced && instanceCount === 0)
142
- return false;
143
- }
144
- this.device.gl.useProgram(this.handle);
145
- this.vertexArrayObject.bind(() => {
146
- const primitiveMode = getGLPrimitive(this.props.topology);
147
- const transformFeedback = null;
148
- if (transformFeedback) {
149
- transformFeedback.begin(primitiveMode);
150
- }
151
- // We have to apply bindings before every draw call since other draw calls will overwrite
152
- this._applyBindings();
153
- this._applyUniforms();
154
- // TODO - double context push/pop
155
- withDeviceParameters(this.device, this.props.parameters, () => {
156
- withGLParameters(this.device, { framebuffer: renderPass.props.framebuffer }, () => {
157
- // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
158
- if (isIndexed && isInstanced) {
159
- // ANGLE_instanced_arrays extension
160
- this.device.gl2?.drawElementsInstanced(drawMode, vertexCount || 0, // indexCount?
161
- indexType, firstVertex, instanceCount || 0);
162
- // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
163
- // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
164
- }
165
- else if (isIndexed) {
166
- this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?
167
- }
168
- else if (isInstanced) {
169
- this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
170
- }
171
- else {
172
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
173
- }
174
- });
175
- if (transformFeedback) {
176
- transformFeedback.end();
177
- }
178
- });
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
+ }
179
162
  });
180
- return true;
181
- }
182
- // setAttributes(attributes: Record<string, Buffer>): void {}
183
- // setBindings(bindings: Record<string, Binding>): void {}
184
- _compileAndLink() {
185
- const { gl } = this.device;
186
- gl.attachShader(this.handle, this.vs.handle);
187
- gl.attachShader(this.handle, this.fs.handle);
188
- log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
189
- gl.linkProgram(this.handle);
190
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
191
- // Avoid checking program linking error in production
192
- // @ts-expect-error
193
- if (gl.debug || log.level > 0) {
194
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
195
- if (!linked) {
196
- throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);
197
- }
198
- gl.validateProgram(this.handle);
199
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
200
- if (!validated) {
201
- throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);
202
- }
163
+ if (transformFeedback) {
164
+ transformFeedback.end();
203
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
+ }
204
189
  }
205
- // PRIVATE METHODS
206
- /**
207
- * Checks if all texture-values uniforms are renderable (i.e. loaded)
208
- * Update a texture if needed (e.g. from video)
209
- * Note: This is currently done before every draw call
210
- */
211
- _areTexturesRenderable() {
212
- let texturesRenderable = true;
213
- for (const [, texture] of Object.entries(this._textureUniforms)) {
214
- texture.update();
215
- texturesRenderable = texturesRenderable && texture.loaded;
216
- }
217
- for (const [, texture] of Object.entries(this.bindings)) {
218
- // texture.update();
219
- if (texture.loaded !== undefined) {
220
- texturesRenderable = texturesRenderable && texture.loaded;
221
- }
222
- }
223
- return texturesRenderable;
190
+ }
191
+ _areTexturesRenderable() {
192
+ let texturesRenderable = true;
193
+ for (const [, texture] of Object.entries(this._textureUniforms)) {
194
+ texture.update();
195
+ texturesRenderable = texturesRenderable && texture.loaded;
224
196
  }
225
- /** Apply any bindings */
226
- _applyBindings() {
227
- this.device.gl.useProgram(this.handle);
228
- const { gl2 } = this.device;
229
- if (!gl2) {
230
- throw new Error('bindings');
231
- }
232
- let textureUnit = 0;
233
- let uniformBufferIndex = 0;
234
- for (const binding of this.layout.bindings) {
235
- const value = this.bindings[binding.name];
236
- if (!value) {
237
- throw new Error(`No value for binding ${binding.name} in ${this.id}`);
238
- }
239
- switch (binding.type) {
240
- case 'uniform':
241
- // Set buffer
242
- const { name } = binding;
243
- const location = gl2.getUniformBlockIndex(this.handle, name);
244
- if (location === GL.INVALID_INDEX) {
245
- throw new Error(`Invalid uniform block name ${name}`);
246
- }
247
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
248
- // console.debug(binding, location);
249
- if (value instanceof WEBGLBuffer) {
250
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
251
- }
252
- else {
253
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
254
- }
255
- uniformBufferIndex += 1;
256
- break;
257
- case 'texture':
258
- if (!(value instanceof WEBGLTexture)) {
259
- throw new Error('texture');
260
- }
261
- const texture = value;
262
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
263
- gl2.bindTexture(texture.target, texture.handle);
264
- // gl2.bindSampler(textureUnit, sampler.handle);
265
- textureUnit += 1;
266
- break;
267
- case 'sampler':
268
- // ignore
269
- break;
270
- case 'storage':
271
- case 'read-only-storage':
272
- throw new Error(`binding type '${binding.type}' not supported in WebGL`);
273
- }
274
- }
197
+ for (const [, texture] of Object.entries(this.bindings)) {
198
+ if (texture.loaded !== undefined) {
199
+ texturesRenderable = texturesRenderable && texture.loaded;
200
+ }
275
201
  }
276
- _applyUniforms() {
277
- for (const uniformLayout of this.layout.uniforms || []) {
278
- const { name, location, type, textureUnit } = uniformLayout;
279
- const value = this.uniforms[name] || textureUnit;
280
- if (value !== undefined) {
281
- setUniform(this.device.gl, location, type, value);
282
- }
283
- }
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
+ }
284
265
  }
266
+ }
285
267
  }
286
- /** Get the primitive type for transform feedback */
287
268
  function getDrawMode(topology) {
288
- // prettier-ignore
289
- switch (topology) {
290
- case 'point-list': return GL.POINTS;
291
- case 'line-list': return GL.LINES;
292
- case 'line-strip': return GL.LINE_STRIP;
293
- case 'line-loop': return GL.LINE_LOOP;
294
- case 'triangle-list': return GL.TRIANGLES;
295
- case 'triangle-strip': return GL.TRIANGLE_STRIP;
296
- case 'triangle-fan': return GL.TRIANGLE_FAN;
297
- default: throw new Error(topology);
298
- }
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
+ }
299
287
  }
300
- /** Get the primitive type for transform feedback */
301
288
  function getGLPrimitive(topology) {
302
- // prettier-ignore
303
- switch (topology) {
304
- case 'point-list': return GL.POINTS;
305
- case 'line-list': return GL.LINES;
306
- case 'line-strip': return GL.LINES;
307
- case 'line-loop': return GL.LINES;
308
- case 'triangle-list': return GL.TRIANGLES;
309
- case 'triangle-strip': return GL.TRIANGLES;
310
- case 'triangle-fan': return GL.TRIANGLES;
311
- default: throw new Error(topology);
312
- }
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
+ }
313
307
  }
314
- // function getAttributesByLocation(
315
- // attributes: Record<string, Buffer>,
316
- // layout: ShaderLayout
317
- // ): Record<number, Buffer> {
318
- // const byLocation: Record<number, Buffer> = {};
319
- // for (const [name, buffer] of Object.entries(attributes)) {
320
- // const attribute = getAttributeLayout(layout, name);
321
- // if (attribute) {
322
- // byLocation[attribute.location] = buffer;
323
- // }
324
- // }
325
- // return byLocation;
326
- // }
327
308
  function getAttributeLayout(layout, name) {
328
- return layout.attributes.find((binding) => binding.name === name) || null;
329
- }
330
- /* TODO
331
- function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
332
- const binding = layout.bindings.find((binding) => binding.name === name);
333
- if (!binding) {
334
- throw new Error(`Unknown binding ${name}`);
335
- }
336
- return binding;
309
+ return layout.attributes.find(binding => binding.name === name) || null;
337
310
  }
338
- */
311
+ //# sourceMappingURL=webgl-render-pipeline.js.map