@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.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 (651) hide show
  1. package/dist/api/device2.d.ts +52 -0
  2. package/dist/api/device2.d.ts.map +1 -0
  3. package/dist/api/device2.js +23 -0
  4. package/dist/api/device2.js.map +1 -0
  5. package/dist/classes/accessor.js +2 -2
  6. package/dist/classes/accessor.js.map +1 -1
  7. package/dist/classes/accessor.ts.disabled +1 -1
  8. package/dist/classes/clear.d.ts +3 -2
  9. package/dist/classes/clear.d.ts.map +1 -1
  10. package/dist/classes/clear.js +7 -4
  11. package/dist/classes/clear.js.map +1 -1
  12. package/dist/classes/copy-and-blit.d.ts +18 -1
  13. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  14. package/dist/classes/copy-and-blit.js +30 -25
  15. package/dist/classes/copy-and-blit.js.map +1 -1
  16. package/dist/classes/framebuffer.d.ts +10 -1
  17. package/dist/classes/framebuffer.d.ts.map +1 -1
  18. package/dist/classes/framebuffer.js +15 -15
  19. package/dist/classes/framebuffer.js.map +1 -1
  20. package/dist/classes/program-configuration.d.ts +2 -2
  21. package/dist/classes/program-configuration.d.ts.map +1 -1
  22. package/dist/classes/program-configuration.js +1 -1
  23. package/dist/classes/program-configuration.js.map +1 -1
  24. package/dist/classes/program.d.ts +6 -6
  25. package/dist/classes/program.d.ts.map +1 -1
  26. package/dist/classes/program.js +11 -9
  27. package/dist/classes/program.js.map +1 -1
  28. package/dist/classes/query.d.ts.map +1 -1
  29. package/dist/classes/query.js +6 -5
  30. package/dist/classes/query.js.map +1 -1
  31. package/dist/classes/renderbuffer-formats.js +1 -1
  32. package/dist/classes/renderbuffer-formats.js.map +1 -1
  33. package/dist/classes/renderbuffer.d.ts.map +1 -1
  34. package/dist/classes/renderbuffer.js +4 -3
  35. package/dist/classes/renderbuffer.js.map +1 -1
  36. package/dist/classes/texture-2d.d.ts +4 -3
  37. package/dist/classes/texture-2d.d.ts.map +1 -1
  38. package/dist/classes/texture-2d.js +5 -8
  39. package/dist/classes/texture-2d.js.map +1 -1
  40. package/dist/classes/texture-3d.d.ts +3 -2
  41. package/dist/classes/texture-3d.d.ts.map +1 -1
  42. package/dist/classes/texture-3d.js +15 -6
  43. package/dist/classes/texture-3d.js.map +1 -1
  44. package/dist/classes/texture-cube.d.ts +2 -1
  45. package/dist/classes/texture-cube.d.ts.map +1 -1
  46. package/dist/classes/texture-cube.js +3 -4
  47. package/dist/classes/texture-cube.js.map +1 -1
  48. package/dist/classes/texture-formats.js +1 -1
  49. package/dist/classes/texture-formats.js.map +1 -1
  50. package/dist/classes/texture.d.ts +14 -9
  51. package/dist/classes/texture.d.ts.map +1 -1
  52. package/dist/classes/texture.js +19 -18
  53. package/dist/classes/texture.js.map +1 -1
  54. package/dist/classes/transform-feedback.d.ts.map +1 -1
  55. package/dist/classes/transform-feedback.js +5 -4
  56. package/dist/classes/transform-feedback.js.map +1 -1
  57. package/dist/classes/uniform-buffer-layout.js +1 -1
  58. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  59. package/dist/classes/uniforms.d.ts +0 -1
  60. package/dist/classes/uniforms.d.ts.map +1 -1
  61. package/dist/classes/uniforms.js +1 -2
  62. package/dist/classes/uniforms.js.map +1 -1
  63. package/dist/classes/vertex-array-object.d.ts +1 -1
  64. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  65. package/dist/classes/vertex-array-object.js +8 -9
  66. package/dist/classes/vertex-array-object.js.map +1 -1
  67. package/dist/classes/vertex-array.d.ts +1 -1
  68. package/dist/classes/vertex-array.d.ts.map +1 -1
  69. package/dist/classes/vertex-array.js +1 -2
  70. package/dist/classes/vertex-array.js.map +1 -1
  71. package/dist/classes/webgl-buffer.d.ts +2 -0
  72. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  73. package/dist/classes/webgl-buffer.js +8 -5
  74. package/dist/classes/webgl-buffer.js.map +1 -1
  75. package/dist/classes/webgl-resource.d.ts +6 -4
  76. package/dist/classes/webgl-resource.d.ts.map +1 -1
  77. package/dist/classes/webgl-resource.js +12 -8
  78. package/dist/classes/webgl-resource.js.map +1 -1
  79. package/dist/classes/webgl-shader.d.ts +3 -1
  80. package/dist/classes/webgl-shader.d.ts.map +1 -1
  81. package/dist/classes/webgl-shader.js +7 -4
  82. package/dist/classes/webgl-shader.js.map +1 -1
  83. package/dist/context/context/context-state.d.ts +18 -0
  84. package/dist/context/context/context-state.d.ts.map +1 -0
  85. package/dist/context/context/context-state.js +26 -0
  86. package/dist/context/context/context-state.js.map +1 -0
  87. package/dist/context/context/create-context.d.ts +40 -0
  88. package/dist/context/context/create-context.d.ts.map +1 -0
  89. package/dist/context/context/create-context.js +37 -0
  90. package/dist/context/context/create-context.js.map +1 -0
  91. package/dist/context/context/device-pixels.d.ts +25 -0
  92. package/dist/context/context/device-pixels.d.ts.map +1 -0
  93. package/dist/context/context/device-pixels.js +98 -0
  94. package/dist/context/context/device-pixels.js.map +1 -0
  95. package/dist/context/context/get-canvas.d.ts +13 -0
  96. package/dist/context/context/get-canvas.d.ts.map +1 -0
  97. package/dist/context/context/get-canvas.js +31 -0
  98. package/dist/context/context/get-canvas.js.map +1 -0
  99. package/dist/context/context/resize-context.d.ts +20 -0
  100. package/dist/context/context/resize-context.d.ts.map +1 -0
  101. package/dist/context/context/resize-context.js +15 -0
  102. package/dist/context/context/resize-context.js.map +1 -0
  103. package/dist/context/context/webgl-checks.d.ts +13 -0
  104. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  105. package/dist/context/context/webgl-checks.js +34 -0
  106. package/dist/context/context/webgl-checks.js.map +1 -0
  107. package/dist/context/parameters/unified-parameter-api.d.ts +30 -0
  108. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  109. package/dist/context/parameters/unified-parameter-api.js +65 -0
  110. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  111. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  113. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  114. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  116. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  117. package/dist/context/parameters/webgl-parameters.js +2 -0
  118. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  119. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  120. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  121. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  122. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  123. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  124. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  125. package/dist/context/polyfill/polyfill-context.js +91 -0
  126. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  127. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  128. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  129. package/dist/context/polyfill/polyfill-table.js +160 -0
  130. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  131. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  132. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  133. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  134. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  135. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  136. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  137. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  138. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  139. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  141. package/dist/context/state-tracker/track-context-state.js +169 -0
  142. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  143. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  144. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  145. package/dist/context/state-tracker/with-parameters.js +36 -0
  146. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  147. package/dist/debug/debug-uniforms.js +1 -1
  148. package/dist/debug/debug-uniforms.js.map +1 -1
  149. package/dist/debug/debug-vertex-array.js +2 -2
  150. package/dist/debug/debug-vertex-array.js.map +1 -1
  151. package/dist/device/check-glsl-extension.d.ts +4 -0
  152. package/dist/device/check-glsl-extension.d.ts.map +1 -0
  153. package/dist/device/check-glsl-extension.js +22 -0
  154. package/dist/device/check-glsl-extension.js.map +1 -0
  155. package/dist/device/device-features.d.ts +12 -0
  156. package/dist/device/device-features.d.ts.map +1 -0
  157. package/dist/device/device-features.js +123 -0
  158. package/dist/device/device-features.js.map +1 -0
  159. package/dist/device/device-limits.d.ts +51 -0
  160. package/dist/device/device-limits.d.ts.map +1 -0
  161. package/dist/device/device-limits.js +90 -0
  162. package/dist/device/device-limits.js.map +1 -0
  163. package/dist/device/get-device-info.d.ts +4 -0
  164. package/dist/device/get-device-info.d.ts.map +1 -0
  165. package/dist/device/get-device-info.js +44 -0
  166. package/dist/device/get-device-info.js.map +1 -0
  167. package/dist/device/webgl-device.d.ts +111 -0
  168. package/dist/device/webgl-device.d.ts.map +1 -0
  169. package/dist/device/webgl-device.js +208 -0
  170. package/dist/device/webgl-device.js.map +1 -0
  171. package/dist/es5/api/device2.js +42 -0
  172. package/dist/es5/api/device2.js.map +1 -0
  173. package/dist/es5/bundle.js +1 -1
  174. package/dist/es5/bundle.js.map +1 -1
  175. package/dist/es5/classes/accessor.js +104 -74
  176. package/dist/es5/classes/accessor.js.map +1 -1
  177. package/dist/es5/classes/accessor.ts.disabled +1 -1
  178. package/dist/es5/classes/clear.js +55 -34
  179. package/dist/es5/classes/clear.js.map +1 -1
  180. package/dist/es5/classes/copy-and-blit.js +175 -156
  181. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  182. package/dist/es5/classes/framebuffer.js +647 -518
  183. package/dist/es5/classes/framebuffer.js.map +1 -1
  184. package/dist/es5/classes/program-configuration.js +138 -121
  185. package/dist/es5/classes/program-configuration.js.map +1 -1
  186. package/dist/es5/classes/program.js +368 -292
  187. package/dist/es5/classes/program.js.map +1 -1
  188. package/dist/es5/classes/query.js +172 -107
  189. package/dist/es5/classes/query.js.map +1 -1
  190. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  191. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  192. package/dist/es5/classes/renderbuffer.js +151 -98
  193. package/dist/es5/classes/renderbuffer.js.map +1 -1
  194. package/dist/es5/classes/texture-2d.js +44 -17
  195. package/dist/es5/classes/texture-2d.js.map +1 -1
  196. package/dist/es5/classes/texture-3d.js +107 -48
  197. package/dist/es5/classes/texture-3d.js.map +1 -1
  198. package/dist/es5/classes/texture-cube.js +169 -110
  199. package/dist/es5/classes/texture-cube.js.map +1 -1
  200. package/dist/es5/classes/texture-formats.js +42 -71
  201. package/dist/es5/classes/texture-formats.js.map +1 -1
  202. package/dist/es5/classes/texture.js +780 -665
  203. package/dist/es5/classes/texture.js.map +1 -1
  204. package/dist/es5/classes/transform-feedback.js +206 -150
  205. package/dist/es5/classes/transform-feedback.js.map +1 -1
  206. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  207. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  208. package/dist/es5/classes/uniforms.js +39 -80
  209. package/dist/es5/classes/uniforms.js.map +1 -1
  210. package/dist/es5/classes/vertex-array-object.js +268 -209
  211. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  212. package/dist/es5/classes/vertex-array.js +348 -303
  213. package/dist/es5/classes/vertex-array.js.map +1 -1
  214. package/dist/es5/classes/webgl-buffer.js +374 -303
  215. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  216. package/dist/es5/classes/webgl-resource.js +231 -161
  217. package/dist/es5/classes/webgl-resource.js.map +1 -1
  218. package/dist/es5/classes/webgl-shader.js +230 -134
  219. package/dist/es5/classes/webgl-shader.js.map +1 -1
  220. package/dist/es5/context/context/context-state.js +31 -0
  221. package/dist/es5/context/context/context-state.js.map +1 -0
  222. package/dist/es5/context/context/create-context.js +57 -0
  223. package/dist/es5/context/context/create-context.js.map +1 -0
  224. package/dist/es5/context/context/device-pixels.js +115 -0
  225. package/dist/es5/context/context/device-pixels.js.map +1 -0
  226. package/dist/es5/context/context/get-canvas.js +40 -0
  227. package/dist/es5/context/context/get-canvas.js.map +1 -0
  228. package/dist/es5/context/context/resize-context.js +23 -0
  229. package/dist/es5/context/context/resize-context.js.map +1 -0
  230. package/dist/es5/context/context/webgl-checks.js +54 -0
  231. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  232. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  233. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  234. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  235. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  236. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  237. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  238. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  239. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  240. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  241. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  242. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  243. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  244. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  245. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  246. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  247. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  248. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  249. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  250. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  251. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  252. package/dist/es5/debug/debug-program-configuration.js +48 -20
  253. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  254. package/dist/es5/debug/debug-uniforms.js +110 -70
  255. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  256. package/dist/es5/debug/debug-vertex-array.js +49 -54
  257. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  258. package/dist/es5/device/check-glsl-extension.js +33 -0
  259. package/dist/es5/device/check-glsl-extension.js.map +1 -0
  260. package/dist/es5/device/device-features.js +152 -0
  261. package/dist/es5/device/device-features.js.map +1 -0
  262. package/dist/es5/device/device-limits.js +64 -0
  263. package/dist/es5/device/device-limits.js.map +1 -0
  264. package/dist/es5/device/get-device-info.js +55 -0
  265. package/dist/es5/device/get-device-info.js.map +1 -0
  266. package/dist/es5/device/webgl-device.js +279 -0
  267. package/dist/es5/device/webgl-device.js.map +1 -0
  268. package/dist/es5/index.js +179 -189
  269. package/dist/es5/index.js.map +1 -1
  270. package/dist/es5/init.js +18 -14
  271. package/dist/es5/init.js.map +1 -1
  272. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  273. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  274. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  275. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  276. package/dist/es5/webgl-utils/format-utils.js +4 -4
  277. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  278. package/dist/es5/webgl-utils/get-error.js +18 -18
  279. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  280. package/dist/es5/webgl-utils/index.js +10 -10
  281. package/dist/es5/webgl-utils/is-old-ie.js +16 -0
  282. package/dist/es5/webgl-utils/is-old-ie.js.map +1 -0
  283. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  284. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  285. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  286. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  287. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  288. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  289. package/dist/es5/webgl-utils/webgl-info.ts.disabled +135 -0
  290. package/dist/esm/api/device2.js +23 -0
  291. package/dist/esm/api/device2.js.map +1 -0
  292. package/dist/esm/classes/accessor.js +2 -2
  293. package/dist/esm/classes/accessor.js.map +1 -1
  294. package/dist/esm/classes/accessor.ts.disabled +1 -1
  295. package/dist/esm/classes/clear.js +7 -4
  296. package/dist/esm/classes/clear.js.map +1 -1
  297. package/dist/esm/classes/copy-and-blit.js +30 -25
  298. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  299. package/dist/esm/classes/framebuffer.js +15 -15
  300. package/dist/esm/classes/framebuffer.js.map +1 -1
  301. package/dist/esm/classes/program-configuration.js +1 -1
  302. package/dist/esm/classes/program-configuration.js.map +1 -1
  303. package/dist/esm/classes/program.js +11 -9
  304. package/dist/esm/classes/program.js.map +1 -1
  305. package/dist/esm/classes/query.js +6 -5
  306. package/dist/esm/classes/query.js.map +1 -1
  307. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  308. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  309. package/dist/esm/classes/renderbuffer.js +4 -3
  310. package/dist/esm/classes/renderbuffer.js.map +1 -1
  311. package/dist/esm/classes/texture-2d.js +5 -8
  312. package/dist/esm/classes/texture-2d.js.map +1 -1
  313. package/dist/esm/classes/texture-3d.js +15 -6
  314. package/dist/esm/classes/texture-3d.js.map +1 -1
  315. package/dist/esm/classes/texture-cube.js +3 -4
  316. package/dist/esm/classes/texture-cube.js.map +1 -1
  317. package/dist/esm/classes/texture-formats.js +1 -1
  318. package/dist/esm/classes/texture-formats.js.map +1 -1
  319. package/dist/esm/classes/texture.js +19 -18
  320. package/dist/esm/classes/texture.js.map +1 -1
  321. package/dist/esm/classes/transform-feedback.js +5 -4
  322. package/dist/esm/classes/transform-feedback.js.map +1 -1
  323. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  324. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  325. package/dist/esm/classes/uniforms.js +1 -2
  326. package/dist/esm/classes/uniforms.js.map +1 -1
  327. package/dist/esm/classes/vertex-array-object.js +8 -9
  328. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  329. package/dist/esm/classes/vertex-array.js +1 -2
  330. package/dist/esm/classes/vertex-array.js.map +1 -1
  331. package/dist/esm/classes/webgl-buffer.js +8 -5
  332. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  333. package/dist/esm/classes/webgl-resource.js +12 -8
  334. package/dist/esm/classes/webgl-resource.js.map +1 -1
  335. package/dist/esm/classes/webgl-shader.js +7 -4
  336. package/dist/esm/classes/webgl-shader.js.map +1 -1
  337. package/dist/esm/context/context/context-state.js +26 -0
  338. package/dist/esm/context/context/context-state.js.map +1 -0
  339. package/dist/esm/context/context/create-context.js +37 -0
  340. package/dist/esm/context/context/create-context.js.map +1 -0
  341. package/dist/esm/context/context/device-pixels.js +98 -0
  342. package/dist/esm/context/context/device-pixels.js.map +1 -0
  343. package/dist/esm/context/context/get-canvas.js +31 -0
  344. package/dist/esm/context/context/get-canvas.js.map +1 -0
  345. package/dist/esm/context/context/resize-context.js +15 -0
  346. package/dist/esm/context/context/resize-context.js.map +1 -0
  347. package/dist/esm/context/context/webgl-checks.js +34 -0
  348. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  349. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  350. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  351. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  352. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  353. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  354. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  355. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  356. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  357. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  358. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  359. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  360. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  361. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  362. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  363. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  364. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  365. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  366. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  367. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  368. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  369. package/dist/esm/debug/debug-uniforms.js +1 -1
  370. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  371. package/dist/esm/debug/debug-vertex-array.js +2 -2
  372. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  373. package/dist/esm/device/check-glsl-extension.js +22 -0
  374. package/dist/esm/device/check-glsl-extension.js.map +1 -0
  375. package/dist/esm/device/device-features.js +123 -0
  376. package/dist/esm/device/device-features.js.map +1 -0
  377. package/dist/esm/device/device-limits.js +90 -0
  378. package/dist/esm/device/device-limits.js.map +1 -0
  379. package/dist/esm/device/get-device-info.js +44 -0
  380. package/dist/esm/device/get-device-info.js.map +1 -0
  381. package/dist/esm/device/webgl-device.js +208 -0
  382. package/dist/esm/device/webgl-device.js.map +1 -0
  383. package/dist/esm/index.js +22 -20
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/init.js +11 -8
  386. package/dist/esm/init.js.map +1 -1
  387. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  388. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  389. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  390. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  391. package/dist/esm/webgl-utils/format-utils.js +1 -1
  392. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  393. package/dist/esm/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  394. package/dist/esm/webgl-utils/is-old-ie.js.map +1 -0
  395. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  396. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  397. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  398. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  399. package/dist/esm/webgl-utils/webgl-info.ts.disabled +135 -0
  400. package/dist/index.d.ts +36 -20
  401. package/dist/index.d.ts.map +1 -1
  402. package/dist/index.js +22 -20
  403. package/dist/index.js.map +1 -1
  404. package/dist/init.d.ts.map +1 -1
  405. package/dist/init.js +11 -8
  406. package/dist/init.js.map +1 -1
  407. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  408. package/dist/webgl-utils/attribute-utils.js +1 -1
  409. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  410. package/dist/webgl-utils/constants-to-keys.js +1 -1
  411. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  412. package/dist/webgl-utils/format-utils.d.ts +2 -2
  413. package/dist/webgl-utils/format-utils.js +1 -1
  414. package/dist/webgl-utils/format-utils.js.map +1 -1
  415. package/dist/webgl-utils/is-old-ie.d.ts +2 -0
  416. package/dist/webgl-utils/is-old-ie.d.ts.map +1 -0
  417. package/dist/{features/check-old-ie.js → webgl-utils/is-old-ie.js} +3 -3
  418. package/dist/webgl-utils/is-old-ie.js.map +1 -0
  419. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  420. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  421. package/dist/webgl-utils/texture-utils.js +2 -2
  422. package/dist/webgl-utils/texture-utils.js.map +1 -1
  423. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  424. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  425. package/dist/webgl-utils/typed-array-utils.js +22 -18
  426. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  427. package/dist/webgl-utils/webgl-info.ts.disabled +135 -0
  428. package/package.json +5 -6
  429. package/src/.DS_Store +0 -0
  430. package/src/api/device2.ts +71 -0
  431. package/src/classes/accessor.js +2 -2
  432. package/src/classes/accessor.ts.disabled +1 -1
  433. package/src/classes/clear.ts +9 -4
  434. package/src/classes/copy-and-blit.ts +49 -52
  435. package/src/classes/framebuffer.ts +38 -35
  436. package/src/classes/program-configuration.ts +6 -6
  437. package/src/classes/program.ts +21 -15
  438. package/src/classes/query.ts +6 -6
  439. package/src/classes/renderbuffer-formats.ts +1 -1
  440. package/src/classes/renderbuffer.ts +5 -4
  441. package/src/classes/texture-2d.ts +6 -11
  442. package/src/classes/texture-3d.ts +16 -11
  443. package/src/classes/texture-cube.ts +7 -7
  444. package/src/classes/texture-formats.ts +1 -1
  445. package/src/classes/texture.ts +39 -40
  446. package/src/classes/transform-feedback.ts +14 -13
  447. package/src/classes/uniform-buffer-layout.ts +1 -1
  448. package/src/classes/uniforms.ts +4 -10
  449. package/src/classes/vertex-array-object.ts +10 -14
  450. package/src/classes/vertex-array.ts +2 -3
  451. package/src/classes/webgl-buffer.ts +7 -5
  452. package/src/classes/webgl-resource.ts +20 -18
  453. package/src/classes/webgl-shader.ts +6 -4
  454. package/src/context/context/context-state.ts +39 -0
  455. package/src/context/context/create-context.ts +83 -0
  456. package/src/context/context/device-pixels.ts +147 -0
  457. package/src/context/context/get-canvas.ts +37 -0
  458. package/src/context/context/resize-context.ts +37 -0
  459. package/src/context/context/webgl-checks.ts +49 -0
  460. package/src/context/parameters/unified-parameter-api.ts +127 -0
  461. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  462. package/src/context/parameters/webgl-parameters.ts +197 -0
  463. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  464. package/src/context/polyfill/polyfill-context.ts +98 -0
  465. package/src/context/polyfill/polyfill-table.ts +162 -0
  466. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  467. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  468. package/src/context/state-tracker/track-context-state.ts +250 -0
  469. package/src/context/state-tracker/with-parameters.ts +50 -0
  470. package/src/debug/debug-uniforms.ts +1 -1
  471. package/src/debug/debug-vertex-array.ts +2 -4
  472. package/src/device/check-glsl-extension.ts +44 -0
  473. package/src/device/device-features.ts +227 -0
  474. package/src/device/device-limits.ts +150 -0
  475. package/src/device/get-device-info.ts +49 -0
  476. package/src/device/webgl-device.ts +406 -0
  477. package/src/index.ts +76 -22
  478. package/src/init.ts +12 -9
  479. package/src/types.ts +1 -1
  480. package/src/webgl-utils/attribute-utils.ts +1 -1
  481. package/src/webgl-utils/constants-to-keys.ts +1 -1
  482. package/src/webgl-utils/format-utils.ts +1 -1
  483. package/src/{features/check-old-ie.ts → webgl-utils/is-old-ie.ts} +3 -3
  484. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  485. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  486. package/src/webgl-utils/webgl-info.ts.disabled +135 -0
  487. package/dist/context/gl-context.d.ts +0 -15
  488. package/dist/context/gl-context.d.ts.map +0 -1
  489. package/dist/context/gl-context.js +0 -32
  490. package/dist/context/gl-context.js.map +0 -1
  491. package/dist/context/luma-context-data.d.ts +0 -31
  492. package/dist/context/luma-context-data.d.ts.map +0 -1
  493. package/dist/context/luma-context-data.js +0 -5
  494. package/dist/context/luma-context-data.js.map +0 -1
  495. package/dist/es5/context/gl-context.js +0 -46
  496. package/dist/es5/context/gl-context.js.map +0 -1
  497. package/dist/es5/context/luma-context-data.js +0 -12
  498. package/dist/es5/context/luma-context-data.js.map +0 -1
  499. package/dist/es5/features/check-glsl-extension.js +0 -40
  500. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  501. package/dist/es5/features/check-old-ie.js +0 -15
  502. package/dist/es5/features/check-old-ie.js.map +0 -1
  503. package/dist/es5/features/features.js +0 -85
  504. package/dist/es5/features/features.js.map +0 -1
  505. package/dist/es5/features/index.js +0 -64
  506. package/dist/es5/features/index.js.map +0 -1
  507. package/dist/es5/features/limits.js +0 -72
  508. package/dist/es5/features/limits.js.map +0 -1
  509. package/dist/es5/features/webgl-features-table.js +0 -84
  510. package/dist/es5/features/webgl-features-table.js.map +0 -1
  511. package/dist/es5/features/webgl-limits-table.js +0 -172
  512. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  513. package/dist/es5/utils/array-utils-flat.js +0 -50
  514. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  515. package/dist/es5/utils/assert.js +0 -13
  516. package/dist/es5/utils/assert.js.map +0 -1
  517. package/dist/es5/utils/check-props.js +0 -50
  518. package/dist/es5/utils/check-props.js.map +0 -1
  519. package/dist/es5/utils/format-value.js +0 -57
  520. package/dist/es5/utils/format-value.js.map +0 -1
  521. package/dist/es5/utils/index.js +0 -68
  522. package/dist/es5/utils/index.js.map +0 -1
  523. package/dist/es5/utils/is-old-ie.js +0 -13
  524. package/dist/es5/utils/is-old-ie.js.map +0 -1
  525. package/dist/es5/utils/load-file.js +0 -43
  526. package/dist/es5/utils/load-file.js.map +0 -1
  527. package/dist/es5/utils/stub-methods.js +0 -25
  528. package/dist/es5/utils/stub-methods.js.map +0 -1
  529. package/dist/es5/utils/utils.js +0 -31
  530. package/dist/es5/utils/utils.js.map +0 -1
  531. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  532. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  533. package/dist/esm/context/gl-context.js +0 -32
  534. package/dist/esm/context/gl-context.js.map +0 -1
  535. package/dist/esm/context/luma-context-data.js +0 -5
  536. package/dist/esm/context/luma-context-data.js.map +0 -1
  537. package/dist/esm/features/check-glsl-extension.js +0 -27
  538. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  539. package/dist/esm/features/check-old-ie.js.map +0 -1
  540. package/dist/esm/features/features.js +0 -67
  541. package/dist/esm/features/features.js.map +0 -1
  542. package/dist/esm/features/index.js +0 -5
  543. package/dist/esm/features/index.js.map +0 -1
  544. package/dist/esm/features/limits.js +0 -55
  545. package/dist/esm/features/limits.js.map +0 -1
  546. package/dist/esm/features/webgl-features-table.js +0 -71
  547. package/dist/esm/features/webgl-features-table.js.map +0 -1
  548. package/dist/esm/features/webgl-limits-table.js +0 -161
  549. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  550. package/dist/esm/utils/array-utils-flat.js +0 -39
  551. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  552. package/dist/esm/utils/assert.js +0 -6
  553. package/dist/esm/utils/assert.js.map +0 -1
  554. package/dist/esm/utils/check-props.js +0 -38
  555. package/dist/esm/utils/check-props.js.map +0 -1
  556. package/dist/esm/utils/format-value.js +0 -50
  557. package/dist/esm/utils/format-value.js.map +0 -1
  558. package/dist/esm/utils/index.js +0 -7
  559. package/dist/esm/utils/index.js.map +0 -1
  560. package/dist/esm/utils/is-old-ie.js +0 -5
  561. package/dist/esm/utils/is-old-ie.js.map +0 -1
  562. package/dist/esm/utils/load-file.js +0 -30
  563. package/dist/esm/utils/load-file.js.map +0 -1
  564. package/dist/esm/utils/stub-methods.js +0 -16
  565. package/dist/esm/utils/stub-methods.js.map +0 -1
  566. package/dist/esm/utils/utils.js +0 -20
  567. package/dist/esm/utils/utils.js.map +0 -1
  568. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  569. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  570. package/dist/features/check-glsl-extension.d.ts +0 -2
  571. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  572. package/dist/features/check-glsl-extension.js +0 -27
  573. package/dist/features/check-glsl-extension.js.map +0 -1
  574. package/dist/features/check-old-ie.d.ts +0 -2
  575. package/dist/features/check-old-ie.d.ts.map +0 -1
  576. package/dist/features/check-old-ie.js.map +0 -1
  577. package/dist/features/features.d.ts +0 -6
  578. package/dist/features/features.d.ts.map +0 -1
  579. package/dist/features/features.js +0 -67
  580. package/dist/features/features.js.map +0 -1
  581. package/dist/features/index.d.ts +0 -5
  582. package/dist/features/index.d.ts.map +0 -1
  583. package/dist/features/index.js +0 -5
  584. package/dist/features/index.js.map +0 -1
  585. package/dist/features/limits.d.ts +0 -28
  586. package/dist/features/limits.d.ts.map +0 -1
  587. package/dist/features/limits.js +0 -55
  588. package/dist/features/limits.js.map +0 -1
  589. package/dist/features/webgl-features-table.d.ts +0 -30
  590. package/dist/features/webgl-features-table.d.ts.map +0 -1
  591. package/dist/features/webgl-features-table.js +0 -71
  592. package/dist/features/webgl-features-table.js.map +0 -1
  593. package/dist/features/webgl-limits-table.d.ts +0 -161
  594. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  595. package/dist/features/webgl-limits-table.js +0 -161
  596. package/dist/features/webgl-limits-table.js.map +0 -1
  597. package/dist/utils/array-utils-flat.d.ts +0 -9
  598. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  599. package/dist/utils/array-utils-flat.js +0 -39
  600. package/dist/utils/array-utils-flat.js.map +0 -1
  601. package/dist/utils/assert.d.ts +0 -2
  602. package/dist/utils/assert.d.ts.map +0 -1
  603. package/dist/utils/assert.js +0 -6
  604. package/dist/utils/assert.js.map +0 -1
  605. package/dist/utils/check-props.d.ts +0 -2
  606. package/dist/utils/check-props.d.ts.map +0 -1
  607. package/dist/utils/check-props.js +0 -38
  608. package/dist/utils/check-props.js.map +0 -1
  609. package/dist/utils/format-value.d.ts +0 -5
  610. package/dist/utils/format-value.d.ts.map +0 -1
  611. package/dist/utils/format-value.js +0 -50
  612. package/dist/utils/format-value.js.map +0 -1
  613. package/dist/utils/index.d.ts +0 -7
  614. package/dist/utils/index.d.ts.map +0 -1
  615. package/dist/utils/index.js +0 -7
  616. package/dist/utils/index.js.map +0 -1
  617. package/dist/utils/is-old-ie.d.ts +0 -4
  618. package/dist/utils/is-old-ie.d.ts.map +0 -1
  619. package/dist/utils/is-old-ie.js +0 -5
  620. package/dist/utils/is-old-ie.js.map +0 -1
  621. package/dist/utils/load-file.d.ts +0 -4
  622. package/dist/utils/load-file.d.ts.map +0 -1
  623. package/dist/utils/load-file.js +0 -30
  624. package/dist/utils/load-file.js.map +0 -1
  625. package/dist/utils/stub-methods.d.ts +0 -2
  626. package/dist/utils/stub-methods.d.ts.map +0 -1
  627. package/dist/utils/stub-methods.js +0 -16
  628. package/dist/utils/stub-methods.js.map +0 -1
  629. package/dist/utils/utils.d.ts +0 -15
  630. package/dist/utils/utils.d.ts.map +0 -1
  631. package/dist/utils/utils.js +0 -20
  632. package/dist/utils/utils.js.map +0 -1
  633. package/src/context/gl-context.ts +0 -31
  634. package/src/context/luma-context-data.ts +0 -27
  635. package/src/features/check-glsl-extension.ts +0 -34
  636. package/src/features/features.ts +0 -80
  637. package/src/features/index.ts +0 -5
  638. package/src/features/limits.ts +0 -66
  639. package/src/features/webgl-features-table.ts +0 -104
  640. package/src/features/webgl-limits-table.ts +0 -51
  641. package/src/utils/array-utils-flat.ts +0 -56
  642. package/src/utils/assert.ts +0 -7
  643. package/src/utils/check-props.ts +0 -68
  644. package/src/utils/format-value.ts +0 -37
  645. package/src/utils/index.ts +0 -6
  646. package/src/utils/is-old-ie.ts +0 -6
  647. package/src/utils/load-file.ts +0 -40
  648. package/src/utils/stub-methods.ts +0 -20
  649. package/src/utils/utils.ts +0 -35
  650. package/src/webgl-utils/texture-utils.d.ts +0 -11
  651. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/webgl-resource.ts"],"names":["ERR_RESOURCE_METHOD_UNDEFINED","WebGLResource","Resource","constructor","gl","props","defaultProps","id","userData","gl2","name","_handle","handle","undefined","_createHandle","byteLength","toString","delete","deleteChildren","children","_deleteHandle","removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","_bound","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","stubRemovedMethods","className","version","methodNames","initialize","_getOptsFromHandle"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {Resource} from '@luma.gl/api';\nexport type {ResourceProps} from '@luma.gl/api';\nimport {getKey, getKeyValue} from '../webgl-utils';\nimport {uid, assert, stubRemovedMethods} from '../utils';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n/**\n * Base class for WebGL object wrappers\n */\n export default class WebGLResource<Props> extends Resource<Props> {\n id: string;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext;\n userData: any;\n private _handle: any;\n\n private _bound = false;\n // Only meaningful for resources that allocate GPU memory\n byteLength = 0;\n\n constructor(gl: WebGLRenderingContext, props: Props, defaultProps: Required<Props>) {\n super(gl as any, props, defaultProps);\n\n assertWebGLContext(gl);\n\n // extends \n // @ts-expect-error\n const {id, userData = {}} = props || {};\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this.constructor.name);\n this.userData = userData;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n // @ts-expect-error\n this._handle = props?.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n this.byteLength = 0;\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.props);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.props);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this.removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach((child) => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param name\n * @return param\n */\n getParameter(pname: number, props = {}): any {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, props);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options: {parameters?, keys?} = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n // @ts-expect-error\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(props) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, props) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n /*\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n */\n}\n"],"file":"webgl-resource.js"}
