@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.2

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 (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +100 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +217 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9296 -0
  198. package/dist/index.cjs +6469 -0
  199. package/dist/index.d.ts +20 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +25 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +343 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +42 -42
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-render-pass.ts"],"names":["RenderPass","WEBGLRenderPass","constructor","device","props","endPass","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel"],"mappings":";AAAA,SAAQA,UAAR,QAA0C,cAA1C;AAGA,eAAe,MAAMC,eAAN,SAA8BD,UAA9B,CAAyC;AAGtDE,EAAAA,WAAW,CAACC,MAAD,EAAsBC,KAAtB,EAA8C;AACvD,UAAMD,MAAN,EAAcC,KAAd;;AADuD;;AAEvD,SAAKD,MAAL,GAAcA,MAAd;AACD;;AAEDE,EAAAA,OAAO,GAAS,CAAE;;AAElBC,EAAAA,cAAc,CAACC,UAAD,EAA2B,CAAE;;AAC3CC,EAAAA,aAAa,GAAS,CAAE;;AACxBC,EAAAA,iBAAiB,CAACC,WAAD,EAA4B,CAAE;;AAZO","sourcesContent":["import {RenderPass, RenderPassProps} from '@luma.gl/api';\nimport WebGLDevice from '../webgl-device';\n\nexport default class WEBGLRenderPass extends RenderPass {\n readonly device: WebGLDevice;\n\n constructor(device: WebGLDevice, props: RenderPassProps) {\n super(device, props);\n this.device = device;\n }\n\n endPass(): void {}\n\n pushDebugGroup(groupLabel: string): void {}\n popDebugGroup(): void {}\n insertDebugMarker(markerLabel: string): void {}\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n\n // beginOcclusionQuery(queryIndex: number): void;\n // endOcclusionQuery(): void;\n\n // executeBundles(bundles: Iterable<GPURenderBundle>): void;\n}\n"],"file":"webgl-render-pass.js"}
@@ -1,428 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { RenderPipeline, cast, log, decodeVertexFormat } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getWebGLDataType } from '../converters/texture-formats';
5
- import { getShaderLayout } from '../helpers/get-shader-layout';
6
- import { withDeviceParameters, withGLParameters } from '../converters/device-parameters';
7
- import { setUniform } from '../helpers/set-uniform';
8
- import WEBGLBuffer from './webgl-buffer';
9
- import WEBGLTexture from './webgl-texture';
10
- import WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';
11
- const LOG_PROGRAM_PERF_PRIORITY = 4;
12
- export default class WEBGLRenderPipeline extends RenderPipeline {
13
- constructor(device, props) {
14
- super(device, props);
15
-
16
- _defineProperty(this, "device", void 0);
17
-
18
- _defineProperty(this, "handle", void 0);
19
-
20
- _defineProperty(this, "vs", void 0);
21
-
22
- _defineProperty(this, "fs", void 0);
23
-
24
- _defineProperty(this, "layout", void 0);
25
-
26
- _defineProperty(this, "varyings", null);
27
-
28
- _defineProperty(this, "vertexArrayObject", void 0);
29
-
30
- _defineProperty(this, "_indexBuffer", void 0);
31
-
32
- _defineProperty(this, "uniforms", {});
33
-
34
- _defineProperty(this, "bindings", {});
35
-
36
- _defineProperty(this, "_textureUniforms", {});
37
-
38
- _defineProperty(this, "_textureIndexCounter", 0);
39
-
40
- _defineProperty(this, "_uniformCount", 0);
41
-
42
- _defineProperty(this, "_uniformSetters", {});
43
-
44
- this.device = device;
45
- this.handle = this.props.handle || this.device.gl.createProgram();
46
- this.handle.__SPECTOR_Metadata = {
47
- id: this.props.id
48
- };
49
- this.vs = cast(props.vs);
50
- this.fs = cast(props.fs);
51
- const {
52
- varyings,
53
- bufferMode = GL.SEPARATE_ATTRIBS
54
- } = props;
55
-
56
- if (varyings && varyings.length > 0) {
57
- var _this$device$gl;
58
-
59
- this.device.assertWebGL2();
60
- this.varyings = varyings;
61
- (_this$device$gl = this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
62
- }
63
-
64
- this._compileAndLink();
65
-
66
- this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);
67
- this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
68
- }
69
-
70
- destroy() {
71
- if (this.handle) {
72
- this.device.gl.deleteProgram(this.handle);
73
- this.destroyed = true;
74
- }
75
- }
76
-
77
- setIndexBuffer(indexBuffer) {
78
- const webglBuffer = cast(indexBuffer);
79
- this.vertexArrayObject.setElementBuffer(webglBuffer);
80
- this._indexBuffer = indexBuffer;
81
- }
82
-
83
- setAttributes(attributes) {
84
- for (const [name, buffer] of Object.entries(attributes)) {
85
- const webglBuffer = cast(buffer);
86
- const attribute = getAttributeLayout(this.layout, name);
87
-
88
- if (!attribute) {
89
- log.warn("Ignoring buffer supplied for unknown attribute \"".concat(name, "\" in pipeline \"").concat(this.id, "\" (buffer \"").concat(buffer.id, "\")"))();
90
- continue;
91
- }
92
-
93
- const decoded = decodeVertexFormat(attribute.format);
94
- const {
95
- type: typeString,
96
- components: size,
97
- byteLength: stride,
98
- normalized,
99
- integer
100
- } = decoded;
101
- const divisor = attribute.stepMode === 'instance' ? 1 : 0;
102
- const type = getWebGLDataType(typeString);
103
- this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {
104
- size,
105
- type,
106
- stride,
107
- offset: 0,
108
- normalized,
109
- integer,
110
- divisor: attribute.stepMode === 'instance' ? 1 : 0
111
- });
112
- }
113
- }
114
-
115
- setBindings(bindings) {
116
- for (const [name, value] of Object.entries(bindings)) {
117
- const binding = this.layout.bindings.find(binding => binding.name === name);
118
-
119
- if (!binding) {
120
- log.warn("Unknown binding ".concat(name, " in render pipeline ").concat(this.id))();
121
- continue;
122
- }
123
-
124
- if (!value) {
125
- log.warn("Unsetting binding ".concat(name, " in render pipeline ").concat(this.id))();
126
- }
127
-
128
- switch (binding.type) {
129
- case 'uniform':
130
- if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
131
- throw new Error('buffer value');
132
- }
133
-
134
- break;
135
-
136
- case 'texture':
137
- if (!(value instanceof WEBGLTexture)) {
138
- throw new Error('texture value');
139
- }
140
-
141
- break;
142
-
143
- case 'sampler':
144
- log.warn("Ignoring sampler ".concat(name))();
145
- break;
146
-
147
- default:
148
- throw new Error(binding.type);
149
- }
150
-
151
- this.bindings[name] = value;
152
- }
153
- }
154
-
155
- setUniforms(uniforms) {
156
- Object.assign(this.uniforms, uniforms);
157
- }
158
-
159
- draw(options) {
160
- var _this$_indexBuffer;
161
-
162
- const {
163
- renderPass = this.device.getDefaultRenderPass(),
164
- vertexCount,
165
- indexCount,
166
- instanceCount,
167
- firstVertex = 0,
168
- firstIndex,
169
- firstInstance,
170
- baseVertex
171
- } = options;
172
- const drawMode = getDrawMode(this.props.topology);
173
- const isIndexed = Boolean(this._indexBuffer);
174
- const indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
175
- const isInstanced = Number(options.instanceCount) > 0;
176
-
177
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
178
- return false;
179
- }
180
-
181
- this.device.gl.useProgram(this.handle);
182
- this.vertexArrayObject.bind(() => {
183
- const primitiveMode = getGLPrimitive(this.props.topology);
184
- const transformFeedback = null;
185
-
186
- if (transformFeedback) {
187
- transformFeedback.begin(primitiveMode);
188
- }
189
-
190
- this._applyBindings();
191
-
192
- this._applyUniforms();
193
-
194
- withDeviceParameters(this.device, this.props.parameters, () => {
195
- withGLParameters(this.device, {
196
- framebuffer: renderPass.props.framebuffer
197
- }, () => {
198
- if (isIndexed && isInstanced) {
199
- var _this$device$gl2;
200
-
201
- (_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);
202
- } else if (isIndexed) {
203
- this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex);
204
- } else if (isInstanced) {
205
- var _this$device$gl3;
206
-
207
- (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
208
- } else {
209
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
210
- }
211
- });
212
-
213
- if (transformFeedback) {
214
- transformFeedback.end();
215
- }
216
- });
217
- });
218
- return true;
219
- }
220
-
221
- _compileAndLink() {
222
- const {
223
- gl
224
- } = this.device;
225
- gl.attachShader(this.handle, this.vs.handle);
226
- gl.attachShader(this.handle, this.fs.handle);
227
- log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
228
- gl.linkProgram(this.handle);
229
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
230
-
231
- if (gl.debug || log.level > 0) {
232
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
233
-
234
- if (!linked) {
235
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
236
- }
237
-
238
- gl.validateProgram(this.handle);
239
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
240
-
241
- if (!validated) {
242
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
243
- }
244
- }
245
- }
246
-
247
- _areTexturesRenderable() {
248
- let texturesRenderable = true;
249
-
250
- for (const [name, texture] of Object.entries(this._textureUniforms)) {
251
- texture.update();
252
- texturesRenderable = texturesRenderable && texture.loaded;
253
- }
254
-
255
- for (const [name, texture] of Object.entries(this.bindings)) {
256
- if (texture.loaded !== undefined) {
257
- texturesRenderable = texturesRenderable && texture.loaded;
258
- }
259
- }
260
-
261
- return texturesRenderable;
262
- }
263
-
264
- _applyBindings() {
265
- this.device.gl.useProgram(this.handle);
266
- const {
267
- gl2
268
- } = this.device;
269
-
270
- if (!gl2) {
271
- throw new Error('bindings');
272
- }
273
-
274
- let textureUnit = 0;
275
- let uniformBufferIndex = 0;
276
-
277
- for (const binding of this.layout.bindings) {
278
- const value = this.bindings[binding.name];
279
-
280
- if (!value) {
281
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
282
- }
283
-
284
- switch (binding.type) {
285
- case 'uniform':
286
- const {
287
- name
288
- } = binding;
289
- const location = gl2.getUniformBlockIndex(this.handle, name);
290
-
291
- if (location === GL.INVALID_INDEX) {
292
- throw new Error("Invalid uniform block name ".concat(name));
293
- }
294
-
295
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
296
-
297
- if (value instanceof WEBGLBuffer) {
298
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
299
- } else {
300
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
301
- }
302
-
303
- uniformBufferIndex += 1;
304
- break;
305
-
306
- case 'texture':
307
- if (!(value instanceof WEBGLTexture)) {
308
- throw new Error('texture');
309
- }
310
-
311
- const texture = value;
312
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
313
- gl2.bindTexture(texture.target, texture.handle);
314
- textureUnit += 1;
315
- break;
316
-
317
- case 'sampler':
318
- break;
319
-
320
- case 'storage':
321
- case 'read-only-storage':
322
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
323
- }
324
- }
325
- }
326
-
327
- _applyUniforms() {
328
- for (const uniformLayout of this.layout.uniforms || []) {
329
- const {
330
- name,
331
- location,
332
- type,
333
- textureUnit
334
- } = uniformLayout;
335
- const value = this.uniforms[name] || textureUnit;
336
-
337
- if (value !== undefined) {
338
- setUniform(this.device.gl, location, type, value);
339
- }
340
- }
341
- }
342
-
343
- }
344
-
345
- function getDrawMode(topology) {
346
- switch (topology) {
347
- case 'point-list':
348
- return GL.POINTS;
349
-
350
- case 'line-list':
351
- return GL.LINES;
352
-
353
- case 'line-strip':
354
- return GL.LINE_STRIP;
355
-
356
- case 'line-loop':
357
- return GL.LINE_LOOP;
358
-
359
- case 'triangle-list':
360
- return GL.TRIANGLES;
361
-
362
- case 'triangle-strip':
363
- return GL.TRIANGLE_STRIP;
364
-
365
- case 'triangle-fan':
366
- return GL.TRIANGLE_FAN;
367
-
368
- default:
369
- throw new Error(topology);
370
- }
371
- }
372
-
373
- function getGLPrimitive(topology) {
374
- switch (topology) {
375
- case 'point-list':
376
- return GL.POINTS;
377
-
378
- case 'line-list':
379
- return GL.LINES;
380
-
381
- case 'line-strip':
382
- return GL.LINES;
383
-
384
- case 'line-loop':
385
- return GL.LINES;
386
-
387
- case 'triangle-list':
388
- return GL.TRIANGLES;
389
-
390
- case 'triangle-strip':
391
- return GL.TRIANGLES;
392
-
393
- case 'triangle-fan':
394
- return GL.TRIANGLES;
395
-
396
- default:
397
- throw new Error(topology);
398
- }
399
- }
400
-
401
- function getAttributesByLocation(attributes, layout) {
402
- const byLocation = {};
403
-
404
- for (const [name, buffer] of Object.entries(attributes)) {
405
- const attribute = getAttributeLayout(layout, name);
406
-
407
- if (attribute) {
408
- byLocation[attribute.location] = buffer;
409
- }
410
- }
411
-
412
- return byLocation;
413
- }
414
-
415
- function getAttributeLayout(layout, name) {
416
- return layout.attributes.find(binding => binding.name === name) || null;
417
- }
418
-
419
- function getBindingLayout(layout, name) {
420
- const binding = layout.bindings.find(binding => binding.name === name);
421
-
422
- if (!binding) {
423
- throw new Error("Unknown binding ".concat(name));
424
- }
425
-
426
- return binding;
427
- }
428
- //# sourceMappingURL=webgl-render-pipeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":["RenderPipeline","cast","log","decodeVertexFormat","GL","getWebGLDataType","getShaderLayout","withDeviceParameters","withGLParameters","setUniform","WEBGLBuffer","WEBGLTexture","WEBGLVertexArrayObject","LOG_PROGRAM_PERF_PRIORITY","WEBGLRenderPipeline","constructor","device","props","handle","gl","createProgram","__SPECTOR_Metadata","id","vs","fs","varyings","bufferMode","SEPARATE_ATTRIBS","length","assertWebGL2","gl2","transformFeedbackVaryings","_compileAndLink","layout","vertexArrayObject","destroy","deleteProgram","destroyed","setIndexBuffer","indexBuffer","webglBuffer","setElementBuffer","_indexBuffer","setAttributes","attributes","name","buffer","Object","entries","attribute","getAttributeLayout","warn","decoded","format","type","typeString","components","size","byteLength","stride","normalized","integer","divisor","stepMode","setBuffer","location","offset","setBindings","bindings","value","binding","find","Error","setUniforms","uniforms","assign","draw","options","renderPass","getDefaultRenderPass","vertexCount","indexCount","instanceCount","firstVertex","firstIndex","firstInstance","baseVertex","drawMode","getDrawMode","topology","isIndexed","Boolean","indexType","UNSIGNED_SHORT","UNSIGNED_INT","isInstanced","Number","_areTexturesRenderable","useProgram","bind","primitiveMode","getGLPrimitive","transformFeedback","begin","_applyBindings","_applyUniforms","parameters","framebuffer","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","end","attachShader","time","linkProgram","timeEnd","debug","level","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","texturesRenderable","texture","_textureUniforms","update","loaded","undefined","textureUnit","uniformBufferIndex","getUniformBlockIndex","INVALID_INDEX","uniformBlockBinding","bindBufferBase","UNIFORM_BUFFER","bindBufferRange","activeTexture","TEXTURE0","bindTexture","target","uniformLayout","POINTS","LINES","LINE_STRIP","LINE_LOOP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","getAttributesByLocation","byLocation","getBindingLayout"],"mappings":"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","sourcesContent":["import type {\n RenderPipelineProps,\n RenderPass,\n Buffer,\n Binding,\n ShaderLayout,\n PrimitiveTopology,\n BindingLayout,\n AttributeLayout\n} from '@luma.gl/api';\nimport {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nimport type {GLParameters} from '../../types/webgl';\nimport {getWebGLDataType} from '../converters/texture-formats';\nimport {getShaderLayout} from '../helpers/get-shader-layout';\nimport {withDeviceParameters, withGLParameters} from '../converters/device-parameters';\nimport {setUniform} from '../helpers/set-uniform';\n// import {copyUniform, checkUniformValues} from '../../classes/uniforms';\n\nimport WebGLDevice from '../webgl-device';\nimport WEBGLBuffer from './webgl-buffer';\nimport WEBGLShader from './webgl-shader';\nimport WEBGLTexture from './webgl-texture';\nimport WEBGLVertexArrayObject from '../objects/webgl-vertex-array-object';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\n/** Creates a new render pipeline */\nexport default class WEBGLRenderPipeline extends RenderPipeline {\n device: WebGLDevice;\n handle: WebGLProgram;\n vs: WEBGLShader;\n fs: WEBGLShader;\n layout: ShaderLayout;\n\n // configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n varyings: string[] | null = null;\n vertexArrayObject: WEBGLVertexArrayObject;\n _indexBuffer?: Buffer;\n uniforms: Record<string, any> = {};\n bindings: Record<string, any> = {};\n _textureUniforms: Record<string, any> = {};\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function> = {}; // TODO are these used?\n\n constructor(device: WebGLDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.gl.createProgram();\n // @ts-expect-error\n this.handle.__SPECTOR_Metadata = {id: this.props.id};\n\n // Create shaders if needed\n this.vs = cast<WEBGLShader>(props.vs);\n this.fs = cast<WEBGLShader>(props.fs);\n // assert(this.vs.stage === 'vertex');\n // assert(this.fs.stage === 'fragment');\n\n // Setup varyings if supplied\n // @ts-expect-error WebGL only\n const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;\n if (varyings && varyings.length > 0) {\n this.device.assertWebGL2();\n this.varyings = varyings;\n this.device.gl2?.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this.layout = props.layout || getShaderLayout(this.device.gl, this.handle);\n this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);\n }\n\n destroy(): void {\n if (this.handle) {\n this.device.gl.deleteProgram(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n const webglBuffer = cast<WEBGLBuffer>(indexBuffer);\n this.vertexArrayObject.setElementBuffer(webglBuffer);\n this._indexBuffer = indexBuffer;\n }\n\n /** @todo needed for portable model */\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const webglBuffer = cast<WEBGLBuffer>(buffer);\n const attribute = getAttributeLayout(this.layout, name);\n if (!attribute) {\n log.warn(`Ignoring buffer supplied for unknown attribute \"${name}\" in pipeline \"${this.id}\" (buffer \"${buffer.id}\")`)();\n continue;\n }\n const decoded = decodeVertexFormat(attribute.format);\n const {type: typeString, components: size, byteLength: stride, normalized, integer} = decoded;\n const divisor = attribute.stepMode === 'instance' ? 1 : 0;\n const type = getWebGLDataType(typeString);\n this.vertexArrayObject.setBuffer(attribute.location, webglBuffer, {\n size,\n type,\n stride,\n offset: 0,\n normalized,\n integer,\n divisor: attribute.stepMode === 'instance' ? 1 : 0\n });\n }\n }\n\n /** @todo needed for portable model */\n setBindings(bindings: Record<string, Binding>): void {\n // if (log.priority >= 2) {\n // checkUniformValues(uniforms, this.id, this._uniformSetters);\n // }\n\n for (const [name, value] of Object.entries(bindings)) {\n const binding = this.layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n log.warn(`Unknown binding ${name} in render pipeline ${this.id}`)();\n continue;\n }\n if (!value) {\n log.warn(`Unsetting binding ${name} in render pipeline ${this.id}`)();\n }\n switch (binding.type) {\n case 'uniform':\n // @ts-expect-error\n if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {\n throw new Error('buffer value');\n }\n break;\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture value');\n }\n break;\n case 'sampler':\n log.warn(`Ignoring sampler ${name}`)();\n break;\n default:\n throw new Error(binding.type);\n }\n\n this.bindings[name] = value;\n }\n }\n\n setUniforms(uniforms: Record<string, any>) {\n // TODO - check against layout\n Object.assign(this.uniforms, uniforms);\n }\n\n /** @todo needed for portable model\n * @note The WebGL API is offers many ways to draw things\n * This function unifies those ways into a single call using common parameters with sane defaults\n */\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): boolean {\n const {\n renderPass = this.device.getDefaultRenderPass(),\n vertexCount,\n indexCount,\n instanceCount,\n firstVertex = 0,\n firstIndex,\n firstInstance,\n baseVertex\n } = options;\n\n const drawMode = getDrawMode(this.props.topology);\n const isIndexed: boolean = Boolean(this._indexBuffer);\n const indexType = this._indexBuffer?.props.indexType === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;\n const isInstanced: boolean = Number(options.instanceCount) > 0;\n\n // Avoid WebGL draw call when not rendering any data or values are incomplete\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n if (!this._areTexturesRenderable() || options.vertexCount === 0) {\n // (isInstanced && instanceCount === 0)\n return false;\n }\n\n this.device.gl.useProgram(this.handle);\n\n this.vertexArrayObject.bind(() => {\n const primitiveMode = getGLPrimitive(this.props.topology);\n const transformFeedback: any = null;\n if (transformFeedback) {\n transformFeedback.begin(primitiveMode);\n }\n\n // We have to apply bindings before every draw call since other draw calls will overwrite\n this._applyBindings();\n this._applyUniforms();\n\n // TODO - double context push/pop\n withDeviceParameters(this.device, this.props.parameters, () => {\n withGLParameters(this.device, {framebuffer: renderPass.props.framebuffer}, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n // ANGLE_instanced_arrays extension\n this.device.gl2?.drawElementsInstanced(\n drawMode,\n vertexCount || 0, // indexCount?\n indexType,\n firstVertex,\n instanceCount || 0\n );\n // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {\n // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?\n } else if (isInstanced) {\n this.device.gl2?.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);\n } else {\n this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n });\n\n return true;\n }\n\n // setAttributes(attributes: Record<string, Buffer>): void {}\n // setBindings(bindings: Record<string, Binding>): void {}\n\n protected _compileAndLink() {\n const {gl} = this.device;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // PRIVATE METHODS\n\n /**\n * Checks if all texture-values uniforms are renderable (i.e. loaded)\n * Update a texture if needed (e.g. from video)\n * Note: This is currently done before every draw call\n */\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const [name, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [name, texture] of Object.entries(this.bindings)) {\n // texture.update();\n if (texture.loaded !== undefined) {\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n }\n\n return texturesRenderable;\n }\n\n /** Apply any bindings */\n _applyBindings() {\n this.device.gl.useProgram(this.handle);\n\n const {gl2} = this.device;\n if (!gl2) {\n throw new Error('bindings');\n }\n\n let textureUnit = 0;\n let uniformBufferIndex = 0;\n for (const binding of this.layout.bindings) {\n const value = this.bindings[binding.name];\n if (!value) {\n throw new Error(`No value for binding ${binding.name} in ${this.id}`);\n }\n switch (binding.type) {\n case 'uniform':\n // Set buffer\n const {name} = binding;\n const location = gl2.getUniformBlockIndex(this.handle, name);\n if (location === GL.INVALID_INDEX) {\n throw new Error(`Invalid uniform block name ${name}`);\n }\n gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);\n // console.debug(binding, location);\n if (value instanceof WEBGLBuffer) {\n gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);\n } else {\n gl2.bindBufferRange(\n GL.UNIFORM_BUFFER,\n uniformBufferIndex,\n value.buffer.handle,\n value.offset || 0,\n value.size || value.buffer.byteLength - value.offset\n );\n }\n uniformBufferIndex += 1;\n break;\n\n case 'texture':\n if (!(value instanceof WEBGLTexture)) {\n throw new Error('texture');\n }\n const texture: WEBGLTexture = value;\n gl2.activeTexture(GL.TEXTURE0 + textureUnit);\n gl2.bindTexture(texture.target, texture.handle);\n // gl2.bindSampler(textureUnit, sampler.handle);\n textureUnit += 1;\n break;\n\n case 'sampler':\n // ignore\n break;\n\n case 'storage':\n case 'read-only-storage':\n throw new Error(`binding type '${binding.type}' not supported in WebGL`);\n }\n }\n }\n\n _applyUniforms() {\n for (const uniformLayout of this.layout.uniforms || []) {\n const {name, location, type, textureUnit} = uniformLayout;\n const value = this.uniforms[name] || textureUnit;\n if (value !== undefined) {\n setUniform(this.device.gl, location, type, value);\n }\n }\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getDrawMode(\n topology: PrimitiveTopology\n): GL.POINTS | GL.LINES | GL.LINE_STRIP | GL.LINE_LOOP | GL.TRIANGLES | GL.TRIANGLE_STRIP | GL.TRIANGLE_FAN {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINE_STRIP;\n case 'line-loop': return GL.LINE_LOOP;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLE_STRIP;\n case 'triangle-fan': return GL.TRIANGLE_FAN;\n default: throw new Error(topology);\n }\n}\n\n/** Get the primitive type for transform feedback */\nfunction getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.TRIANGLES {\n // prettier-ignore\n switch (topology) {\n case 'point-list': return GL.POINTS;\n case 'line-list': return GL.LINES;\n case 'line-strip': return GL.LINES;\n case 'line-loop': return GL.LINES;\n case 'triangle-list': return GL.TRIANGLES;\n case 'triangle-strip': return GL.TRIANGLES;\n case 'triangle-fan': return GL.TRIANGLES;\n default: throw new Error(topology);\n }\n}\n\nfunction getAttributesByLocation(\n attributes: Record<string, Buffer>,\n layout: ShaderLayout\n): Record<number, Buffer> {\n const byLocation: Record<number, Buffer> = {};\n for (const [name, buffer] of Object.entries(attributes)) {\n const attribute = getAttributeLayout(layout, name);\n if (attribute) {\n byLocation[attribute.location] = buffer;\n }\n }\n return byLocation;\n}\n\nfunction getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {\n return layout.attributes.find((binding) => binding.name === name) || null;\n}\n\nfunction getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {\n const binding = layout.bindings.find((binding) => binding.name === name);\n if (!binding) {\n throw new Error(`Unknown binding ${name}`);\n }\n return binding;\n}\n"],"file":"webgl-render-pipeline.js"}
@@ -1,50 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Sampler } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { convertSamplerParametersToWebGL } from '../converters/sampler-parameters';
5
- export default class WEBGLSampler extends Sampler {
6
- constructor(device, props) {
7
- super(device, props);
8
-
9
- _defineProperty(this, "device", void 0);
10
-
11
- _defineProperty(this, "handle", void 0);
12
-
13
- _defineProperty(this, "parameters", void 0);
14
-
15
- this.device = device;
16
- this.parameters = convertSamplerParametersToWebGL(props);
17
-
18
- if (this.device.isWebGL2) {
19
- this.handle = this.handle || this.device.gl2.createSampler();
20
-
21
- this._setSamplerParameters(this.parameters);
22
- }
23
- }
24
-
25
- destroy() {
26
- if (this.handle) {
27
- this.device.gl2.deleteSampler(this.handle);
28
- this.handle = undefined;
29
- }
30
- }
31
-
32
- _setSamplerParameters(parameters) {
33
- for (const [pname, value] of Object.entries(parameters)) {
34
- const param = Number(pname);
35
-
36
- switch (param) {
37
- case GL.TEXTURE_MIN_LOD:
38
- case GL.TEXTURE_MAX_LOD:
39
- this.device.gl2.samplerParameterf(this.handle, param, value);
40
- break;
41
-
42
- default:
43
- this.device.gl2.samplerParameteri(this.handle, param, value);
44
- break;
45
- }
46
- }
47
- }
48
-
49
- }
50
- //# sourceMappingURL=webgl-sampler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-sampler.ts"],"names":["Sampler","GL","convertSamplerParametersToWebGL","WEBGLSampler","constructor","device","props","parameters","isWebGL2","handle","gl2","createSampler","_setSamplerParameters","destroy","deleteSampler","undefined","pname","value","Object","entries","param","Number","TEXTURE_MIN_LOD","TEXTURE_MAX_LOD","samplerParameterf","samplerParameteri"],"mappings":";AAEA,SAAQA,OAAR,QAAoC,cAApC;AACA,OAAOC,EAAP,MAAe,oBAAf;AAEA,SAAQC,+BAAR,QAA8C,kCAA9C;AAUA,eAAe,MAAMC,YAAN,SAA2BH,OAA3B,CAAmC;AAKhDI,EAAAA,WAAW,CAACC,MAAD,EAAsBC,KAAtB,EAA2C;AACpD,UAAMD,MAAN,EAAcC,KAAd;;AADoD;;AAAA;;AAAA;;AAEpD,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKE,UAAL,GAAkBL,+BAA+B,CAACI,KAAD,CAAjD;;AACA,QAAI,KAAKD,MAAL,CAAYG,QAAhB,EAA0B;AACxB,WAAKC,MAAL,GAAc,KAAKA,MAAL,IAAe,KAAKJ,MAAL,CAAYK,GAAZ,CAAgBC,aAAhB,EAA7B;;AACA,WAAKC,qBAAL,CAA2B,KAAKL,UAAhC;AACD;AACF;;AAEDM,EAAAA,OAAO,GAAS;AACd,QAAI,KAAKJ,MAAT,EAAiB;AACf,WAAKJ,MAAL,CAAYK,GAAZ,CAAgBI,aAAhB,CAA8B,KAAKL,MAAnC;AAEA,WAAKA,MAAL,GAAcM,SAAd;AACD;AACF;;AAGOH,EAAAA,qBAAqB,CAACL,UAAD,EAAwC;AACnE,SAAK,MAAM,CAACS,KAAD,EAAQC,KAAR,CAAX,IAA6BC,MAAM,CAACC,OAAP,CAAeZ,UAAf,CAA7B,EAAyD;AAGvD,YAAMa,KAAK,GAAGC,MAAM,CAACL,KAAD,CAApB;;AACA,cAAQI,KAAR;AACE,aAAKnB,EAAE,CAACqB,eAAR;AACA,aAAKrB,EAAE,CAACsB,eAAR;AACE,eAAKlB,MAAL,CAAYK,GAAZ,CAAgBc,iBAAhB,CAAkC,KAAKf,MAAvC,EAA+CW,KAA/C,EAAsDH,KAAtD;AACA;;AACF;AACE,eAAKZ,MAAL,CAAYK,GAAZ,CAAgBe,iBAAhB,CAAkC,KAAKhB,MAAvC,EAA+CW,KAA/C,EAAsDH,KAAtD;AACA;AAPJ;AASD;AACF;;AAvC+C","sourcesContent":["// luma.gl, MIT license\n\nimport {Sampler, SamplerProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport type {GLSamplerParameters} from '../../types/webgl';\nimport {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';\nimport type WebGLDevice from '../webgl-device';\n\n/**\n * Sampler object -\n * Under WebGL2 we create an actual WebGL sampler\n * Under WebGL1, we just store the sampler parameters\n * so that they can be set directly on the texture\n * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html\n */\nexport default class WEBGLSampler extends Sampler {\n readonly device: WebGLDevice;\n readonly handle: WebGLSampler;\n readonly parameters: GLSamplerParameters;\n\n constructor(device: WebGLDevice, props: SamplerProps) {\n super(device, props);\n this.device = device;\n this.parameters = convertSamplerParametersToWebGL(props);\n if (this.device.isWebGL2) {\n this.handle = this.handle || this.device.gl2.createSampler();\n this._setSamplerParameters(this.parameters);\n }\n }\n\n destroy(): void {\n if (this.handle) {\n this.device.gl2.deleteSampler(this.handle);\n // @ts-expect-error\n this.handle = undefined;\n }\n }\n\n /** Set sampler parameters on the sampler */\n private _setSamplerParameters(parameters: GLSamplerParameters): void {\n for (const [pname, value] of Object.entries(parameters)) {\n // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n const param = Number(pname);\n switch (param) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.device.gl2.samplerParameterf(this.handle, param, value);\n break;\n default:\n this.device.gl2.samplerParameteri(this.handle, param, value);\n break;\n }\n }\n }\n}\n"],"file":"webgl-sampler.js"}
@@ -1,76 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { log, uid, Shader } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import { getShaderInfo, formatCompilerLog } from '@luma.gl/shadertools';
5
- import { parseShaderCompilerLog } from '../helpers/parse-shader-compiler-log';
6
- export default class WEBGLShader extends Shader {
7
- constructor(device, props) {
8
- super(device, {
9
- id: getShaderIdFromProps(props),
10
- ...props
11
- });
12
-
13
- _defineProperty(this, "device", void 0);
14
-
15
- _defineProperty(this, "handle", void 0);
16
-
17
- this.device = device;
18
-
19
- switch (this.props.stage) {
20
- case 'vertex':
21
- this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);
22
- break;
23
-
24
- case 'fragment':
25
- this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);
26
- break;
27
-
28
- default:
29
- throw new Error(this.props.stage);
30
- }
31
-
32
- this._compile(this.source);
33
- }
34
-
35
- destroy() {
36
- if (this.handle) {
37
- this.removeStats();
38
- this.device.gl.deleteShader(this.handle);
39
- this.destroyed = true;
40
- }
41
- }
42
-
43
- async compilationInfo() {
44
- const log = this.device.gl.getShaderInfoLog(this.handle);
45
- return log ? parseShaderCompilerLog(log) : [];
46
- }
47
-
48
- _compile(source) {
49
- const addGLSLVersion = source => source.startsWith('#version ') ? source : "#version 100\n".concat(source);
50
-
51
- source = addGLSLVersion(source);
52
- const {
53
- gl
54
- } = this.device;
55
- gl.shaderSource(this.handle, source);
56
- gl.compileShader(this.handle);
57
- const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
58
-
59
- if (!compileStatus) {
60
- const shaderLog = gl.getShaderInfoLog(this.handle);
61
- const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
62
- const messages = parsedLog.filter(message => message.type === 'error');
63
- const formattedLog = formatCompilerLog(messages, source);
64
- const shaderName = getShaderInfo(source).name;
65
- const shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
66
- log.error("GLSL compilation errors in ".concat(shaderDescription, "\n").concat(formattedLog))();
67
- throw new Error("GLSL compilation errors in ".concat(shaderName));
68
- }
69
- }
70
-
71
- }
72
-
73
- function getShaderIdFromProps(props) {
74
- return getShaderInfo(props.source).name || props.id || uid("unnamed ".concat(props.stage, "-shader"));
75
- }
76
- //# sourceMappingURL=webgl-shader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/adapter/resources/webgl-shader.ts"],"names":["log","uid","Shader","GL","getShaderInfo","formatCompilerLog","parseShaderCompilerLog","WEBGLShader","constructor","device","props","id","getShaderIdFromProps","stage","handle","gl","createShader","VERTEX_SHADER","FRAGMENT_SHADER","Error","_compile","source","destroy","removeStats","deleteShader","destroyed","compilationInfo","getShaderInfoLog","addGLSLVersion","startsWith","shaderSource","compileShader","compileStatus","getShaderParameter","COMPILE_STATUS","shaderLog","parsedLog","messages","filter","message","type","formattedLog","shaderName","name","shaderDescription","error"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, uid, Shader, ShaderProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';\nimport {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';\nimport WebGLDevice from '../webgl-device';\n\n/**\n * An immutable compiled shader program that execute portions of the GPU Pipeline\n */\n export default class WEBGLShader extends Shader {\n readonly device: WebGLDevice;\n readonly handle: WebGLShader;\n\n constructor(device: WebGLDevice, props: ShaderProps) {\n super(device, {id: getShaderIdFromProps(props), ...props});\n this.device = device;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.device.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.device.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this._compile(this.source);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.device.gl.deleteShader(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const log = this.device.gl.getShaderInfoLog(this.handle);\n return log ? parseShaderCompilerLog(log) : [];\n }\n\n // PRIVATE METHODS\n\n _compile(source: string): void {\n const addGLSLVersion = (source: string) => source.startsWith('#version ') ? source : `#version 100\\n${source}`;\n source = addGLSLVersion(source);\n\n const {gl} = this.device;\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);\n if (!compileStatus) {\n const shaderLog = gl.getShaderInfoLog(this.handle);\n const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];\n const messages = parsedLog.filter(message => message.type === 'error');\n const formattedLog = formatCompilerLog(messages, source);\n const shaderName: string = getShaderInfo(source).name;\n const shaderDescription = `${this.stage} shader ${shaderName}`;\n log.error(`GLSL compilation errors in ${shaderDescription}\\n${formattedLog}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n}\n\n// HELPERS\n\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props: ShaderProps): string {\n return getShaderInfo(props.source).name ||\n props.id ||\n uid(`unnamed ${props.stage}-shader`);\n}\n"],"file":"webgl-shader.js"}