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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +3 -23
  3. package/dist/adapter/converters/device-parameters.js.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +1 -5
  5. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +3 -58
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +10 -54
  11. package/dist/adapter/converters/texture-formats.js.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +0 -9
  13. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  14. package/dist/adapter/device-helpers/device-features.js +5 -22
  15. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  16. package/dist/adapter/device-helpers/device-limits.js +1 -4
  17. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  18. package/dist/adapter/device-helpers/get-device-info.js +6 -12
  19. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  20. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  21. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  22. package/dist/adapter/helpers/attribute-utils.js +0 -17
  23. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  24. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  25. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  26. package/dist/adapter/helpers/get-shader-info.js +25 -0
  27. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  28. package/dist/adapter/helpers/get-shader-layout.js +9 -57
  29. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  30. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  31. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  33. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  34. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  35. package/dist/adapter/helpers/set-uniform.js +0 -30
  36. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  37. package/dist/adapter/helpers/uniforms.js +0 -10
  38. package/dist/adapter/helpers/uniforms.js.map +1 -1
  39. package/dist/adapter/objects/constants-to-keys.js +0 -7
  40. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  41. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-renderbuffer.js +4 -20
  43. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  44. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  45. package/dist/adapter/objects/webgl-resource.js +13 -60
  46. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  47. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-vertex-array-object.js +6 -16
  49. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  50. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-buffer.js +13 -42
  52. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  53. package/dist/adapter/resources/webgl-command-buffer.js +2 -17
  54. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  55. package/dist/adapter/resources/webgl-command-encoder.js +1 -14
  56. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  57. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  58. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  59. package/dist/adapter/resources/webgl-framebuffer.js +5 -65
  60. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  62. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-render-pass.js +1 -8
  64. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  65. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-render-pipeline.js +9 -98
  67. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  68. package/dist/adapter/resources/webgl-sampler.js +1 -13
  69. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  71. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-shader.js +3 -17
  73. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  74. package/dist/adapter/resources/webgl-texture.d.ts +1 -1
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +44 -162
  77. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  78. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  79. package/dist/adapter/webgl-canvas-context.js +2 -16
  80. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  81. package/dist/adapter/webgl-device.d.ts +5 -0
  82. package/dist/adapter/webgl-device.d.ts.map +1 -1
  83. package/dist/adapter/webgl-device.js +40 -107
  84. package/dist/adapter/webgl-device.js.map +1 -1
  85. package/dist/classic/accessor.js +11 -35
  86. package/dist/classic/accessor.js.map +1 -1
  87. package/dist/classic/buffer.d.ts.map +1 -1
  88. package/dist/classic/buffer.js +20 -76
  89. package/dist/classic/buffer.js.map +1 -1
  90. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  91. package/dist/classic/typed-array-utils.js +0 -20
  92. package/dist/classic/typed-array-utils.js.map +1 -1
  93. package/dist/context/context/create-browser-context.d.ts +1 -0
  94. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  95. package/dist/context/context/create-browser-context.js +6 -14
  96. package/dist/context/context/create-browser-context.js.map +1 -1
  97. package/dist/context/context/create-headless-context.js +6 -7
  98. package/dist/context/context/create-headless-context.js.map +1 -1
  99. package/dist/context/context/webgl-checks.js +0 -3
  100. package/dist/context/context/webgl-checks.js.map +1 -1
  101. package/dist/context/debug/spector.d.ts +1 -0
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +6 -18
  104. package/dist/context/debug/spector.js.map +1 -1
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +4 -22
  107. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  108. package/dist/context/parameters/unified-parameter-api.js +4 -15
  109. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  110. package/dist/context/parameters/webgl-parameter-tables.js +1 -20
  111. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  112. package/dist/context/polyfill/context-data.js +0 -2
  113. package/dist/context/polyfill/context-data.js.map +1 -1
  114. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  115. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  116. package/dist/context/polyfill/polyfill-context.js +17 -24
  117. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  118. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  119. package/dist/context/polyfill/polyfill-table.js +3 -26
  120. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  121. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  122. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  123. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  124. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  125. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  127. package/dist/context/state-tracker/track-context-state.js +14 -48
  128. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  130. package/dist/context/state-tracker/with-parameters.js +3 -9
  131. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  132. package/dist/dist.dev.js +9205 -0
  133. package/dist/index.cjs +5948 -0
  134. package/dist/index.d.ts +0 -2
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +24 -26
  137. package/dist/index.js.map +1 -1
  138. package/dist/types/webgl.d.ts +4 -4
  139. package/dist/types/webgl.d.ts.map +1 -1
  140. package/dist/types/webgl.js.map +1 -1
  141. package/dist/types.js.map +1 -1
  142. package/dist.min.js +36 -0
  143. package/package.json +18 -9
  144. package/src/.DS_Store +0 -0
  145. package/src/adapter/.DS_Store +0 -0
  146. package/src/adapter/converters/device-parameters.ts +5 -2
  147. package/src/adapter/converters/sampler-parameters.ts +4 -2
  148. package/src/adapter/converters/texture-formats.ts +3 -1
  149. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  150. package/src/adapter/helpers/get-shader-info.ts +37 -0
  151. package/src/adapter/helpers/get-shader-layout.ts +4 -4
  152. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  153. package/src/adapter/helpers/set-uniform.ts +2 -0
  154. package/src/adapter/objects/webgl-renderbuffer.ts +1 -1
  155. package/src/adapter/objects/webgl-resource.ts +1 -1
  156. package/src/adapter/objects/webgl-vertex-array-object.ts +1 -1
  157. package/src/adapter/resources/webgl-buffer.ts +5 -5
  158. package/src/adapter/resources/webgl-command-encoder.ts +1 -1
  159. package/src/adapter/resources/webgl-framebuffer.ts +3 -4
  160. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  161. package/src/adapter/resources/webgl-render-pipeline.ts +19 -20
  162. package/src/adapter/resources/webgl-shader.ts +3 -3
  163. package/src/adapter/resources/webgl-texture.ts +8 -9
  164. package/src/adapter/webgl-canvas-context.ts +2 -2
  165. package/src/adapter/webgl-device.ts +13 -3
  166. package/src/classic/accessor.ts +1 -1
  167. package/src/classic/buffer.ts +3 -3
  168. package/src/classic/typed-array-utils.ts +1 -1
  169. package/src/context/.DS_Store +0 -0
  170. package/src/context/context/create-browser-context.ts +4 -2
  171. package/src/context/context/create-headless-context.ts +2 -2
  172. package/src/context/debug/spector.ts +5 -4
  173. package/src/context/debug/webgl-developer-tools.ts +1 -1
  174. package/src/context/polyfill/polyfill-table.ts +1 -0
  175. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  176. package/src/context/state-tracker/track-context-state.ts +6 -5
  177. package/src/context/state-tracker/with-parameters.ts +1 -1
  178. package/src/index.ts +1 -5
  179. package/src/types/webgl.ts +6 -4
  180. package/dist/bundle.d.ts +0 -2
  181. package/dist/bundle.d.ts.map +0 -1
  182. package/dist/bundle.js +0 -5
  183. package/dist/bundle.js.map +0 -1
  184. package/dist/es5/adapter/converters/device-parameters.js +0 -174
  185. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  186. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  187. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  188. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  189. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  190. package/dist/es5/adapter/converters/texture-formats.js +0 -1022
  191. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  192. package/dist/es5/adapter/converters/vertex-formats.js +0 -48
  193. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  194. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  195. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  196. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  197. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  198. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -59
  199. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  200. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  201. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  202. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  203. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  204. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -389
  205. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  206. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  207. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  208. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  209. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  210. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  211. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  212. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  213. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  214. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  215. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  216. package/dist/es5/adapter/objects/webgl-resource.js +0 -287
  217. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  218. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  219. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  220. package/dist/es5/adapter/resources/webgl-buffer.js +0 -242
  221. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  222. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  223. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  224. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  225. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  226. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  227. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -347
  229. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  230. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  231. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  232. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -494
  233. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  234. package/dist/es5/adapter/resources/webgl-sampler.js +0 -101
  235. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  236. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  237. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  238. package/dist/es5/adapter/resources/webgl-texture.js +0 -980
  239. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  240. package/dist/es5/adapter/webgl-canvas-context.js +0 -96
  241. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  242. package/dist/es5/adapter/webgl-device.js +0 -474
  243. package/dist/es5/adapter/webgl-device.js.map +0 -1
  244. package/dist/es5/bundle.js +0 -7
  245. package/dist/es5/bundle.js.map +0 -1
  246. package/dist/es5/classic/accessor.js +0 -181
  247. package/dist/es5/classic/accessor.js.map +0 -1
  248. package/dist/es5/classic/buffer.js +0 -468
  249. package/dist/es5/classic/buffer.js.map +0 -1
  250. package/dist/es5/classic/typed-array-utils.js +0 -126
  251. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  252. package/dist/es5/context/context/create-browser-context.js +0 -83
  253. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  254. package/dist/es5/context/context/create-headless-context.js +0 -60
  255. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  256. package/dist/es5/context/context/webgl-checks.js +0 -54
  257. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  258. package/dist/es5/context/debug/spector.js +0 -133
  259. package/dist/es5/context/debug/spector.js.map +0 -1
  260. package/dist/es5/context/debug/webgl-developer-tools.js +0 -192
  261. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  262. package/dist/es5/context/parameters/unified-parameter-api.js +0 -101
  263. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  264. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -393
  265. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  266. package/dist/es5/context/polyfill/context-data.js +0 -21
  267. package/dist/es5/context/polyfill/context-data.js.map +0 -1
  268. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  269. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  270. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  271. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  272. package/dist/es5/context/polyfill/polyfill-table.js +0 -167
  273. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  274. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  275. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  276. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  277. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  278. package/dist/es5/context/state-tracker/track-context-state.js +0 -210
  279. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  280. package/dist/es5/context/state-tracker/with-parameters.js +0 -52
  281. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  282. package/dist/es5/index.js +0 -276
  283. package/dist/es5/index.js.map +0 -1
  284. package/dist/es5/init.js +0 -10
  285. package/dist/es5/init.js.map +0 -1
  286. package/dist/es5/types/webgl.js +0 -6
  287. package/dist/es5/types/webgl.js.map +0 -1
  288. package/dist/es5/types.js +0 -2
  289. package/dist/es5/types.js.map +0 -1
  290. package/dist/esm/adapter/converters/device-parameters.js +0 -157
  291. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  292. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  293. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  294. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  295. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  296. package/dist/esm/adapter/converters/texture-formats.js +0 -945
  297. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  298. package/dist/esm/adapter/converters/vertex-formats.js +0 -38
  299. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  300. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  301. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  302. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  303. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  304. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -48
  305. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  306. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  307. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  308. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  309. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  310. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -328
  311. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  312. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  313. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  314. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  315. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  316. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  317. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  318. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  319. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  320. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  321. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  322. package/dist/esm/adapter/objects/webgl-resource.js +0 -210
  323. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  324. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  325. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  326. package/dist/esm/adapter/resources/webgl-buffer.js +0 -162
  327. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  328. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  329. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  330. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  331. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  332. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  333. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  334. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  335. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  336. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  337. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  338. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  339. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/esm/adapter/resources/webgl-sampler.js +0 -54
  341. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  342. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  343. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  344. package/dist/esm/adapter/resources/webgl-texture.js +0 -832
  345. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  346. package/dist/esm/adapter/webgl-canvas-context.js +0 -55
  347. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  348. package/dist/esm/adapter/webgl-device.js +0 -346
  349. package/dist/esm/adapter/webgl-device.js.map +0 -1
  350. package/dist/esm/bundle.js +0 -5
  351. package/dist/esm/bundle.js.map +0 -1
  352. package/dist/esm/classic/accessor.js +0 -144
  353. package/dist/esm/classic/accessor.js.map +0 -1
  354. package/dist/esm/classic/buffer.js +0 -383
  355. package/dist/esm/classic/buffer.js.map +0 -1
  356. package/dist/esm/classic/typed-array-utils.js +0 -112
  357. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  358. package/dist/esm/context/context/create-browser-context.js +0 -61
  359. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  360. package/dist/esm/context/context/create-headless-context.js +0 -43
  361. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  362. package/dist/esm/context/context/webgl-checks.js +0 -34
  363. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  364. package/dist/esm/context/debug/spector.js +0 -76
  365. package/dist/esm/context/debug/spector.js.map +0 -1
  366. package/dist/esm/context/debug/webgl-developer-tools.js +0 -115
  367. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  368. package/dist/esm/context/parameters/unified-parameter-api.js +0 -66
  369. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  370. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -446
  371. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  372. package/dist/esm/context/polyfill/context-data.js +0 -14
  373. package/dist/esm/context/polyfill/context-data.js.map +0 -1
  374. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  375. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  376. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  377. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  378. package/dist/esm/context/polyfill/polyfill-table.js +0 -161
  379. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  380. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  381. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  382. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  383. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  384. package/dist/esm/context/state-tracker/track-context-state.js +0 -182
  385. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  386. package/dist/esm/context/state-tracker/with-parameters.js +0 -40
  387. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  388. package/dist/esm/index.js +0 -27
  389. package/dist/esm/index.js.map +0 -1
  390. package/dist/esm/init.js +0 -4
  391. package/dist/esm/init.js.map +0 -1
  392. package/dist/esm/types/webgl.js +0 -2
  393. package/dist/esm/types/webgl.js.map +0 -1
  394. package/dist/esm/types.js +0 -2
  395. package/dist/esm/types.js.map +0 -1
  396. package/dist/init.d.ts +0 -2
  397. package/dist/init.d.ts.map +0 -1
  398. package/dist/init.js +0 -4
  399. package/dist/init.js.map +0 -1
  400. package/src/bundle.ts +0 -4
  401. package/src/init.ts +0 -4