1
+ {"version":3,"sources":["../../../src/classes/webgl-resource.ts"],"names":["ERR_RESOURCE_METHOD_UNDEFINED","WebGLResource","device","props","defaultProps","WebGLDevice","attach","gl","id","userData","gl2","constructor","name","_handle","handle","undefined","_createHandle","byteLength","deleteChildren","children","_deleteHandle","removeStats","filter","Boolean","forEach","child","delete","funcOrHandle","_bindHandle","value","_bound","bind","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","options","keys","values","parameterKeys","Object","key","getParameter","type","Error","_setParameter","setParameter","className","version","methodNames","Resource"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {Resource, assert, uid, stubRemovedMethods} from '@luma.gl/api';\nimport type {Device} from '@luma.gl/api';\nexport type {ResourceProps} from '@luma.gl/api';\nimport {isWebGL2, assertWebGLContext} from '../context/context/webgl-checks';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport WebGLDevice from '../device/webgl-device';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n/**\n * Base class for WebGL object wrappers\n */\n export default class WebGLResource<Props> extends Resource<Props> {\n id: string;\n userData: any;\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly gl2: WebGL2RenderingContext;\n private _handle: any;\n\n private _bound = false;\n // Only meaningful for resources that allocate GPU memory\n byteLength = 0;\n\n constructor(device: Device, props: Props, defaultProps: Required<Props>) {\n super(device, props, defaultProps);\n\n this.device = WebGLDevice.attach(device);\n const gl = this.device.gl;\n\n assertWebGLContext(gl);\n\n // extends \n // @ts-expect-error\n const {id, userData = {}} = props || {};\n this.gl = gl;\n this.gl2 = gl as WebGL2RenderingContext;\n this.id = id || uid(this.constructor.name);\n this.userData = userData;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n // @ts-expect-error\n this._handle = props?.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n this.byteLength = 0;\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.props);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.props);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-expect-error\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this.removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-expect-error\n if (children && deleteChildren) {\n // @ts-expect-error\n children.filter(Boolean).forEach((child) => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param name\n * @return param\n */\n getParameter(pname: number, props = {}): any {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, props);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options: {parameters?, keys?} = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-expect-error\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-expect-error\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n // @ts-expect-error\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(props) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname, props): number {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n /*\n _addStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this.constructor.name;\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n trackAllocatedMemory(bytes, name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n trackDeallocatedMemory(name = this.constructor.name) {\n const stats = lumaStats.get('Memory Usage');\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n */\n}\n"],"file":"webgl-resource.js"}
@@ -7,190 +7,286 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.FragmentShader = exports.VertexShader = exports.Shader = exports.WEBGLShader = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
10
26
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
27
 
12
- var _constants = _interopRequireDefault(require("@luma.gl/constants"));
28
+ var _api = require("@luma.gl/api");
13
29
 
14
- var _gltools = require("@luma.gl/gltools");
30
+ var _constants = _interopRequireDefault(require("@luma.gl/constants"));
15
31
 
16
32
  var _shadertools = require("@luma.gl/shadertools");
17
33
 
18
- var _api = require("@luma.gl/api");
34
+ var _webglChecks = require("../context/context/webgl-checks");
19
35
 
20
36
  var _parseShaderCompilerLog = require("../webgl-utils/parse-shader-compiler-log");
21
37
 
22
- var _utils = require("../utils");
38
+ var _webglDevice = _interopRequireDefault(require("../device/webgl-device"));
23
39
 
24
- const ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
25
41
 
26
- class WEBGLShader extends _api.Shader {
27
- constructor(gl, props) {
28
- super(gl, {
29
- id: getShaderIdFromProps(props),
30
- ...props
31
- });
32
- (0, _defineProperty2.default)(this, "gl", void 0);
33
- (0, _defineProperty2.default)(this, "handle", void 0);
34
- (0, _defineProperty2.default)(this, "stage", void 0);
35
- this.gl = gl;
36
-
37
- switch (this.props.stage) {
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
+
44
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
45
+
46
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
+
48
+ var ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';
49
+
50
+ var WEBGLShader = function (_ShaderAPI) {
51
+ (0, _inherits2.default)(WEBGLShader, _ShaderAPI);
52
+
53
+ var _super = _createSuper(WEBGLShader);
54
+
55
+ function WEBGLShader(gl, props) {
56
+ var _this;
57
+
58
+ (0, _classCallCheck2.default)(this, WEBGLShader);
59
+ _this = _super.call(this, _webglDevice.default.attach(gl), _objectSpread({
60
+ id: getShaderIdFromProps(props)
61
+ }, props));
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "gl", void 0);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "stage", void 0);
66
+ _this.device = _webglDevice.default.attach(gl);
67
+ _this.gl = gl;
68
+
69
+ switch (_this.props.stage) {
38
70
  case 'vertex':
39
- this.handle = this.props.handle || this.gl.createShader(_constants.default.VERTEX_SHADER);
71
+ _this.handle = _this.props.handle || _this.gl.createShader(_constants.default.VERTEX_SHADER);
40
72
  break;
41
73
 
42
74
  case 'fragment':
43
- this.handle = this.props.handle || this.gl.createShader(_constants.default.FRAGMENT_SHADER);
75
+ _this.handle = _this.props.handle || _this.gl.createShader(_constants.default.FRAGMENT_SHADER);
44
76
  break;
45
77
 
46
78
  default:
47
- throw new Error(this.props.stage);
79
+ throw new Error(_this.props.stage);
48
80
  }
49
81
 
50
- this.stage = this.props.stage;
82
+ _this.stage = _this.props.stage;
51
83
 
52
- this._compile(props.source);
53
- }
84
+ _this._compile(props.source);
54
85
 
55
- destroy() {
56
- if (this.handle) {
57
- this.removeStats();
58
- this.gl.deleteShader(this.handle);
59
- this.handle = null;
60
- }
86
+ return _this;
61
87
  }
62
88
 
63
- async compilationInfo() {
64
- const log = this.gl.getShaderInfoLog(this.handle);
65
- return (0, _parseShaderCompilerLog.parseShaderCompilerLog)(log);
66
- }
67
-
68
- _compile(source) {
69
- if (!source.startsWith('#version ')) {
70
- source = "#version 100\n".concat(source);
89
+ (0, _createClass2.default)(WEBGLShader, [{
90
+ key: "destroy",
91
+ value: function destroy() {
92
+ if (this.handle) {
93
+ this.removeStats();
94
+ this.gl.deleteShader(this.handle);
95
+ this.handle = null;
96
+ }
71
97
  }
72
-
73
- this.gl.shaderSource(this.handle, source);
74
- this.gl.compileShader(this.handle);
75
- const compileStatus = this.gl.getShaderParameter(this.handle, _constants.default.COMPILE_STATUS);
76
-
77
- if (!compileStatus) {
78
- const shaderLog = this.gl.getShaderInfoLog(this.handle);
79
- const messages = (0, _parseShaderCompilerLog.parseShaderCompilerLog)(shaderLog).filter(message => message.type === 'error');
80
- const formattedLog = (0, _shadertools.formatCompilerLog)(messages, source);
81
- const shaderName = (0, _shadertools.getShaderInfo)(source).name;
82
- const shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
83
-
84
- _gltools.log.error("GLSL compilation errors in ".concat(shaderName, "\n").concat(formattedLog))();
85
-
86
- throw new Error("GLSL compilation errors in ".concat(shaderName));
98
+ }, {
99
+ key: "compilationInfo",
100
+ value: function () {
101
+ var _compilationInfo = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
102
+ var log;
103
+ return _regenerator.default.wrap(function _callee$(_context) {
104
+ while (1) {
105
+ switch (_context.prev = _context.next) {
106
+ case 0:
107
+ log = this.gl.getShaderInfoLog(this.handle);
108
+ return _context.abrupt("return", (0, _parseShaderCompilerLog.parseShaderCompilerLog)(log));
109
+
110
+ case 2:
111
+ case "end":
112
+ return _context.stop();
113
+ }
114
+ }
115
+ }, _callee, this);
116
+ }));
117
+
118
+ function compilationInfo() {
119
+ return _compilationInfo.apply(this, arguments);
120
+ }
121
+
122
+ return compilationInfo;
123
+ }()
124
+ }, {
125
+ key: "_compile",
126
+ value: function _compile(source) {
127
+ if (!source.startsWith('#version ')) {
128
+ source = "#version 100\n".concat(source);
129
+ }
130
+
131
+ this.gl.shaderSource(this.handle, source);
132
+ this.gl.compileShader(this.handle);
133
+ var compileStatus = this.gl.getShaderParameter(this.handle, _constants.default.COMPILE_STATUS);
134
+
135
+ if (!compileStatus) {
136
+ var shaderLog = this.gl.getShaderInfoLog(this.handle);
137
+ var messages = (0, _parseShaderCompilerLog.parseShaderCompilerLog)(shaderLog).filter(function (message) {
138
+ return message.type === 'error';
139
+ });
140
+ var formattedLog = (0, _shadertools.formatCompilerLog)(messages, source);
141
+ var shaderName = (0, _shadertools.getShaderInfo)(source).name;
142
+ var shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
143
+
144
+ _api.log.error("GLSL compilation errors in ".concat(shaderName, "\n").concat(formattedLog))();
145
+
146
+ throw new Error("GLSL compilation errors in ".concat(shaderName));
147
+ }
87
148
  }
88
- }
89
-
90
- }
149
+ }]);
150
+ return WEBGLShader;
151
+ }(_api.Shader);
91
152
 
92
153
  exports.WEBGLShader = WEBGLShader;
93
154
 
94
- class Shader extends WEBGLShader {
95
- static getTypeName(shaderType) {
96
- switch (shaderType) {
97
- case _constants.default.VERTEX_SHADER:
98
- return 'vertex-shader';
155
+ var Shader = function (_WEBGLShader) {
156
+ (0, _inherits2.default)(Shader, _WEBGLShader);
99
157
 
100
- case _constants.default.FRAGMENT_SHADER:
101
- return 'fragment-shader';
158
+ var _super2 = _createSuper(Shader);
102
159
 
103
- default:
104
- (0, _utils.assert)(false);
105
- return 'unknown';
106
- }
107
- }
160
+ function Shader(gl, props) {
161
+ var _this2;
108
162
 
109
- constructor(gl, props) {
110
- (0, _gltools.assertWebGLContext)(gl);
111
- (0, _utils.assert)(typeof props.source === 'string', ERR_SOURCE);
112
- super(gl, { ...props,
163
+ (0, _classCallCheck2.default)(this, Shader);
164
+ (0, _webglChecks.assertWebGLContext)(gl);
165
+ (0, _api.assert)(typeof props.source === 'string', ERR_SOURCE);
166
+ _this2 = _super2.call(this, gl, _objectSpread(_objectSpread({}, props), {}, {
113
167
  id: getShaderIdFromProps(props),
114
168
  stage: props.shaderType === _constants.default.VERTEX_SHADER ? 'vertex' : 'fragment'
115
- });
116
- (0, _defineProperty2.default)(this, "shaderType", void 0);
117
- (0, _defineProperty2.default)(this, "source", void 0);
118
- this.shaderType = props.shaderType;
119
- this.source = props.source;
120
- const shaderName = (0, _shadertools.getShaderInfo)(props.source).name;
169
+ }));
170
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "shaderType", void 0);
171
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "source", void 0);
172
+ _this2.shaderType = props.shaderType;
173
+ _this2.source = props.source;
174
+ var shaderName = (0, _shadertools.getShaderInfo)(props.source).name;
121
175
 
122
176
  if (shaderName) {
123
- this.id = (0, _utils.uid)(shaderName);
177
+ _this2.id = (0, _api.uid)(shaderName);
124
178
  }
125
- }
126
-
127
- initialize(props) {
128
- this._compile(props.source);
129
-
130
- const shaderName = (0, _shadertools.getShaderInfo)(props.source).name;
131
179
 
132
- if (shaderName) {
133
- this.id = (0, _utils.uid)(shaderName);
134
- }
135
-
136
- return this;
180
+ return _this2;
137
181
  }
138
182
 
139
- getParameter(pname) {
140
- return this.gl.getShaderParameter(this.handle, pname);
141
- }
183
+ (0, _createClass2.default)(Shader, [{
184
+ key: "initialize",
185
+ value: function initialize(props) {
186
+ this._compile(props.source);
142
187
 
143
- toString() {
144
- return "".concat(Shader.getTypeName(this.shaderType), ":").concat(this.id);
145
- }
188
+ var shaderName = (0, _shadertools.getShaderInfo)(props.source).name;
146
189
 
147
- getName() {
148
- return (0, _shadertools.getShaderInfo)(this.source).name || 'unnamed-shader';
149
- }
150
-
151
- getSource() {
152
- return this.gl.getShaderSource(this.handle);
153
- }
154
-
155
- getTranslatedSource() {
156
- const extension = this.gl.getExtension('WEBGL_debug_shaders');
157
- return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';
158
- }
159
-
160
- _getOptsFromHandle() {
161
- return {
162
- type: this.getParameter(_constants.default.SHADER_TYPE),
163
- source: this.getSource()
164
- };
165
- }
190
+ if (shaderName) {
191
+ this.id = (0, _api.uid)(shaderName);
192
+ }
166
193
 
167
- }
194
+ return this;
195
+ }
196
+ }, {
197
+ key: "getParameter",
198
+ value: function getParameter(pname) {
199
+ return this.gl.getShaderParameter(this.handle, pname);
200
+ }
201
+ }, {
202
+ key: "toString",
203
+ value: function toString() {
204
+ return "".concat(Shader.getTypeName(this.shaderType), ":").concat(this.id);
205
+ }
206
+ }, {
207
+ key: "getName",
208
+ value: function getName() {
209
+ return (0, _shadertools.getShaderInfo)(this.source).name || 'unnamed-shader';
210
+ }
211
+ }, {
212
+ key: "getSource",
213
+ value: function getSource() {
214
+ return this.gl.getShaderSource(this.handle);
215
+ }
216
+ }, {
217
+ key: "getTranslatedSource",
218
+ value: function getTranslatedSource() {
219
+ var extension = this.gl.getExtension('WEBGL_debug_shaders');
220
+ return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';
221
+ }
222
+ }, {
223
+ key: "_getOptsFromHandle",
224
+ value: function _getOptsFromHandle() {
225
+ return {
226
+ type: this.getParameter(_constants.default.SHADER_TYPE),
227
+ source: this.getSource()
228
+ };
229
+ }
230
+ }], [{
231
+ key: "getTypeName",
232
+ value: function getTypeName(shaderType) {
233
+ switch (shaderType) {
234
+ case _constants.default.VERTEX_SHADER:
235
+ return 'vertex-shader';
236
+
237
+ case _constants.default.FRAGMENT_SHADER:
238
+ return 'fragment-shader';
239
+
240
+ default:
241
+ (0, _api.assert)(false);
242
+ return 'unknown';
243
+ }
244
+ }
245
+ }]);
246
+ return Shader;
247
+ }(WEBGLShader);
168
248
 
169
249
  exports.Shader = Shader;
170
250
 
171
- class VertexShader extends Shader {
172
- constructor(gl, props) {
173
- super(gl, getShaderProps(props, _constants.default.VERTEX_SHADER));
174
- }
251
+ var VertexShader = function (_Shader) {
252
+ (0, _inherits2.default)(VertexShader, _Shader);
253
+
254
+ var _super3 = _createSuper(VertexShader);
175
255
 
176
- _createHandle() {
177
- return this.gl.createShader(_constants.default.VERTEX_SHADER);
256
+ function VertexShader(gl, props) {
257
+ (0, _classCallCheck2.default)(this, VertexShader);
258
+ return _super3.call(this, gl, getShaderProps(props, _constants.default.VERTEX_SHADER));
178
259
  }
179
260
 
180
- }
261
+ (0, _createClass2.default)(VertexShader, [{
262
+ key: "_createHandle",
263
+ value: function _createHandle() {
264
+ return this.gl.createShader(_constants.default.VERTEX_SHADER);
265
+ }
266
+ }]);
267
+ return VertexShader;
268
+ }(Shader);
181
269
 
182
270
  exports.VertexShader = VertexShader;
183
271
 
184
- class FragmentShader extends Shader {
185
- constructor(gl, props) {
186
- super(gl, getShaderProps(props, _constants.default.FRAGMENT_SHADER));
187
- }
272
+ var FragmentShader = function (_Shader2) {
273
+ (0, _inherits2.default)(FragmentShader, _Shader2);
274
+
275
+ var _super4 = _createSuper(FragmentShader);
188
276
 
189
- _createHandle() {
190
- return this.gl.createShader(_constants.default.FRAGMENT_SHADER);
277
+ function FragmentShader(gl, props) {
278
+ (0, _classCallCheck2.default)(this, FragmentShader);
279
+ return _super4.call(this, gl, getShaderProps(props, _constants.default.FRAGMENT_SHADER));
191
280
  }
192
281
 
193
- }
282
+ (0, _createClass2.default)(FragmentShader, [{
283
+ key: "_createHandle",
284
+ value: function _createHandle() {
285
+ return this.gl.createShader(_constants.default.FRAGMENT_SHADER);
286
+ }
287
+ }]);
288
+ return FragmentShader;
289
+ }(Shader);
194
290
 
195
291
  exports.FragmentShader = FragmentShader;
196
292
 
@@ -198,16 +294,16 @@ function getShaderProps(props, shaderType) {
198
294
  if (typeof props === 'string') {
199
295
  return {
200
296
  source: props,
201
- shaderType
297
+ shaderType: shaderType
202
298
  };
203
299
  }
204
300
 
205
- return { ...props,
206
- shaderType
207
- };
301
+ return _objectSpread(_objectSpread({}, props), {}, {
302
+ shaderType: shaderType
303
+ });
208
304
  }
209
305
 
210
306
  function getShaderIdFromProps(props) {
211
- return (0, _shadertools.getShaderInfo)(props.source).name || props.id || (0, _utils.uid)("unnamed ".concat(props.stage || Shader.getTypeName(props.shaderType)));
307
+ return (0, _shadertools.getShaderInfo)(props.source).name || props.id || (0, _api.uid)("unnamed ".concat(props.stage || Shader.getTypeName(props.shaderType)));
212
308
  }
213
309
  //# sourceMappingURL=webgl-shader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/webgl-shader.ts"],"names":["ERR_SOURCE","WEBGLShader","ShaderAPI","constructor","gl","props","id","getShaderIdFromProps","stage","handle","createShader","GL","VERTEX_SHADER","FRAGMENT_SHADER","Error","_compile","source","destroy","removeStats","deleteShader","compilationInfo","log","getShaderInfoLog","startsWith","shaderSource","compileShader","compileStatus","getShaderParameter","COMPILE_STATUS","shaderLog","messages","filter","message","type","formattedLog","shaderName","name","shaderDescription","error","Shader","getTypeName","shaderType","initialize","getParameter","pname","toString","getName","getSource","getShaderSource","getTranslatedSource","extension","getExtension","getTranslatedShaderSource","_getOptsFromHandle","SHADER_TYPE","VertexShader","getShaderProps","_createHandle","FragmentShader"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,MAAMA,UAAU,GAAG,sDAAnB;;AAKO,MAAMC,WAAN,SAA0BC,WAA1B,CAAoC;AAMzCC,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAAgD;AACzD,UAAMD,EAAN,EAAiB;AAACE,MAAAA,EAAE,EAAEC,oBAAoB,CAACF,KAAD,CAAzB;AAAkC,SAAGA;AAArC,KAAjB;AADyD;AAAA;AAAA;AAEzD,SAAKD,EAAL,GAAUA,EAAV;;AACA,YAAQ,KAAKC,KAAL,CAAWG,KAAnB;AACE,WAAK,QAAL;AACE,aAAKC,MAAL,GAAc,KAAKJ,KAAL,CAAWI,MAAX,IAAqB,KAAKL,EAAL,CAAQM,YAAR,CAAqBC,mBAAGC,aAAxB,CAAnC;AACA;;AACF,WAAK,UAAL;AACE,aAAKH,MAAL,GAAc,KAAKJ,KAAL,CAAWI,MAAX,IAAqB,KAAKL,EAAL,CAAQM,YAAR,CAAqBC,mBAAGE,eAAxB,CAAnC;AACA;;AACF;AACE,cAAM,IAAIC,KAAJ,CAAU,KAAKT,KAAL,CAAWG,KAArB,CAAN;AARJ;;AAUA,SAAKA,KAAL,GAAa,KAAKH,KAAL,CAAWG,KAAxB;;AACA,SAAKO,QAAL,CAAcV,KAAK,CAACW,MAApB;AACD;;AAEDC,EAAAA,OAAO,GAAS;AACd,QAAI,KAAKR,MAAT,EAAiB;AACf,WAAKS,WAAL;AACA,WAAKd,EAAL,CAAQe,YAAR,CAAqB,KAAKV,MAA1B;AAEA,WAAKA,MAAL,GAAc,IAAd;AACD;AACF;;AAEoB,QAAfW,eAAe,GAAwC;AAC3D,UAAMC,GAAG,GAAG,KAAKjB,EAAL,CAAQkB,gBAAR,CAAyB,KAAKb,MAA9B,CAAZ;AACA,WAAO,oDAAuBY,GAAvB,CAAP;AACD;;AAGDN,EAAAA,QAAQ,CAACC,MAAD,EAAS;AACf,QAAI,CAACA,MAAM,CAACO,UAAP,CAAkB,WAAlB,CAAL,EAAqC;AACnCP,MAAAA,MAAM,2BAAoBA,MAApB,CAAN;AACD;;AACD,SAAKZ,EAAL,CAAQoB,YAAR,CAAqB,KAAKf,MAA1B,EAAkCO,MAAlC;AACA,SAAKZ,EAAL,CAAQqB,aAAR,CAAsB,KAAKhB,MAA3B;AAKA,UAAMiB,aAAa,GAAG,KAAKtB,EAAL,CAAQuB,kBAAR,CAA2B,KAAKlB,MAAhC,EAAwCE,mBAAGiB,cAA3C,CAAtB;;AACA,QAAI,CAACF,aAAL,EAAoB;AAClB,YAAMG,SAAS,GAAG,KAAKzB,EAAL,CAAQkB,gBAAR,CAAyB,KAAKb,MAA9B,CAAlB;AACA,YAAMqB,QAAQ,GAAG,oDAAuBD,SAAvB,EAAkCE,MAAlC,CAAyCC,OAAO,IAAIA,OAAO,CAACC,IAAR,KAAiB,OAArE,CAAjB;AACA,YAAMC,YAAY,GAAG,oCAAkBJ,QAAlB,EAA4Bd,MAA5B,CAArB;AACA,YAAMmB,UAAkB,GAAG,gCAAcnB,MAAd,EAAsBoB,IAAjD;AACA,YAAMC,iBAAiB,aAAM,KAAK7B,KAAX,qBAA2B2B,UAA3B,CAAvB;;AACAd,mBAAIiB,KAAJ,sCAAwCH,UAAxC,eAAuDD,YAAvD;;AACA,YAAM,IAAIpB,KAAJ,sCAAwCqB,UAAxC,EAAN;AACD;AACF;;AA1DwC;;;;AAiEpC,MAAMI,MAAN,SAAqBtC,WAArB,CAAiC;AAIpB,SAAXuC,WAAW,CAACC,UAAD,EAAmE;AACnF,YAAQA,UAAR;AACE,WAAK9B,mBAAGC,aAAR;AACE,eAAO,eAAP;;AACF,WAAKD,mBAAGE,eAAR;AACE,eAAO,iBAAP;;AACF;AACE,2BAAO,KAAP;AACA,eAAO,SAAP;AAPJ;AASD;;AAEDV,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAA+D;AACxE,qCAAmBD,EAAnB;AACA,uBAAO,OAAOC,KAAK,CAACW,MAAb,KAAwB,QAA/B,EAAyChB,UAAzC;AAGA,UAAMI,EAAN,EAAU,EAAC,GAAGC,KAAJ;AAAWC,MAAAA,EAAE,EAAEC,oBAAoB,CAACF,KAAD,CAAnC;AAA4CG,MAAAA,KAAK,EAAEH,KAAK,CAACoC,UAAN,KAAqB9B,mBAAGC,aAAxB,GAAwC,QAAxC,GAAmD;AAAtG,KAAV;AALwE;AAAA;AAOxE,SAAK6B,UAAL,GAAkBpC,KAAK,CAACoC,UAAxB;AACA,SAAKzB,MAAL,GAAcX,KAAK,CAACW,MAApB;AAEA,UAAMmB,UAAU,GAAG,gCAAc9B,KAAK,CAACW,MAApB,EAA4BoB,IAA/C;;AACA,QAAID,UAAJ,EAAgB;AACd,WAAK7B,EAAL,GAAU,gBAAI6B,UAAJ,CAAV;AACD;AACF;;AAEDO,EAAAA,UAAU,CAACrC,KAAD,EAA2B;AACnC,SAAKU,QAAL,CAAcV,KAAK,CAACW,MAApB;;AACA,UAAMmB,UAAU,GAAG,gCAAc9B,KAAK,CAACW,MAApB,EAA4BoB,IAA/C;;AACA,QAAID,UAAJ,EAAgB;AACd,WAAK7B,EAAL,GAAU,gBAAI6B,UAAJ,CAAV;AACD;;AACD,WAAO,IAAP;AACD;;AAIDQ,EAAAA,YAAY,CAACC,KAAD,EAAqB;AAC/B,WAAO,KAAKxC,EAAL,CAAQuB,kBAAR,CAA2B,KAAKlB,MAAhC,EAAwCmC,KAAxC,CAAP;AACD;;AAEDC,EAAAA,QAAQ,GAAW;AACjB,qBAAUN,MAAM,CAACC,WAAP,CAAmB,KAAKC,UAAxB,CAAV,cAAiD,KAAKnC,EAAtD;AACD;;AAEDwC,EAAAA,OAAO,GAAW;AAChB,WAAO,gCAAc,KAAK9B,MAAnB,EAA2BoB,IAA3B,IAAmC,gBAA1C;AACD;;AAEDW,EAAAA,SAAS,GAAW;AAClB,WAAO,KAAK3C,EAAL,CAAQ4C,eAAR,CAAwB,KAAKvC,MAA7B,CAAP;AACD;;AAGDwC,EAAAA,mBAAmB,GAAW;AAC5B,UAAMC,SAAS,GAAG,KAAK9C,EAAL,CAAQ+C,YAAR,CAAqB,qBAArB,CAAlB;AACA,WAAOD,SAAS,GACZA,SAAS,CAACE,yBAAV,CAAoC,KAAK3C,MAAzC,CADY,GAEZ,qEAFJ;AAGD;;AAID4C,EAAAA,kBAAkB,GAAG;AACnB,WAAO;AACLpB,MAAAA,IAAI,EAAE,KAAKU,YAAL,CAAkBhC,mBAAG2C,WAArB,CADD;AAELtC,MAAAA,MAAM,EAAE,KAAK+B,SAAL;AAFH,KAAP;AAID;;AA1EqC;;;;AAiFhC,MAAMQ,YAAN,SAA2BhB,MAA3B,CAAkC;AACxCpC,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAAwE;AACjF,UAAMD,EAAN,EAAUoD,cAAc,CAACnD,KAAD,EAAQM,mBAAGC,aAAX,CAAxB;AACD;;AAGD6C,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKrD,EAAL,CAAQM,YAAR,CAAqBC,mBAAGC,aAAxB,CAAP;AACD;;AARuC;;;;AAelC,MAAM8C,cAAN,SAA6BnB,MAA7B,CAAoC;AAC1CpC,EAAAA,WAAW,CAACC,EAAD,EAA4BC,KAA5B,EAAwE;AACjF,UAAMD,EAAN,EAAUoD,cAAc,CAACnD,KAAD,EAAQM,mBAAGE,eAAX,CAAxB;AACD;;AAGD4C,EAAAA,aAAa,GAAG;AACd,WAAO,KAAKrD,EAAL,CAAQM,YAAR,CAAqBC,mBAAGE,eAAxB,CAAP;AACD;;AARyC;;;;AAa5C,SAAS2C,cAAT,CAAwBnD,KAAxB,EAAoEoC,UAApE,EAAmJ;AACjJ,MAAI,OAAOpC,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAO;AAACW,MAAAA,MAAM,EAAEX,KAAT;AAAgBoC,MAAAA;AAAhB,KAAP;AACD;;AACD,SAAO,EAAC,GAAGpC,KAAJ;AAAWoC,IAAAA;AAAX,GAAP;AACD;;AAGD,SAASlC,oBAAT,CAA8BF,KAA9B,EAA0D;AACxD,SAAO,gCAAcA,KAAK,CAACW,MAApB,EAA4BoB,IAA5B,IACL/B,KAAK,CAACC,EADD,IAEL,kCAAeD,KAAK,CAACG,KAAN,IAAe+B,MAAM,CAACC,WAAP,CAAmBnC,KAAK,CAACoC,UAAzB,CAA9B,EAFF;AAGD","sourcesContent":["// luma.gl, MIT license\nimport GL from '@luma.gl/constants';\nimport {assertWebGLContext, log} from '@luma.gl/gltools';\nimport {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';\nimport {Shader as ShaderAPI, ShaderProps} from '@luma.gl/api';\nimport {parseShaderCompilerLog} from '../webgl-utils/parse-shader-compiler-log';\nimport {uid, assert} from '../utils';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n\nexport type {ShaderProps};\n\nexport class WEBGLShader extends ShaderAPI {\n readonly gl: WebGLRenderingContext;\n readonly handle: WebGLShader;\n\n readonly stage: 'vertex' | 'fragment';\n\n constructor(gl: WebGLRenderingContext, props: ShaderProps) {\n super(gl as any, {id: getShaderIdFromProps(props), ...props});\n this.gl = gl;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this.stage = this.props.stage;\n this._compile(props.source);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.gl.deleteShader(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n } \n \n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const log = this.gl.getShaderInfoLog(this.handle);\n return parseShaderCompilerLog(log);\n }\n\n // PRIVATE METHODS\n _compile(source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.gl.shaderSource(this.handle, source);\n this.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 = this.gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);\n if (!compileStatus) {\n const shaderLog = this.gl.getShaderInfoLog(this.handle);\n const messages = parseShaderCompilerLog(shaderLog).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 ${shaderName}\\n${formattedLog}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n}\n \n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * For now this is an internal class\n */\nexport class Shader extends WEBGLShader {\n shaderType: GL.FRAGMENT_SHADER | GL.VERTEX_SHADER;\n source: string;\n\n static getTypeName(shaderType: any): 'vertex-shader' | 'fragment-shader' | 'unknown' {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'>) {\n assertWebGLContext(gl);\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // @ts-expect-error\n super(gl, {...props, id: getShaderIdFromProps(props), stage: props.shaderType === GL.VERTEX_SHADER ? 'vertex' : 'fragment'});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n }\n\n initialize(props: ShaderProps): this {\n this._compile(props.source);\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n return this;\n }\n\n // Accessors\n\n getParameter(pname: number): any {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString(): string {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName(): string {\n return getShaderInfo(this.source).name || 'unnamed-shader';\n }\n\n getSource(): string {\n return this.gl.getShaderSource(this.handle);\n }\n\n /** Debug method - Returns translated source if available */\n getTranslatedSource(): string {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'vertex', ...})`\n */\n export class VertexShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.VERTEX_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'fragment', ...})`\n */\n export class FragmentShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.FRAGMENT_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n\n// HELPERS\n\nfunction getShaderProps(props: Omit<ShaderProps, 'stage'> | string, shaderType: GL.VERTEX_SHADER | GL.FRAGMENT_SHADER): Omit<ShaderProps, 'stage'> {\n if (typeof props === 'string') {\n return {source: props, shaderType};\n }\n return {...props, shaderType};\n}\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.getTypeName(props.shaderType)}`);\n}\n"],"file":"webgl-shader.js"}
1
+ {"version":3,"sources":["../../../src/classes/webgl-shader.ts"],"names":["ERR_SOURCE","WEBGLShader","gl","props","WebGLDevice","attach","id","getShaderIdFromProps","device","stage","handle","createShader","GL","VERTEX_SHADER","FRAGMENT_SHADER","Error","_compile","source","removeStats","deleteShader","log","getShaderInfoLog","startsWith","shaderSource","compileShader","compileStatus","getShaderParameter","COMPILE_STATUS","shaderLog","messages","filter","message","type","formattedLog","shaderName","name","shaderDescription","error","ShaderAPI","Shader","shaderType","pname","getTypeName","getShaderSource","extension","getExtension","getTranslatedShaderSource","getParameter","SHADER_TYPE","getSource","VertexShader","getShaderProps","FragmentShader"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, assert, uid, Shader as ShaderAPI, ShaderProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';\nimport {assertWebGLContext} from '../context/context/webgl-checks';\nimport {parseShaderCompilerLog} from '../webgl-utils/parse-shader-compiler-log';\nimport WebGLDevice from '../device/webgl-device';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n\nexport type {ShaderProps};\n\nexport class WEBGLShader extends ShaderAPI {\n readonly device: WebGLDevice;\n readonly gl: WebGLRenderingContext;\n readonly handle: WebGLShader;\n\n readonly stage: 'vertex' | 'fragment';\n\n constructor(gl: WebGLRenderingContext, props: ShaderProps) {\n super(WebGLDevice.attach(gl), {id: getShaderIdFromProps(props), ...props});\n this.device = WebGLDevice.attach(gl);\n this.gl = gl;\n switch (this.props.stage) {\n case 'vertex':\n this.handle = this.props.handle || this.gl.createShader(GL.VERTEX_SHADER);\n break;\n case 'fragment':\n this.handle = this.props.handle || this.gl.createShader(GL.FRAGMENT_SHADER);\n break;\n default:\n throw new Error(this.props.stage);\n }\n this.stage = this.props.stage;\n this._compile(props.source);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.gl.deleteShader(this.handle);\n // @ts-expect-error\n this.handle = null;\n }\n } \n \n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const log = this.gl.getShaderInfoLog(this.handle);\n return parseShaderCompilerLog(log);\n }\n\n // PRIVATE METHODS\n _compile(source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.gl.shaderSource(this.handle, source);\n this.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 = this.gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);\n if (!compileStatus) {\n const shaderLog = this.gl.getShaderInfoLog(this.handle);\n const messages = parseShaderCompilerLog(shaderLog).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 ${shaderName}\\n${formattedLog}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n}\n \n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * For now this is an internal class\n */\nexport class Shader extends WEBGLShader {\n shaderType: GL.FRAGMENT_SHADER | GL.VERTEX_SHADER;\n source: string;\n\n static getTypeName(shaderType: any): 'vertex-shader' | 'fragment-shader' | 'unknown' {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'>) {\n assertWebGLContext(gl);\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // @ts-expect-error\n super(gl, {...props, id: getShaderIdFromProps(props), stage: props.shaderType === GL.VERTEX_SHADER ? 'vertex' : 'fragment'});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n }\n\n initialize(props: ShaderProps): this {\n this._compile(props.source);\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n return this;\n }\n\n // Accessors\n\n getParameter(pname: number): any {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString(): string {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName(): string {\n return getShaderInfo(this.source).name || 'unnamed-shader';\n }\n\n getSource(): string {\n return this.gl.getShaderSource(this.handle);\n }\n\n /** Debug method - Returns translated source if available */\n getTranslatedSource(): string {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'vertex', ...})`\n */\n export class VertexShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.VERTEX_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'fragment', ...})`\n */\n export class FragmentShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.FRAGMENT_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n\n// HELPERS\n\nfunction getShaderProps(props: Omit<ShaderProps, 'stage'> | string, shaderType: GL.VERTEX_SHADER | GL.FRAGMENT_SHADER): Omit<ShaderProps, 'stage'> {\n if (typeof props === 'string') {\n return {source: props, shaderType};\n }\n return {...props, shaderType};\n}\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.getTypeName(props.shaderType)}`);\n}\n"],"file":"webgl-shader.js"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getContextState = getContextState;
7
+
8
+ function getContextState(gl) {
9
+ var device = gl.device,
10
+ luma = gl.luma;
11
+
12
+ if (device) {
13
+ return device;
14
+ }
15
+
16
+ if (!luma) {
17
+ var contextState = {
18
+ _canvasSizeInfo: {
19
+ clientWidth: 0,
20
+ clientHeight: 0,
21
+ devicePixelRatio: 1
22
+ },
23
+ _polyfilled: false,
24
+ _extensions: {}
25
+ };
26
+ gl.luma = contextState;
27
+ }
28
+
29
+ return gl.luma;
30
+ }
31
+ //# sourceMappingURL=context-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/context/context/context-state.ts"],"names":["getContextState","gl","device","luma","contextState","_canvasSizeInfo","clientWidth","clientHeight","devicePixelRatio","_polyfilled","_extensions"],"mappings":";;;;;;;AAiBO,SAASA,eAAT,CAAyBC,EAAzB,EAAkE;AAEvE,MAAOC,MAAP,GAAuBD,EAAvB,CAAOC,MAAP;AAAA,MAAeC,IAAf,GAAuBF,EAAvB,CAAeE,IAAf;;AACA,MAAID,MAAJ,EAAY;AACV,WAAOA,MAAP;AACD;;AACD,MAAI,CAACC,IAAL,EAAW;AACT,QAAMC,YAA0B,GAAG;AACjCC,MAAAA,eAAe,EAAE;AACfC,QAAAA,WAAW,EAAE,CADE;AAEfC,QAAAA,YAAY,EAAE,CAFC;AAGfC,QAAAA,gBAAgB,EAAE;AAHH,OADgB;AAMjCC,MAAAA,WAAW,EAAE,KANoB;AAOjCC,MAAAA,WAAW,EAAE;AAPoB,KAAnC;AAUAT,IAAAA,EAAE,CAACE,IAAH,GAAUC,YAAV;AACD;;AAED,SAAOH,EAAE,CAACE,IAAV;AACD","sourcesContent":["/**\n * Stores luma.gl specific state associated with a context\n */\nexport interface ContextState {\n _canvasSizeInfo: {\n clientWidth: number;\n clientHeight: number;\n devicePixelRatio: number;\n };\n _polyfilled: boolean;\n _extensions: Record<string, any>;\n}\n\n/**\n * Gets luma.gl specific state from a context\n * @returns context state\n */\nexport function getContextState(gl: WebGLRenderingContext): ContextState {\n // @ts-expect-error\n const {device, luma} = gl;\n if (device) {\n return device as ContextState;\n }\n if (!luma) {\n const contextState: ContextState = {\n _canvasSizeInfo: {\n clientWidth: 0,\n clientHeight: 0,\n devicePixelRatio: 1,\n },\n _polyfilled: false,\n _extensions: {}\n };\n // @ts-expect-error\n gl.luma = contextState;\n }\n // @ts-expect-error\n return gl.luma;\n}\n"],"file":"context-state.js"}