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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) 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/.DS_Store +0 -0
  162. package/src/adapter/.DS_Store +0 -0
  163. package/src/adapter/converters/device-parameters.ts +5 -2
  164. package/src/adapter/converters/sampler-parameters.ts +4 -2
  165. package/src/adapter/converters/texture-formats.ts +3 -1
  166. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  167. package/src/adapter/helpers/get-shader-info.ts +1 -1
  168. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  169. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  170. package/src/adapter/helpers/set-uniform.ts +2 -0
  171. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  172. package/src/adapter/objects/webgl-resource.ts +1 -1
  173. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  174. package/src/adapter/resources/webgl-buffer.ts +5 -5
  175. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  176. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  177. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  178. package/src/adapter/resources/webgl-shader.ts +1 -1
  179. package/src/adapter/resources/webgl-texture.ts +8 -9
  180. package/src/adapter/webgl-canvas-context.ts +2 -2
  181. package/src/adapter/webgl-device.ts +12 -2
  182. package/src/classic/accessor.ts +1 -1
  183. package/src/classic/buffer.ts +3 -3
  184. package/src/classic/typed-array-utils.ts +1 -1
  185. package/src/context/.DS_Store +0 -0
  186. package/src/context/context/create-browser-context.ts +4 -2
  187. package/src/context/context/create-headless-context.ts +2 -2
  188. package/src/context/debug/spector.ts +5 -4
  189. package/src/context/debug/webgl-developer-tools.ts +1 -0
  190. package/src/context/polyfill/polyfill-table.ts +1 -0
  191. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  192. package/src/context/state-tracker/track-context-state.ts +6 -5
  193. package/src/context/state-tracker/with-parameters.ts +1 -1
  194. package/src/index.ts +1 -5
  195. package/src/types/webgl.ts +2 -0
  196. package/dist/bundle.d.ts +0 -2
  197. package/dist/bundle.d.ts.map +0 -1
  198. package/dist/bundle.js +0 -4
  199. package/dist/dist.min.js +0 -1
  200. package/dist/es5/adapter/converters/device-parameters.js +0 -139
  201. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -151
  203. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  204. package/dist/es5/adapter/converters/sampler-parameters.js +0 -182
  205. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/es5/adapter/converters/texture-formats.js +0 -950
  207. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/es5/adapter/converters/vertex-formats.js +0 -36
  209. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  210. package/dist/es5/adapter/device-helpers/device-features.js +0 -121
  211. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  212. package/dist/es5/adapter/device-helpers/device-limits.js +0 -54
  213. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  214. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -49
  215. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  216. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -15
  217. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  218. package/dist/es5/adapter/helpers/attribute-utils.js +0 -69
  219. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  220. package/dist/es5/adapter/helpers/get-shader-info.js +0 -31
  221. package/dist/es5/adapter/helpers/get-shader-info.js.map +0 -1
  222. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -311
  223. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  224. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -54
  225. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  226. package/dist/es5/adapter/helpers/set-uniform.js +0 -92
  227. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  228. package/dist/es5/adapter/helpers/uniforms.js +0 -88
  229. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  230. package/dist/es5/adapter/objects/constants-to-keys.js +0 -43
  231. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  232. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -122
  233. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  234. package/dist/es5/adapter/objects/webgl-resource.js +0 -233
  235. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  236. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -109
  237. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  238. package/dist/es5/adapter/resources/webgl-buffer.js +0 -196
  239. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  240. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -70
  241. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  242. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -80
  243. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  244. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  245. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  246. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -275
  247. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -45
  249. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  250. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -385
  251. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  252. package/dist/es5/adapter/resources/webgl-sampler.js +0 -75
  253. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  254. package/dist/es5/adapter/resources/webgl-shader.js +0 -111
  255. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  256. package/dist/es5/adapter/resources/webgl-texture.js +0 -826
  257. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  258. package/dist/es5/adapter/webgl-canvas-context.js +0 -72
  259. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  260. package/dist/es5/adapter/webgl-device.js +0 -387
  261. package/dist/es5/adapter/webgl-device.js.map +0 -1
  262. package/dist/es5/bundle.js +0 -6
  263. package/dist/es5/bundle.js.map +0 -1
  264. package/dist/es5/classic/accessor.js +0 -151
  265. package/dist/es5/classic/accessor.js.map +0 -1
  266. package/dist/es5/classic/buffer.js +0 -398
  267. package/dist/es5/classic/buffer.js.map +0 -1
  268. package/dist/es5/classic/typed-array-utils.js +0 -99
  269. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  270. package/dist/es5/context/context/create-browser-context.js +0 -66
  271. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  272. package/dist/es5/context/context/create-headless-context.js +0 -47
  273. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  274. package/dist/es5/context/context/webgl-checks.js +0 -44
  275. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  276. package/dist/es5/context/debug/spector.js +0 -99
  277. package/dist/es5/context/debug/spector.js.map +0 -1
  278. package/dist/es5/context/debug/webgl-developer-tools.js +0 -146
  279. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  280. package/dist/es5/context/parameters/unified-parameter-api.js +0 -76
  281. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  282. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -346
  283. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  284. package/dist/es5/context/polyfill/context-data.js +0 -18
  285. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  286. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -69
  287. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  288. package/dist/es5/context/polyfill/polyfill-context.js +0 -109
  289. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  290. package/dist/es5/context/polyfill/polyfill-table.js +0 -143
  291. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  292. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -271
  293. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  294. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -23
  295. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  296. package/dist/es5/context/state-tracker/track-context-state.js +0 -167
  297. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  298. package/dist/es5/context/state-tracker/with-parameters.js +0 -40
  299. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  300. package/dist/es5/index.js +0 -249
  301. package/dist/es5/index.js.map +0 -1
  302. package/dist/es5/init.js +0 -7
  303. package/dist/es5/init.js.map +0 -1
  304. package/dist/es5/types/webgl.js +0 -5
  305. package/dist/es5/types/webgl.js.map +0 -1
  306. package/dist/es5/types.js +0 -2
  307. package/dist/es5/types.js.map +0 -1
  308. package/dist/esm/adapter/converters/device-parameters.js +0 -137
  309. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -181
  311. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/esm/adapter/converters/sampler-parameters.js +0 -172
  313. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/esm/adapter/converters/texture-formats.js +0 -901
  315. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/esm/adapter/converters/vertex-formats.js +0 -29
  317. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/esm/adapter/device-helpers/device-features.js +0 -95
  319. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/esm/adapter/device-helpers/device-limits.js +0 -88
  321. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -42
  323. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -9
  325. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/esm/adapter/helpers/attribute-utils.js +0 -64
  327. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/esm/adapter/helpers/get-shader-info.js +0 -25
  329. package/dist/esm/adapter/helpers/get-shader-info.js.map +0 -1
  330. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -282
  331. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  332. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -30
  333. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  334. package/dist/esm/adapter/helpers/set-uniform.js +0 -85
  335. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  336. package/dist/esm/adapter/helpers/uniforms.js +0 -89
  337. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  338. package/dist/esm/adapter/objects/constants-to-keys.js +0 -35
  339. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  340. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -78
  341. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  342. package/dist/esm/adapter/objects/webgl-resource.js +0 -163
  343. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  344. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -74
  345. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  346. package/dist/esm/adapter/resources/webgl-buffer.js +0 -134
  347. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  348. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -50
  349. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  350. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -41
  351. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  352. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  353. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  354. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -207
  355. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  356. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -14
  357. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  358. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -311
  359. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  360. package/dist/esm/adapter/resources/webgl-sampler.js +0 -42
  361. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  362. package/dist/esm/adapter/resources/webgl-shader.js +0 -62
  363. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  364. package/dist/esm/adapter/resources/webgl-texture.js +0 -714
  365. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  366. package/dist/esm/adapter/webgl-canvas-context.js +0 -41
  367. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  368. package/dist/esm/adapter/webgl-device.js +0 -276
  369. package/dist/esm/adapter/webgl-device.js.map +0 -1
  370. package/dist/esm/bundle.js +0 -4
  371. package/dist/esm/bundle.js.map +0 -1
  372. package/dist/esm/classic/accessor.js +0 -120
  373. package/dist/esm/classic/accessor.js.map +0 -1
  374. package/dist/esm/classic/buffer.js +0 -327
  375. package/dist/esm/classic/buffer.js.map +0 -1
  376. package/dist/esm/classic/typed-array-utils.js +0 -92
  377. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  378. package/dist/esm/context/context/create-browser-context.js +0 -53
  379. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  380. package/dist/esm/context/context/create-headless-context.js +0 -39
  381. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  382. package/dist/esm/context/context/webgl-checks.js +0 -31
  383. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  384. package/dist/esm/context/debug/spector.js +0 -64
  385. package/dist/esm/context/debug/spector.js.map +0 -1
  386. package/dist/esm/context/debug/webgl-developer-tools.js +0 -97
  387. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  388. package/dist/esm/context/parameters/unified-parameter-api.js +0 -55
  389. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  390. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -427
  391. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  392. package/dist/esm/context/polyfill/context-data.js +0 -12
  393. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  394. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -86
  395. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/esm/context/polyfill/polyfill-context.js +0 -84
  397. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/esm/context/polyfill/polyfill-table.js +0 -138
  399. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -265
  401. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -17
  403. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/esm/context/state-tracker/track-context-state.js +0 -148
  405. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/esm/context/state-tracker/with-parameters.js +0 -34
  407. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/esm/index.js +0 -27
  409. package/dist/esm/index.js.map +0 -1
  410. package/dist/esm/init.js +0 -4
  411. package/dist/esm/init.js.map +0 -1
  412. package/dist/esm/types/webgl.js +0 -2
  413. package/dist/esm/types/webgl.js.map +0 -1
  414. package/dist/esm/types.js +0 -2
  415. package/dist/esm/types.js.map +0 -1
  416. package/dist/init.d.ts +0 -2
  417. package/dist/init.d.ts.map +0 -1
  418. package/dist/init.js +0 -3
  419. package/src/bundle.ts +0 -4
  420. 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