@@ -1 +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,400 +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
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
- instanceCount,
166
- firstVertex = 0
167
- } = options;
168
- const drawMode = getDrawMode(this.props.topology);
169
- const isIndexed = Boolean(this._indexBuffer);
170
- const indexType = ((_this$_indexBuffer = this._indexBuffer) === null || _this$_indexBuffer === void 0 ? void 0 : _this$_indexBuffer.props.indexType) === 'uint16' ? GL.UNSIGNED_SHORT : GL.UNSIGNED_INT;
171
- const isInstanced = Number(options.instanceCount) > 0;
172
-
173
- if (!this._areTexturesRenderable() || options.vertexCount === 0) {
174
- return false;
175
- }
176
-
177
- this.device.gl.useProgram(this.handle);
178
- this.vertexArrayObject.bind(() => {
179
- const primitiveMode = getGLPrimitive(this.props.topology);
180
- const transformFeedback = null;
181
-
182
- if (transformFeedback) {
183
- transformFeedback.begin(primitiveMode);
184
- }
185
-
186
- this._applyBindings();
187
-
188
- this._applyUniforms();
189
-
190
- withDeviceParameters(this.device, this.props.parameters, () => {
191
- withGLParameters(this.device, {
192
- framebuffer: renderPass.props.framebuffer
193
- }, () => {
194
- if (isIndexed && isInstanced) {
195
- var _this$device$gl2;
196
-
197
- (_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);
198
- } else if (isIndexed) {
199
- this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex);
200
- } else if (isInstanced) {
201
- var _this$device$gl3;
202
-
203
- (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(drawMode, firstVertex, vertexCount || 0, instanceCount || 0);
204
- } else {
205
- this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
206
- }
207
- });
208
-
209
- if (transformFeedback) {
210
- transformFeedback.end();
211
- }
212
- });
213
- });
214
- return true;
215
- }
216
-
217
- _compileAndLink() {
218
- const {
219
- gl
220
- } = this.device;
221
- gl.attachShader(this.handle, this.vs.handle);
222
- gl.attachShader(this.handle, this.fs.handle);
223
- log.time(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
224
- gl.linkProgram(this.handle);
225
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, "linkProgram for ".concat(this.id))();
226
-
227
- if (gl.debug || log.level > 0) {
228
- const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
229
-
230
- if (!linked) {
231
- throw new Error("Error linking: ".concat(gl.getProgramInfoLog(this.handle)));
232
- }
233
-
234
- gl.validateProgram(this.handle);
235
- const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
236
-
237
- if (!validated) {
238
- throw new Error("Error validating: ".concat(gl.getProgramInfoLog(this.handle)));
239
- }
240
- }
241
- }
242
-
243
- _areTexturesRenderable() {
244
- let texturesRenderable = true;
245
-
246
- for (const [, texture] of Object.entries(this._textureUniforms)) {
247
- texture.update();
248
- texturesRenderable = texturesRenderable && texture.loaded;
249
- }
250
-
251
- for (const [, texture] of Object.entries(this.bindings)) {
252
- if (texture.loaded !== undefined) {
253
- texturesRenderable = texturesRenderable && texture.loaded;
254
- }
255
- }
256
-
257
- return texturesRenderable;
258
- }
259
-
260
- _applyBindings() {
261
- this.device.gl.useProgram(this.handle);
262
- const {
263
- gl2
264
- } = this.device;
265
-
266
- if (!gl2) {
267
- throw new Error('bindings');
268
- }
269
-
270
- let textureUnit = 0;
271
- let uniformBufferIndex = 0;
272
-
273
- for (const binding of this.layout.bindings) {
274
- const value = this.bindings[binding.name];
275
-
276
- if (!value) {
277
- throw new Error("No value for binding ".concat(binding.name, " in ").concat(this.id));
278
- }
279
-
280
- switch (binding.type) {
281
- case 'uniform':
282
- const {
283
- name
284
- } = binding;
285
- const location = gl2.getUniformBlockIndex(this.handle, name);
286
-
287
- if (location === GL.INVALID_INDEX) {
288
- throw new Error("Invalid uniform block name ".concat(name));
289
- }
290
-
291
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
292
-
293
- if (value instanceof WEBGLBuffer) {
294
- gl2.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
295
- } else {
296
- gl2.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
297
- }
298
-
299
- uniformBufferIndex += 1;
300
- break;
301
-
302
- case 'texture':
303
- if (!(value instanceof WEBGLTexture)) {
304
- throw new Error('texture');
305
- }
306
-
307
- const texture = value;
308
- gl2.activeTexture(GL.TEXTURE0 + textureUnit);
309
- gl2.bindTexture(texture.target, texture.handle);
310
- textureUnit += 1;
311
- break;
312
-
313
- case 'sampler':
314
- break;
315
-
316
- case 'storage':
317
- case 'read-only-storage':
318
- throw new Error("binding type '".concat(binding.type, "' not supported in WebGL"));
319
- }
320
- }
321
- }
322
-
323
- _applyUniforms() {
324
- for (const uniformLayout of this.layout.uniforms || []) {
325
- const {
326
- name,
327
- location,
328
- type,
329
- textureUnit
330
- } = uniformLayout;
331
- const value = this.uniforms[name] || textureUnit;
332
-
333
- if (value !== undefined) {
334
- setUniform(this.device.gl, location, type, value);
335
- }
336
- }
337
- }
338
-
339
- }
340
-
341
- function getDrawMode(topology) {
342
- switch (topology) {
343
- case 'point-list':
344
- return GL.POINTS;
345
-
346
- case 'line-list':
347
- return GL.LINES;
348
-
349
- case 'line-strip':
350
- return GL.LINE_STRIP;
351
-
352
- case 'line-loop':
353
- return GL.LINE_LOOP;
354
-
355
- case 'triangle-list':
356
- return GL.TRIANGLES;
357
-
358
- case 'triangle-strip':
359
- return GL.TRIANGLE_STRIP;
360
-
361
- case 'triangle-fan':
362
- return GL.TRIANGLE_FAN;
363
-
364
- default:
365
- throw new Error(topology);
366
- }
367
- }
368
-
369
- function getGLPrimitive(topology) {
370
- switch (topology) {
371
- case 'point-list':
372
- return GL.POINTS;
373
-
374
- case 'line-list':
375
- return GL.LINES;
376
-
377
- case 'line-strip':
378
- return GL.LINES;
379
-
380
- case 'line-loop':
381
- return GL.LINES;
382
-
383
- case 'triangle-list':
384
- return GL.TRIANGLES;
385
-
386
- case 'triangle-strip':
387
- return GL.TRIANGLES;
388
-
389
- case 'triangle-fan':
390
- return GL.TRIANGLES;
391
-
392
- default:
393
- throw new Error(topology);
394
- }
395
- }
396
-
397
- function getAttributeLayout(layout, name) {
398
- return layout.attributes.find(binding => binding.name === name) || null;
399
- }
400
- //# 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","instanceCount","firstVertex","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"],"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 {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 override 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\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 [, texture] of Object.entries(this._textureUniforms)) {\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n for (const [, 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\n// function 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\n/* TODO\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*/\n"],"file":"webgl-render-pipeline.js"}
@@ -1,54 +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
- toString() {
33
- return "Sampler(".concat(this.id, ",").concat(JSON.stringify(this.props), ")");
34
- }
35
-
36
- _setSamplerParameters(parameters) {
37
- for (const [pname, value] of Object.entries(parameters)) {
38
- const param = Number(pname);
39
-
40
- switch (param) {
41
- case GL.TEXTURE_MIN_LOD:
42
- case GL.TEXTURE_MAX_LOD:
43
- this.device.gl2.samplerParameterf(this.handle, param, value);
44
- break;
45
-
46
- default:
47
- this.device.gl2.samplerParameteri(this.handle, param, value);
48
- break;
49
- }
50
- }
51
- }
52
-
53
- }
54
- //# 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","toString","id","JSON","stringify","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;;AAEQM,EAAAA,OAAO,GAAS;AACvB,QAAI,KAAKJ,MAAT,EAAiB;AACf,WAAKJ,MAAL,CAAYK,GAAZ,CAAgBI,aAAhB,CAA8B,KAAKL,MAAnC;AAEA,WAAKA,MAAL,GAAcM,SAAd;AACD;AACF;;AAEQC,EAAAA,QAAQ,GAAW;AAC1B,6BAAkB,KAAKC,EAAvB,cAA6BC,IAAI,CAACC,SAAL,CAAe,KAAKb,KAApB,CAA7B;AACD;;AAGOM,EAAAA,qBAAqB,CAACL,UAAD,EAAwC;AACnE,SAAK,MAAM,CAACa,KAAD,EAAQC,KAAR,CAAX,IAA6BC,MAAM,CAACC,OAAP,CAAehB,UAAf,CAA7B,EAAyD;AAGvD,YAAMiB,KAAK,GAAGC,MAAM,CAACL,KAAD,CAApB;;AACA,cAAQI,KAAR;AACE,aAAKvB,EAAE,CAACyB,eAAR;AACA,aAAKzB,EAAE,CAAC0B,eAAR;AACE,eAAKtB,MAAL,CAAYK,GAAZ,CAAgBkB,iBAAhB,CAAkC,KAAKnB,MAAvC,EAA+Ce,KAA/C,EAAsDH,KAAtD;AACA;;AACF;AACE,eAAKhB,MAAL,CAAYK,GAAZ,CAAgBmB,iBAAhB,CAAkC,KAAKpB,MAAvC,EAA+Ce,KAA/C,EAAsDH,KAAtD;AACA;AAPJ;AASD;AACF;;AA3C+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 override 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 override toString(): string {\n return `Sampler(${this.id},${JSON.stringify(this.props)})`;\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 override 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"}