@lightningjs/renderer 3.0.0-beta9 → 3.0.1

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 (541) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +230 -147
  4. package/dist/exports/canvas.d.ts +1 -1
  5. package/dist/exports/canvas.js +1 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +5 -6
  8. package/dist/exports/index.js +3 -5
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/platform.d.ts +7 -0
  11. package/dist/exports/platform.js +27 -0
  12. package/dist/exports/platform.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +2 -1
  14. package/dist/exports/webgl.js +2 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/common/CommonTypes.d.ts +15 -3
  17. package/dist/src/core/Autosizer.d.ts +35 -0
  18. package/dist/src/core/Autosizer.js +196 -0
  19. package/dist/src/core/Autosizer.js.map +1 -0
  20. package/dist/src/core/CoreNode.d.ts +107 -59
  21. package/dist/src/core/CoreNode.js +524 -282
  22. package/dist/src/core/CoreNode.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +73 -88
  24. package/dist/src/core/CoreTextNode.js +383 -236
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +19 -17
  27. package/dist/src/core/CoreTextureManager.js +52 -120
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +63 -9
  30. package/dist/src/core/Stage.js +233 -133
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureError.d.ts +11 -0
  33. package/dist/src/core/TextureError.js +37 -0
  34. package/dist/src/core/TextureError.js.map +1 -0
  35. package/dist/src/core/TextureMemoryManager.d.ts +2 -4
  36. package/dist/src/core/TextureMemoryManager.js +80 -113
  37. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  38. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  39. package/dist/src/core/animations/CoreAnimation.js +3 -3
  40. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  41. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -1
  42. package/dist/src/core/animations/CoreAnimationController.js +4 -2
  43. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  44. package/dist/src/core/lib/ImageWorker.js +1 -1
  45. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  46. package/dist/src/core/lib/WebGlContextWrapper.d.ts +69 -97
  47. package/dist/src/core/lib/WebGlContextWrapper.js +192 -152
  48. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  49. package/dist/src/core/lib/collectionUtils.d.ts +4 -0
  50. package/dist/src/core/lib/collectionUtils.js +72 -0
  51. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  52. package/dist/src/core/lib/colorCache.d.ts +1 -0
  53. package/dist/src/core/lib/colorCache.js +19 -0
  54. package/dist/src/core/lib/colorCache.js.map +1 -0
  55. package/dist/src/core/lib/colorParser.d.ts +21 -0
  56. package/dist/src/core/lib/colorParser.js +72 -0
  57. package/dist/src/core/lib/colorParser.js.map +1 -0
  58. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  59. package/dist/src/core/lib/textureCompression.js +311 -67
  60. package/dist/src/core/lib/textureCompression.js.map +1 -1
  61. package/dist/src/core/lib/utils.d.ts +6 -6
  62. package/dist/src/core/lib/utils.js +21 -65
  63. package/dist/src/core/lib/utils.js.map +1 -1
  64. package/dist/src/core/lib/validateImageBitmap.d.ts +1 -2
  65. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  66. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  67. package/dist/src/core/platform.d.ts +10 -0
  68. package/dist/src/core/platform.js +84 -0
  69. package/dist/src/core/platform.js.map +1 -0
  70. package/dist/src/core/platforms/GlContextWrapper.d.ts +136 -0
  71. package/{src/core/text-rendering/TextRenderingUtils.ts → dist/src/core/platforms/GlContextWrapper.js} +32 -36
  72. package/dist/src/core/platforms/GlContextWrapper.js.map +1 -0
  73. package/dist/src/core/platforms/Platform.d.ts +78 -12
  74. package/dist/src/core/platforms/Platform.js +18 -0
  75. package/dist/src/core/platforms/Platform.js.map +1 -1
  76. package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +776 -0
  77. package/dist/src/core/platforms/web/WebGlContextWrapper.js +1208 -0
  78. package/dist/src/core/platforms/web/WebGlContextWrapper.js.map +1 -0
  79. package/dist/src/core/platforms/web/WebPlatform.d.ts +17 -2
  80. package/dist/src/core/platforms/web/WebPlatform.js +158 -13
  81. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  82. package/dist/src/core/platforms/web/WebPlatformChrome50.d.ts +19 -0
  83. package/dist/src/core/platforms/web/WebPlatformChrome50.js +54 -0
  84. package/dist/src/core/platforms/web/WebPlatformChrome50.js.map +1 -0
  85. package/dist/src/core/platforms/web/WebPlatformLegacy.d.ts +20 -0
  86. package/dist/src/core/platforms/web/WebPlatformLegacy.js +105 -0
  87. package/dist/src/core/platforms/web/WebPlatformLegacy.js.map +1 -0
  88. package/dist/src/core/platforms/web/WebPlatformNext.d.ts +21 -0
  89. package/dist/src/core/platforms/web/WebPlatformNext.js +52 -0
  90. package/dist/src/core/platforms/web/WebPlatformNext.js.map +1 -0
  91. package/dist/src/core/platforms/web/lib/ImageWorker.d.ts +21 -0
  92. package/dist/src/core/platforms/web/lib/ImageWorker.js +136 -0
  93. package/dist/src/core/platforms/web/lib/ImageWorker.js.map +1 -0
  94. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.d.ts +6 -0
  95. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js +92 -0
  96. package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js.map +1 -0
  97. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.d.ts +1 -0
  98. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js +63 -0
  99. package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js.map +1 -0
  100. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.d.ts +7 -0
  101. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js +75 -0
  102. package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js.map +1 -0
  103. package/dist/src/core/platforms/web/lib/createImageBitmap.d.ts +1 -0
  104. package/dist/src/core/platforms/web/lib/createImageBitmap.js +27 -0
  105. package/dist/src/core/platforms/web/lib/createImageBitmap.js.map +1 -0
  106. package/dist/src/core/platforms/web/lib/textureCompression.d.ts +26 -0
  107. package/dist/src/core/platforms/web/lib/textureCompression.js +301 -0
  108. package/dist/src/core/platforms/web/lib/textureCompression.js.map +1 -0
  109. package/dist/src/core/platforms/web/lib/textureSvg.d.ts +7 -0
  110. package/dist/src/core/platforms/web/lib/textureSvg.js +51 -0
  111. package/dist/src/core/platforms/web/lib/textureSvg.js.map +1 -0
  112. package/dist/src/core/platforms/web/lib/utils.d.ts +5 -0
  113. package/dist/src/core/platforms/web/lib/utils.js +86 -0
  114. package/dist/src/core/platforms/web/lib/utils.js.map +1 -0
  115. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  116. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  117. package/dist/src/core/renderers/CoreRenderer.d.ts +4 -40
  118. package/dist/src/core/renderers/CoreRenderer.js +3 -4
  119. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  120. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  121. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts → dist/src/core/renderers/CoreShader.js} +28 -32
  122. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  123. package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
  124. package/dist/src/core/renderers/CoreShaderNode.js +19 -2
  125. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  126. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  127. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  128. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  129. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  130. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  131. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  132. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +5 -6
  133. package/dist/src/core/renderers/canvas/CanvasRenderer.js +67 -91
  134. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  135. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
  136. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +5 -4
  137. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  138. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  139. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  140. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  141. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  142. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  143. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  144. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  145. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  146. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  147. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  148. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts → dist/src/core/renderers/canvas/shaders/UnsupportedShader.js} +43 -40
  149. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  150. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  151. package/dist/src/core/renderers/webgl/SdfRenderOp.js +98 -0
  152. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  153. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  154. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  155. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  156. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  157. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  158. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  159. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
  160. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
  161. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  162. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  163. package/dist/src/core/renderers/webgl/{WebGlRenderOp.js → WebGlCoreRenderOp.js} +43 -47
  164. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  165. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  166. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
  167. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  168. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
  169. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.d.ts +1 -0
  170. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js +2 -0
  171. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js.map +1 -0
  172. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
  173. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  174. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +4 -2
  175. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  176. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  177. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +15 -2
  178. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  179. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  180. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +19 -9
  181. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +101 -49
  182. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  183. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -23
  184. package/dist/src/core/renderers/webgl/WebGlRenderer.js +124 -133
  185. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  186. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +4 -6
  187. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +3 -3
  188. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  189. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +7 -7
  190. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +60 -38
  191. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  192. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -4
  193. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -2
  194. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  195. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -3
  196. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +38 -37
  197. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  198. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  199. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
  200. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  201. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  202. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
  203. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  204. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  205. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
  206. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  207. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  208. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
  209. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  210. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  211. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
  212. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  213. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  214. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  215. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  216. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  217. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  218. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  219. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  220. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  221. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  222. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  223. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  224. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  225. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  226. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  227. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  228. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  229. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  230. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  231. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  232. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  233. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  234. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  235. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  236. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  237. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  238. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  239. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  240. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  241. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  242. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  243. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +34 -0
  244. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +113 -0
  245. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  246. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
  247. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +126 -0
  248. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  249. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  250. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  251. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  252. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  253. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  254. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  255. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  256. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  257. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  258. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  259. package/dist/src/core/shaders/canvas/Border.js +64 -25
  260. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  261. package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
  262. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  263. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
  264. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  265. package/dist/src/core/shaders/canvas/RadialGradient.js +12 -10
  266. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  267. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  268. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  269. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  270. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +41 -11
  271. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  272. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  273. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +46 -9
  274. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  275. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +6 -5
  276. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  277. package/dist/src/core/shaders/canvas/Shadow.js +4 -2
  278. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  279. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  280. package/dist/src/core/shaders/canvas/utils/render.js +31 -18
  281. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  282. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -1
  283. package/dist/src/core/shaders/templates/BorderTemplate.js +30 -10
  284. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  285. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  286. package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -2
  287. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  288. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  289. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  290. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  291. package/dist/src/core/shaders/webgl/Border.js +138 -84
  292. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  293. package/dist/src/core/shaders/webgl/Default.js +46 -47
  294. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  295. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  296. package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
  297. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  298. package/dist/src/core/shaders/webgl/LinearGradient.js +60 -36
  299. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  300. package/dist/src/core/shaders/webgl/RadialGradient.js +60 -37
  301. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  302. package/dist/src/core/shaders/webgl/Rounded.js +74 -72
  303. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  304. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +172 -113
  305. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  306. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +191 -132
  307. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  308. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +57 -55
  309. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  310. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  311. package/dist/src/core/shaders/webgl/SdfShader.js +56 -66
  312. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  313. package/dist/src/core/shaders/webgl/Shadow.js +89 -83
  314. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  315. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  316. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  317. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  318. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  319. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  320. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  321. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  322. package/dist/src/core/text-rendering/SdfFontHandler.js +379 -0
  323. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  324. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  325. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  326. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  327. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  328. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  329. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  330. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  331. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/TextRenderer.js} +20 -38
  332. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  333. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  334. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  335. package/dist/src/core/text-rendering/Utils.js +84 -0
  336. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  337. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  338. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  339. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -5
  340. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  341. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
  342. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
  343. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  344. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  345. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +87 -46
  346. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  347. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  348. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
  349. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  350. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
  351. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
  352. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  353. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  354. package/dist/src/core/textures/ColorTexture.js +3 -4
  355. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  356. package/dist/src/core/textures/ImageTexture.d.ts +33 -14
  357. package/dist/src/core/textures/ImageTexture.js +46 -125
  358. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  359. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  360. package/dist/src/core/textures/NoiseTexture.js +8 -8
  361. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  362. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  363. package/dist/src/core/textures/RenderTexture.js +12 -12
  364. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  365. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  366. package/dist/src/core/textures/SubTexture.js +22 -40
  367. package/dist/src/core/textures/SubTexture.js.map +1 -1
  368. package/dist/src/core/textures/Texture.d.ts +74 -15
  369. package/dist/src/core/textures/Texture.js +131 -19
  370. package/dist/src/core/textures/Texture.js.map +1 -1
  371. package/dist/src/core/utils.d.ts +2 -1
  372. package/dist/src/core/utils.js +1 -1
  373. package/dist/src/core/utils.js.map +1 -1
  374. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  375. package/dist/src/main-api/DynamicShaderController.js +58 -0
  376. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  377. package/dist/src/main-api/Inspector.d.ts +129 -1
  378. package/dist/src/main-api/Inspector.js +462 -23
  379. package/dist/src/main-api/Inspector.js.map +1 -1
  380. package/dist/src/main-api/Renderer.d.ts +223 -41
  381. package/dist/src/main-api/Renderer.js +107 -62
  382. package/dist/src/main-api/Renderer.js.map +1 -1
  383. package/dist/src/main-api/ShaderController.d.ts +31 -0
  384. package/dist/src/main-api/ShaderController.js +37 -0
  385. package/dist/src/main-api/ShaderController.js.map +1 -0
  386. package/dist/src/utils.d.ts +0 -2
  387. package/dist/src/utils.js +0 -36
  388. package/dist/src/utils.js.map +1 -1
  389. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  390. package/exports/canvas-shaders.ts +28 -28
  391. package/exports/canvas.ts +45 -45
  392. package/exports/index.ts +90 -90
  393. package/exports/inspector.ts +24 -24
  394. package/exports/platform.ts +31 -0
  395. package/exports/utils.ts +50 -50
  396. package/exports/webgl-shaders.ts +28 -28
  397. package/exports/webgl.ts +52 -50
  398. package/package.json +16 -15
  399. package/src/common/CommonTypes.ts +163 -146
  400. package/src/common/EventEmitter.ts +77 -77
  401. package/src/common/IAnimationController.ts +92 -92
  402. package/src/common/IEventEmitter.ts +28 -28
  403. package/src/core/Autosizer.ts +224 -0
  404. package/src/core/CoreNode.test.ts +365 -202
  405. package/src/core/CoreNode.ts +2785 -2489
  406. package/src/core/CoreShaderManager.ts +188 -188
  407. package/src/core/CoreTextNode.test.ts +311 -0
  408. package/src/core/CoreTextNode.ts +607 -451
  409. package/src/core/CoreTextureManager.ts +484 -548
  410. package/src/core/Stage.ts +927 -800
  411. package/src/core/TextureError.ts +46 -0
  412. package/src/core/TextureMemoryManager.ts +418 -462
  413. package/src/core/animations/AnimationManager.ts +38 -38
  414. package/src/core/animations/CoreAnimation.ts +290 -291
  415. package/src/core/animations/CoreAnimationController.ts +169 -166
  416. package/src/core/lib/ContextSpy.ts +41 -41
  417. package/src/core/lib/Matrix3d.ts +244 -244
  418. package/src/core/lib/RenderCoords.ts +71 -71
  419. package/src/core/lib/collectionUtils.ts +83 -0
  420. package/src/core/lib/colorCache.ts +20 -0
  421. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
  422. package/src/core/lib/utils.ts +337 -390
  423. package/src/core/platforms/GlContextWrapper.ts +291 -0
  424. package/src/core/platforms/Platform.ts +176 -77
  425. package/src/core/{lib → platforms/web}/WebGlContextWrapper.ts +1547 -1368
  426. package/src/core/platforms/web/WebPlatform.ts +306 -84
  427. package/src/core/platforms/web/WebPlatformChrome50.ts +63 -0
  428. package/src/core/platforms/web/WebPlatformLegacy.ts +150 -0
  429. package/src/core/platforms/web/WebPlatformNext.ts +57 -0
  430. package/src/core/platforms/web/lib/ImageWorker.ts +192 -0
  431. package/src/core/platforms/web/lib/ImageWorkerDefault.ts +117 -0
  432. package/src/core/platforms/web/lib/ImageWorkerLegacy.ts +87 -0
  433. package/src/core/platforms/web/lib/ImageWorkerNoOptions.ts +99 -0
  434. package/src/core/platforms/web/lib/createImageBitmap.ts +40 -0
  435. package/src/core/platforms/web/lib/textureCompression.ts +391 -0
  436. package/src/core/{lib → platforms/web/lib}/textureSvg.ts +66 -78
  437. package/src/core/platforms/web/lib/utils.ts +105 -0
  438. package/src/core/renderers/CoreContextTexture.ts +44 -43
  439. package/src/core/renderers/CoreRenderOp.ts +22 -22
  440. package/src/core/renderers/CoreRenderer.ts +71 -110
  441. package/src/core/renderers/CoreShaderNode.ts +202 -175
  442. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  443. package/src/core/renderers/canvas/CanvasRenderer.ts +258 -302
  444. package/src/core/renderers/canvas/CanvasShaderNode.ts +95 -96
  445. package/src/core/renderers/canvas/CanvasTexture.ts +160 -156
  446. package/src/core/renderers/webgl/SdfRenderOp.ts +106 -0
  447. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +89 -86
  448. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
  449. package/src/core/renderers/webgl/WebGlCtxTexture.test.ts +113 -0
  450. package/src/core/renderers/webgl/WebGlCtxTexture.ts +350 -298
  451. package/src/core/renderers/webgl/WebGlRenderer.ts +727 -747
  452. package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -435
  453. package/src/core/renderers/webgl/WebGlShaderProgram.ts +364 -341
  454. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  455. package/src/core/renderers/webgl/internal/RendererUtils.ts +150 -155
  456. package/src/core/renderers/webgl/internal/ShaderUtils.ts +283 -281
  457. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  458. package/src/core/shaders/canvas/Border.ts +132 -78
  459. package/src/core/shaders/canvas/HolePunch.ts +56 -62
  460. package/src/core/shaders/canvas/LinearGradient.ts +73 -71
  461. package/src/core/shaders/canvas/RadialGradient.ts +96 -99
  462. package/src/core/shaders/canvas/Rounded.ts +55 -55
  463. package/src/core/shaders/canvas/RoundedWithBorder.ts +122 -74
  464. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +136 -90
  465. package/src/core/shaders/canvas/RoundedWithShadow.ts +71 -70
  466. package/src/core/shaders/canvas/Shadow.ts +54 -52
  467. package/src/core/shaders/canvas/utils/render.ts +160 -151
  468. package/src/core/shaders/templates/BorderTemplate.ts +145 -115
  469. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  470. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  471. package/src/core/shaders/templates/RadialGradientTemplate.ts +83 -81
  472. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  473. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  474. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  475. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  476. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  477. package/src/core/shaders/utils.ts +46 -46
  478. package/src/core/shaders/webgl/Border.ts +169 -116
  479. package/src/core/shaders/webgl/Default.ts +88 -89
  480. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  481. package/src/core/shaders/webgl/HolePunch.ts +75 -75
  482. package/src/core/shaders/webgl/LinearGradient.ts +106 -82
  483. package/src/core/shaders/webgl/RadialGradient.ts +108 -85
  484. package/src/core/shaders/webgl/Rounded.ts +115 -117
  485. package/src/core/shaders/webgl/RoundedWithBorder.ts +210 -155
  486. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -175
  487. package/src/core/shaders/webgl/RoundedWithShadow.ts +96 -98
  488. package/src/core/shaders/webgl/SdfShader.ts +122 -134
  489. package/src/core/shaders/webgl/Shadow.ts +121 -115
  490. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  491. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  492. package/src/core/text-rendering/SdfFontHandler.ts +581 -0
  493. package/src/core/text-rendering/SdfTextRenderer.ts +403 -0
  494. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  495. package/src/core/text-rendering/TextRenderer.ts +444 -0
  496. package/src/core/text-rendering/Utils.ts +99 -0
  497. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  498. package/src/core/textures/ColorTexture.ts +104 -102
  499. package/src/core/textures/ImageTexture.ts +292 -418
  500. package/src/core/textures/NoiseTexture.ts +106 -104
  501. package/src/core/textures/RenderTexture.ts +87 -85
  502. package/src/core/textures/SubTexture.ts +184 -205
  503. package/src/core/textures/Texture.ts +524 -381
  504. package/src/core/utils.ts +229 -227
  505. package/src/env.d.ts +7 -7
  506. package/src/main-api/INode.ts +100 -100
  507. package/src/main-api/Inspector.ts +1278 -569
  508. package/src/main-api/Renderer.ts +1030 -818
  509. package/src/main-api/utils.ts +45 -45
  510. package/src/utils.ts +220 -267
  511. package/COPYING +0 -1
  512. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  513. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  514. package/src/core/lib/ImageWorker.ts +0 -286
  515. package/src/core/lib/textureCompression.ts +0 -152
  516. package/src/core/lib/validateImageBitmap.ts +0 -87
  517. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  518. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
  519. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  520. package/src/core/text-rendering/TrFontManager.ts +0 -183
  521. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  522. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  523. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  524. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  525. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  526. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  527. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  528. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -514
  529. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -863
  530. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -793
  531. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  532. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  533. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  534. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  535. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  536. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -497
  537. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  538. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  539. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  540. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  541. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -567
@@ -41,7 +41,6 @@ export class WebGlContextWrapper {
41
41
  boundArrayBuffer;
42
42
  boundElementArrayBuffer;
43
43
  curProgram;
44
- curUniformLocations = {};
45
44
  //#endregion Cached WebGL State
46
45
  //#region Canvas
47
46
  canvas;
@@ -62,6 +61,7 @@ export class WebGlContextWrapper {
62
61
  TEXTURE_WRAP_S;
63
62
  TEXTURE_WRAP_T;
64
63
  LINEAR;
64
+ LINEAR_MIPMAP_LINEAR;
65
65
  CLAMP_TO_EDGE;
66
66
  RGB;
67
67
  RGBA;
@@ -134,6 +134,7 @@ export class WebGlContextWrapper {
134
134
  this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;
135
135
  this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;
136
136
  this.LINEAR = gl.LINEAR;
137
+ this.LINEAR_MIPMAP_LINEAR = gl.LINEAR_MIPMAP_LINEAR;
137
138
  this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;
138
139
  this.RGB = gl.RGB;
139
140
  this.RGBA = gl.RGBA;
@@ -177,8 +178,9 @@ export class WebGlContextWrapper {
177
178
  * @param textureUnit
178
179
  */
179
180
  activeTexture(textureUnit) {
181
+ const { gl } = this;
180
182
  if (this.activeTextureUnit !== textureUnit) {
181
- this.gl.activeTexture(textureUnit + this.gl.TEXTURE0);
183
+ gl.activeTexture(textureUnit + gl.TEXTURE0);
182
184
  this.activeTextureUnit = textureUnit;
183
185
  }
184
186
  }
@@ -192,14 +194,16 @@ export class WebGlContextWrapper {
192
194
  * @param texture
193
195
  */
194
196
  bindTexture(texture) {
195
- if (this.texture2dUnits[this.activeTextureUnit] === texture) {
197
+ const { gl, activeTextureUnit, texture2dUnits } = this;
198
+ if (texture2dUnits[activeTextureUnit] === texture) {
196
199
  return;
197
200
  }
198
- this.texture2dUnits[this.activeTextureUnit] = texture;
199
- this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
201
+ texture2dUnits[activeTextureUnit] = texture;
202
+ gl.bindTexture(this.gl.TEXTURE_2D, texture);
200
203
  }
201
204
  _getActiveTexture() {
202
- return this.texture2dUnits[this.activeTextureUnit];
205
+ const { activeTextureUnit, texture2dUnits } = this;
206
+ return texture2dUnits[activeTextureUnit];
203
207
  }
204
208
  /**
205
209
  * ```
@@ -213,27 +217,29 @@ export class WebGlContextWrapper {
213
217
  * @returns
214
218
  */
215
219
  texParameteri(pname, param) {
220
+ const { gl, texture2dParams } = this;
216
221
  const activeTexture = this._getActiveTexture();
217
222
  if (!activeTexture) {
218
223
  throw new Error('No active texture');
219
224
  }
220
- let textureParams = this.texture2dParams.get(activeTexture);
225
+ let textureParams = texture2dParams.get(activeTexture);
221
226
  if (!textureParams) {
222
227
  textureParams = {};
223
- this.texture2dParams.set(activeTexture, textureParams);
228
+ texture2dParams.set(activeTexture, textureParams);
224
229
  }
225
230
  if (textureParams[pname] === param) {
226
231
  return;
227
232
  }
228
233
  textureParams[pname] = param;
229
- this.gl.texParameteri(this.gl.TEXTURE_2D, pname, param);
234
+ gl.texParameteri(gl.TEXTURE_2D, pname, param);
230
235
  }
231
236
  texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {
237
+ const { gl } = this;
232
238
  if (format) {
233
- this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
239
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
234
240
  }
235
241
  else {
236
- this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
242
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
237
243
  }
238
244
  }
239
245
  /**
@@ -245,7 +251,8 @@ export class WebGlContextWrapper {
245
251
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
246
252
  */
247
253
  compressedTexImage2D(level, internalformat, width, height, border, data) {
248
- this.gl.compressedTexImage2D(this.gl.TEXTURE_2D, level, internalformat, width, height, border, data);
254
+ const { gl } = this;
255
+ gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);
249
256
  }
250
257
  /**
251
258
  * ```
@@ -256,7 +263,8 @@ export class WebGlContextWrapper {
256
263
  * @param param
257
264
  */
258
265
  pixelStorei(pname, param) {
259
- this.gl.pixelStorei(pname, param);
266
+ const { gl } = this;
267
+ gl.pixelStorei(pname, param);
260
268
  }
261
269
  /**
262
270
  * ```
@@ -267,7 +275,8 @@ export class WebGlContextWrapper {
267
275
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
268
276
  */
269
277
  generateMipmap() {
270
- this.gl.generateMipmap(this.gl.TEXTURE_2D);
278
+ const { gl } = this;
279
+ gl.generateMipmap(gl.TEXTURE_2D);
271
280
  }
272
281
  /**
273
282
  * ```
@@ -277,7 +286,8 @@ export class WebGlContextWrapper {
277
286
  * @returns
278
287
  */
279
288
  createTexture() {
280
- return this.gl.createTexture();
289
+ const { gl } = this;
290
+ return gl.createTexture();
281
291
  }
282
292
  /**
283
293
  * ```
@@ -287,10 +297,11 @@ export class WebGlContextWrapper {
287
297
  * @param texture
288
298
  */
289
299
  deleteTexture(texture) {
300
+ const { gl } = this;
290
301
  if (texture) {
291
302
  this.texture2dParams.delete(texture);
292
303
  }
293
- this.gl.deleteTexture(texture);
304
+ gl.deleteTexture(texture);
294
305
  }
295
306
  /**
296
307
  * ```
@@ -307,7 +318,8 @@ export class WebGlContextWrapper {
307
318
  * ```
308
319
  */
309
320
  viewport(x, y, width, height) {
310
- this.gl.viewport(x, y, width, height);
321
+ const { gl } = this;
322
+ gl.viewport(x, y, width, height);
311
323
  }
312
324
  /**
313
325
  * ```
@@ -320,7 +332,8 @@ export class WebGlContextWrapper {
320
332
  * @param alpha
321
333
  */
322
334
  clearColor(red, green, blue, alpha) {
323
- this.gl.clearColor(red, green, blue, alpha);
335
+ const { gl } = this;
336
+ gl.clearColor(red, green, blue, alpha);
324
337
  }
325
338
  /**
326
339
  * ```
@@ -329,14 +342,15 @@ export class WebGlContextWrapper {
329
342
  * @param enable
330
343
  */
331
344
  setScissorTest(enable) {
332
- if (enable === this.scissorEnabled) {
345
+ const { gl, scissorEnabled } = this;
346
+ if (enable === scissorEnabled) {
333
347
  return;
334
348
  }
335
349
  if (enable) {
336
- this.gl.enable(this.gl.SCISSOR_TEST);
350
+ gl.enable(gl.SCISSOR_TEST);
337
351
  }
338
352
  else {
339
- this.gl.disable(this.gl.SCISSOR_TEST);
353
+ gl.disable(gl.SCISSOR_TEST);
340
354
  }
341
355
  this.scissorEnabled = enable;
342
356
  }
@@ -351,11 +365,12 @@ export class WebGlContextWrapper {
351
365
  * @param height
352
366
  */
353
367
  scissor(x, y, width, height) {
354
- if (x !== this.scissorX ||
355
- y !== this.scissorY ||
356
- width !== this.scissorWidth ||
357
- height !== this.scissorHeight) {
358
- this.gl.scissor(x, y, width, height);
368
+ const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;
369
+ if (x !== scissorX ||
370
+ y !== scissorY ||
371
+ width !== scissorWidth ||
372
+ height !== scissorHeight) {
373
+ gl.scissor(x, y, width, height);
359
374
  this.scissorX = x;
360
375
  this.scissorY = y;
361
376
  this.scissorWidth = width;
@@ -371,14 +386,15 @@ export class WebGlContextWrapper {
371
386
  * @returns
372
387
  */
373
388
  setBlend(blend) {
374
- if (blend === this.blendEnabled) {
389
+ const { gl, blendEnabled } = this;
390
+ if (blend === blendEnabled) {
375
391
  return;
376
392
  }
377
393
  if (blend) {
378
- this.gl.enable(this.gl.BLEND);
394
+ gl.enable(gl.BLEND);
379
395
  }
380
396
  else {
381
- this.gl.disable(this.gl.BLEND);
397
+ gl.disable(gl.BLEND);
382
398
  }
383
399
  this.blendEnabled = blend;
384
400
  }
@@ -391,11 +407,12 @@ export class WebGlContextWrapper {
391
407
  * @param dst
392
408
  */
393
409
  blendFunc(src, dst) {
394
- if (src !== this.blendSrcRgb ||
395
- dst !== this.blendDstRgb ||
396
- src !== this.blendSrcAlpha ||
397
- dst !== this.blendDstAlpha) {
398
- this.gl.blendFunc(src, dst);
410
+ const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;
411
+ if (src !== blendSrcRgb ||
412
+ dst !== blendDstRgb ||
413
+ src !== blendSrcAlpha ||
414
+ dst !== blendDstAlpha) {
415
+ gl.blendFunc(src, dst);
399
416
  this.blendSrcRgb = src;
400
417
  this.blendDstRgb = dst;
401
418
  this.blendSrcAlpha = src;
@@ -410,7 +427,8 @@ export class WebGlContextWrapper {
410
427
  * @returns
411
428
  */
412
429
  createBuffer() {
413
- return this.gl.createBuffer();
430
+ const { gl } = this;
431
+ return gl.createBuffer();
414
432
  }
415
433
  /**
416
434
  * ```
@@ -419,7 +437,8 @@ export class WebGlContextWrapper {
419
437
  * @returns
420
438
  */
421
439
  createFramebuffer() {
422
- return this.gl.createFramebuffer();
440
+ const { gl } = this;
441
+ return gl.createFramebuffer();
423
442
  }
424
443
  /**
425
444
  * ```
@@ -429,7 +448,8 @@ export class WebGlContextWrapper {
429
448
  * @param framebuffer
430
449
  */
431
450
  bindFramebuffer(framebuffer) {
432
- this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, framebuffer);
451
+ const { gl } = this;
452
+ gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
433
453
  }
434
454
  /**
435
455
  * ```
@@ -439,7 +459,7 @@ export class WebGlContextWrapper {
439
459
  * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`
440
460
  */
441
461
  framebufferTexture2D(attachment, texture, level) {
442
- const gl = this.gl;
462
+ const { gl } = this;
443
463
  gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);
444
464
  }
445
465
  /**
@@ -451,7 +471,8 @@ export class WebGlContextWrapper {
451
471
  * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
452
472
  */
453
473
  clear() {
454
- this.gl.clear(this.gl.COLOR_BUFFER_BIT);
474
+ const { gl } = this;
475
+ gl.clear(gl.COLOR_BUFFER_BIT);
455
476
  }
456
477
  /**
457
478
  * ```
@@ -467,11 +488,12 @@ export class WebGlContextWrapper {
467
488
  * @param usage
468
489
  */
469
490
  arrayBufferData(buffer, data, usage) {
470
- if (this.boundArrayBuffer !== buffer) {
471
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
491
+ const { gl, boundArrayBuffer } = this;
492
+ if (boundArrayBuffer !== buffer) {
493
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
472
494
  this.boundArrayBuffer = buffer;
473
495
  }
474
- this.gl.bufferData(this.gl.ARRAY_BUFFER, data, usage);
496
+ gl.bufferData(gl.ARRAY_BUFFER, data, usage);
475
497
  }
476
498
  /**
477
499
  * ```
@@ -486,11 +508,12 @@ export class WebGlContextWrapper {
486
508
  * @param usage
487
509
  */
488
510
  elementArrayBufferData(buffer, data, usage) {
489
- if (this.boundElementArrayBuffer !== buffer) {
490
- this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
511
+ const { gl, boundElementArrayBuffer } = this;
512
+ if (boundElementArrayBuffer !== buffer) {
513
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
491
514
  this.boundElementArrayBuffer = buffer;
492
515
  }
493
- this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, data, usage);
516
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
494
517
  }
495
518
  /**
496
519
  * ```
@@ -510,11 +533,12 @@ export class WebGlContextWrapper {
510
533
  * @param offset
511
534
  */
512
535
  vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {
513
- if (this.boundArrayBuffer !== buffer) {
514
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
536
+ const { gl, boundArrayBuffer } = this;
537
+ if (boundArrayBuffer !== buffer) {
538
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
515
539
  this.boundArrayBuffer = buffer;
516
540
  }
517
- this.gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
541
+ gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
518
542
  }
519
543
  /**
520
544
  * Returns object with Attribute names as key and numbers as location values
@@ -542,10 +566,10 @@ export class WebGlContextWrapper {
542
566
  getAttributeLocations(program) {
543
567
  const gl = this.gl;
544
568
  const length = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
545
- const result = {};
569
+ const result = [];
546
570
  for (let i = 0; i < length; i++) {
547
571
  const { name } = gl.getActiveAttrib(program, i);
548
- result[name] = i;
572
+ result[gl.getAttribLocation(program, name)] = name;
549
573
  }
550
574
  return result;
551
575
  }
@@ -557,13 +581,13 @@ export class WebGlContextWrapper {
557
581
  * @param program
558
582
  * @returns
559
583
  */
560
- useProgram(program, uniformLocations) {
561
- if (this.curProgram === program) {
584
+ useProgram(program) {
585
+ const { gl, curProgram } = this;
586
+ if (curProgram === program) {
562
587
  return;
563
588
  }
564
- this.gl.useProgram(program);
589
+ gl.useProgram(program);
565
590
  this.curProgram = program;
566
- this.curUniformLocations = uniformLocations;
567
591
  }
568
592
  /**
569
593
  * Sets the value of a single float uniform variable.
@@ -572,7 +596,8 @@ export class WebGlContextWrapper {
572
596
  * @param v0 - The value to set.
573
597
  */
574
598
  uniform1f(location, v0) {
575
- this.gl.uniform1f(this.curUniformLocations[location] || null, v0);
599
+ const { gl } = this;
600
+ gl.uniform1f(location, v0);
576
601
  }
577
602
  /**
578
603
  * Sets the value of a float array uniform variable.
@@ -581,7 +606,8 @@ export class WebGlContextWrapper {
581
606
  * @param value - The array of values to set.
582
607
  */
583
608
  uniform1fv(location, value) {
584
- this.gl.uniform1fv(this.curUniformLocations[location] || null, value);
609
+ const { gl } = this;
610
+ gl.uniform1fv(location, value);
585
611
  }
586
612
  /**
587
613
  * Sets the value of a single integer uniform variable.
@@ -590,7 +616,8 @@ export class WebGlContextWrapper {
590
616
  * @param v0 - The value to set.
591
617
  */
592
618
  uniform1i(location, v0) {
593
- this.gl.uniform1i(this.curUniformLocations[location] || null, v0);
619
+ const { gl } = this;
620
+ gl.uniform1i(location, v0);
594
621
  }
595
622
  /**
596
623
  * Sets the value of an integer array uniform variable.
@@ -599,7 +626,8 @@ export class WebGlContextWrapper {
599
626
  * @param value - The array of values to set.
600
627
  */
601
628
  uniform1iv(location, value) {
602
- this.gl.uniform1iv(this.curUniformLocations[location] || null, value);
629
+ const { gl } = this;
630
+ gl.uniform1iv(location, value);
603
631
  }
604
632
  /**
605
633
  * Sets the value of a vec2 uniform variable.
@@ -609,16 +637,8 @@ export class WebGlContextWrapper {
609
637
  * @param v1 - The second component of the vector.
610
638
  */
611
639
  uniform2f(location, v0, v1) {
612
- this.gl.uniform2f(this.curUniformLocations[location] || null, v0, v1);
613
- }
614
- /**
615
- * Sets the value of a vec3 uniform variable.
616
- *
617
- * @param location - The location of the uniform variable.
618
- * @param v - array of 4 numbers.
619
- */
620
- uniform2fa(location, value) {
621
- this.gl.uniform2f(this.curUniformLocations[location] || null, value[0], value[1]);
640
+ const { gl } = this;
641
+ gl.uniform2f(location, v0, v1);
622
642
  }
623
643
  /**
624
644
  * Sets the value of a vec2 array uniform variable.
@@ -627,7 +647,8 @@ export class WebGlContextWrapper {
627
647
  * @param value - The array of vec2 values to set.
628
648
  */
629
649
  uniform2fv(location, value) {
630
- this.gl.uniform2fv(this.curUniformLocations[location] || null, value);
650
+ const { gl } = this;
651
+ gl.uniform2fv(location, value);
631
652
  }
632
653
  /**
633
654
  * Sets the value of a ivec2 uniform variable.
@@ -637,7 +658,8 @@ export class WebGlContextWrapper {
637
658
  * @param v1 - The second component of the vector.
638
659
  */
639
660
  uniform2i(location, v0, v1) {
640
- this.gl.uniform2i(this.curUniformLocations[location] || null, v0, v1);
661
+ const { gl } = this;
662
+ gl.uniform2i(location, v0, v1);
641
663
  }
642
664
  /**
643
665
  * Sets the value of an ivec2 array uniform variable.
@@ -646,7 +668,8 @@ export class WebGlContextWrapper {
646
668
  * @param value - The array of ivec2 values to set.
647
669
  */
648
670
  uniform2iv(location, value) {
649
- this.gl.uniform2iv(this.curUniformLocations[location] || null, value);
671
+ const { gl } = this;
672
+ gl.uniform2iv(location, value);
650
673
  }
651
674
  /**
652
675
  * Sets the value of a vec3 uniform variable.
@@ -657,16 +680,8 @@ export class WebGlContextWrapper {
657
680
  * @param v2 - The third component of the vector.
658
681
  */
659
682
  uniform3f(location, v0, v1, v2) {
660
- this.gl.uniform3f(this.curUniformLocations[location] || null, v0, v1, v2);
661
- }
662
- /**
663
- * Sets the value of a vec3 uniform variable.
664
- *
665
- * @param location - The location of the uniform variable.
666
- * @param v - array of 4 numbers.
667
- */
668
- uniform3fa(location, value) {
669
- this.gl.uniform3f(this.curUniformLocations[location] || null, value[0], value[1], value[2]);
683
+ const { gl } = this;
684
+ gl.uniform3f(location, v0, v1, v2);
670
685
  }
671
686
  /**
672
687
  * Sets the value of a vec3 array uniform variable.
@@ -675,7 +690,8 @@ export class WebGlContextWrapper {
675
690
  * @param value - The array of vec3 values to set.
676
691
  */
677
692
  uniform3fv(location, value) {
678
- this.gl.uniform3fv(this.curUniformLocations[location] || null, value);
693
+ const { gl } = this;
694
+ gl.uniform3fv(location, value);
679
695
  }
680
696
  /**
681
697
  * Sets the value of a ivec3 uniform variable.
@@ -686,7 +702,8 @@ export class WebGlContextWrapper {
686
702
  * @param v2 - The third component of the vector.
687
703
  */
688
704
  uniform3i(location, v0, v1, v2) {
689
- this.gl.uniform3i(this.curUniformLocations[location] || null, v0, v1, v2);
705
+ const { gl } = this;
706
+ gl.uniform3i(location, v0, v1, v2);
690
707
  }
691
708
  /**
692
709
  * Sets the value of an ivec3 array uniform variable.
@@ -695,7 +712,8 @@ export class WebGlContextWrapper {
695
712
  * @param value - The array of ivec3 values to set.
696
713
  */
697
714
  uniform3iv(location, value) {
698
- this.gl.uniform3iv(this.curUniformLocations[location] || null, value);
715
+ const { gl } = this;
716
+ gl.uniform3iv(location, value);
699
717
  }
700
718
  /**
701
719
  * Sets the value of a vec4 uniform variable.
@@ -707,16 +725,8 @@ export class WebGlContextWrapper {
707
725
  * @param v3 - The fourth component of the vector.
708
726
  */
709
727
  uniform4f(location, v0, v1, v2, v3) {
710
- this.gl.uniform4f(this.curUniformLocations[location] || null, v0, v1, v2, v3);
711
- }
712
- /**
713
- * Sets the value of a vec4 uniform variable.
714
- *
715
- * @param location - The location of the uniform variable.
716
- * @param v - array of 4 numbers.
717
- */
718
- uniform4fa(location, value) {
719
- this.gl.uniform4f(this.curUniformLocations[location] || null, value[0], value[1], value[2], value[3]);
728
+ const { gl } = this;
729
+ gl.uniform4f(location, v0, v1, v2, v3);
720
730
  }
721
731
  /**
722
732
  * Sets the value of a vec4 array uniform variable.
@@ -725,7 +735,8 @@ export class WebGlContextWrapper {
725
735
  * @param value - The array of vec4 values to set.
726
736
  */
727
737
  uniform4fv(location, value) {
728
- this.gl.uniform4fv(this.curUniformLocations[location] || null, value);
738
+ const { gl } = this;
739
+ gl.uniform4fv(location, value);
729
740
  }
730
741
  /**
731
742
  * Sets the value of a ivec4 uniform variable.
@@ -737,7 +748,8 @@ export class WebGlContextWrapper {
737
748
  * @param v3 - The fourth component of the vector.
738
749
  */
739
750
  uniform4i(location, v0, v1, v2, v3) {
740
- this.gl.uniform4i(this.curUniformLocations[location] || null, v0, v1, v2, v3);
751
+ const { gl } = this;
752
+ gl.uniform4i(location, v0, v1, v2, v3);
741
753
  }
742
754
  /**
743
755
  * Sets the value of an ivec4 array uniform variable.
@@ -746,7 +758,8 @@ export class WebGlContextWrapper {
746
758
  * @param value - The array of ivec4 values to set.
747
759
  */
748
760
  uniform4iv(location, value) {
749
- this.gl.uniform4iv(this.curUniformLocations[location] || null, value);
761
+ const { gl } = this;
762
+ gl.uniform4iv(location, value);
750
763
  }
751
764
  /**
752
765
  * Sets the value of a mat2 uniform variable.
@@ -756,7 +769,8 @@ export class WebGlContextWrapper {
756
769
  * @param value - The array of mat2 values to set.
757
770
  */
758
771
  uniformMatrix2fv(location, value) {
759
- this.gl.uniformMatrix2fv(this.curUniformLocations[location] || null, false, value);
772
+ const { gl } = this;
773
+ gl.uniformMatrix2fv(location, false, value);
760
774
  }
761
775
  /**
762
776
  * Sets the value of a mat2 uniform variable.
@@ -764,7 +778,8 @@ export class WebGlContextWrapper {
764
778
  * @param value - The array of mat2 values to set.
765
779
  */
766
780
  uniformMatrix3fv(location, value) {
767
- this.gl.uniformMatrix3fv(this.curUniformLocations[location] || null, false, value);
781
+ const { gl } = this;
782
+ gl.uniformMatrix3fv(location, false, value);
768
783
  }
769
784
  /**
770
785
  * Sets the value of a mat4 uniform variable.
@@ -772,7 +787,8 @@ export class WebGlContextWrapper {
772
787
  * @param value - The array of mat4 values to set.
773
788
  */
774
789
  uniformMatrix4fv(location, value) {
775
- this.gl.uniformMatrix4fv(this.curUniformLocations[location] || null, false, value);
790
+ const { gl } = this;
791
+ gl.uniformMatrix4fv(location, false, value);
776
792
  }
777
793
  /**
778
794
  * ```
@@ -783,7 +799,8 @@ export class WebGlContextWrapper {
783
799
  * @returns
784
800
  */
785
801
  getParameter(pname) {
786
- return this.gl.getParameter(pname);
802
+ const { gl } = this;
803
+ return gl.getParameter(pname);
787
804
  }
788
805
  /**
789
806
  * ```
@@ -796,7 +813,8 @@ export class WebGlContextWrapper {
796
813
  * @param offset
797
814
  */
798
815
  drawElements(mode, count, type, offset) {
799
- this.gl.drawElements(mode, count, type, offset);
816
+ const { gl } = this;
817
+ gl.drawElements(mode, count, type, offset);
800
818
  }
801
819
  /**
802
820
  * ```
@@ -807,7 +825,8 @@ export class WebGlContextWrapper {
807
825
  * @returns
808
826
  */
809
827
  getExtension(name) {
810
- return this.gl.getExtension(name);
828
+ const { gl } = this;
829
+ return gl.getExtension(name);
811
830
  }
812
831
  /**
813
832
  * ```
@@ -817,7 +836,8 @@ export class WebGlContextWrapper {
817
836
  * @returns
818
837
  */
819
838
  getError() {
820
- return this.gl.getError();
839
+ const { gl } = this;
840
+ return gl.getError();
821
841
  }
822
842
  /**
823
843
  * ```
@@ -827,10 +847,9 @@ export class WebGlContextWrapper {
827
847
  * @returns
828
848
  */
829
849
  createVertexArray() {
830
- if (this.gl instanceof WebGL2RenderingContext) {
831
- return this.gl.createVertexArray();
832
- }
833
- return undefined;
850
+ const { gl } = this;
851
+ assertTruthy(gl instanceof WebGL2RenderingContext);
852
+ return gl.createVertexArray();
834
853
  }
835
854
  /**
836
855
  * ```
@@ -840,9 +859,9 @@ export class WebGlContextWrapper {
840
859
  * @param vertexArray
841
860
  */
842
861
  bindVertexArray(vertexArray) {
843
- if (this.gl instanceof WebGL2RenderingContext) {
844
- this.gl.bindVertexArray(vertexArray);
845
- }
862
+ const { gl } = this;
863
+ assertTruthy(gl instanceof WebGL2RenderingContext);
864
+ gl.bindVertexArray(vertexArray);
846
865
  }
847
866
  /**
848
867
  * ```
@@ -854,7 +873,8 @@ export class WebGlContextWrapper {
854
873
  * @returns
855
874
  */
856
875
  getAttribLocation(program, name) {
857
- return this.gl.getAttribLocation(program, name);
876
+ const { gl } = this;
877
+ return gl.getAttribLocation(program, name);
858
878
  }
859
879
  /**
860
880
  * ```
@@ -866,7 +886,8 @@ export class WebGlContextWrapper {
866
886
  * @returns
867
887
  */
868
888
  getUniformLocation(program, name) {
869
- return this.gl.getUniformLocation(program, name);
889
+ const { gl } = this;
890
+ return gl.getUniformLocation(program, name);
870
891
  }
871
892
  /**
872
893
  * ```
@@ -876,7 +897,8 @@ export class WebGlContextWrapper {
876
897
  * @param index
877
898
  */
878
899
  enableVertexAttribArray(index) {
879
- this.gl.enableVertexAttribArray(index);
900
+ const { gl } = this;
901
+ gl.enableVertexAttribArray(index);
880
902
  }
881
903
  /**
882
904
  * ```
@@ -886,7 +908,8 @@ export class WebGlContextWrapper {
886
908
  * @param index
887
909
  */
888
910
  disableVertexAttribArray(index) {
889
- this.gl.disableVertexAttribArray(index);
911
+ const { gl } = this;
912
+ gl.disableVertexAttribArray(index);
890
913
  }
891
914
  /**
892
915
  * ```
@@ -897,7 +920,8 @@ export class WebGlContextWrapper {
897
920
  * @returns
898
921
  */
899
922
  createShader(type) {
900
- return this.gl.createShader(type);
923
+ const { gl } = this;
924
+ return gl.createShader(type);
901
925
  }
902
926
  /**
903
927
  * ```
@@ -908,7 +932,8 @@ export class WebGlContextWrapper {
908
932
  * @returns
909
933
  */
910
934
  compileShader(shader) {
911
- this.gl.compileShader(shader);
935
+ const { gl } = this;
936
+ gl.compileShader(shader);
912
937
  }
913
938
  /**
914
939
  * ```
@@ -919,7 +944,8 @@ export class WebGlContextWrapper {
919
944
  * @param shader
920
945
  */
921
946
  attachShader(program, shader) {
922
- this.gl.attachShader(program, shader);
947
+ const { gl } = this;
948
+ gl.attachShader(program, shader);
923
949
  }
924
950
  /**
925
951
  * ```
@@ -929,7 +955,8 @@ export class WebGlContextWrapper {
929
955
  * @param program
930
956
  */
931
957
  linkProgram(program) {
932
- this.gl.linkProgram(program);
958
+ const { gl } = this;
959
+ gl.linkProgram(program);
933
960
  }
934
961
  /**
935
962
  * ```
@@ -939,7 +966,8 @@ export class WebGlContextWrapper {
939
966
  * @param shader
940
967
  */
941
968
  deleteProgram(shader) {
942
- this.gl.deleteProgram(shader);
969
+ const { gl } = this;
970
+ gl.deleteProgram(shader);
943
971
  }
944
972
  /**
945
973
  * ```
@@ -950,7 +978,8 @@ export class WebGlContextWrapper {
950
978
  * @param pname
951
979
  */
952
980
  getShaderParameter(shader, pname) {
953
- return this.gl.getShaderParameter(shader, pname);
981
+ const { gl } = this;
982
+ return gl.getShaderParameter(shader, pname);
954
983
  }
955
984
  /**
956
985
  * ```
@@ -960,7 +989,8 @@ export class WebGlContextWrapper {
960
989
  * @param shader
961
990
  */
962
991
  getShaderInfoLog(shader) {
963
- return this.gl.getShaderInfoLog(shader);
992
+ const { gl } = this;
993
+ return gl.getShaderInfoLog(shader);
964
994
  }
965
995
  /**
966
996
  * ```
@@ -970,7 +1000,8 @@ export class WebGlContextWrapper {
970
1000
  * @returns
971
1001
  */
972
1002
  createProgram() {
973
- return this.gl.createProgram();
1003
+ const { gl } = this;
1004
+ return gl.createProgram();
974
1005
  }
975
1006
  /**
976
1007
  * ```
@@ -982,7 +1013,8 @@ export class WebGlContextWrapper {
982
1013
  * @returns
983
1014
  */
984
1015
  getProgramParameter(program, pname) {
985
- return this.gl.getProgramParameter(program, pname);
1016
+ const { gl } = this;
1017
+ return gl.getProgramParameter(program, pname);
986
1018
  }
987
1019
  /**
988
1020
  * ```
@@ -993,7 +1025,8 @@ export class WebGlContextWrapper {
993
1025
  * @returns
994
1026
  */
995
1027
  getProgramInfoLog(program) {
996
- return this.gl.getProgramInfoLog(program);
1028
+ const { gl } = this;
1029
+ return gl.getProgramInfoLog(program);
997
1030
  }
998
1031
  /**
999
1032
  * ```
@@ -1004,7 +1037,8 @@ export class WebGlContextWrapper {
1004
1037
  * @param source
1005
1038
  */
1006
1039
  shaderSource(shader, source) {
1007
- this.gl.shaderSource(shader, source);
1040
+ const { gl } = this;
1041
+ gl.shaderSource(shader, source);
1008
1042
  }
1009
1043
  /**
1010
1044
  * ```
@@ -1014,34 +1048,40 @@ export class WebGlContextWrapper {
1014
1048
  * @param shader
1015
1049
  */
1016
1050
  deleteShader(shader) {
1017
- this.gl.deleteShader(shader);
1018
- }
1019
- /**
1020
- * ```
1021
- * gl.deleteBuffer(buffer);
1022
- * ```
1023
- *
1024
- * @param buffer - The buffer to delete
1025
- */
1026
- deleteBuffer(buffer) {
1027
1051
  const { gl } = this;
1028
- gl.deleteBuffer(buffer);
1029
- // Reset bound buffers if they match the deleted buffer
1030
- if (this.boundArrayBuffer === buffer) {
1031
- this.boundArrayBuffer = null;
1032
- }
1033
- }
1034
- /**
1035
- * ```
1036
- * gl.deleteVertexArray(vertexArray);
1037
- * ```
1038
- *
1039
- * @param vertexArray - The vertex array object to delete
1040
- */
1041
- deleteVertexArray(vertexArray) {
1042
- if (this.isWebGl2()) {
1043
- this.gl.deleteVertexArray(vertexArray);
1052
+ gl.deleteShader(shader);
1053
+ }
1054
+ /**
1055
+ * Check for WebGL errors and return error information
1056
+ * @param operation Description of the operation for error reporting
1057
+ * @returns Object with error information or null if no error
1058
+ */
1059
+ checkError(operation) {
1060
+ const error = this.getError();
1061
+ if (error !== 0) {
1062
+ // 0 is GL_NO_ERROR
1063
+ let errorName = 'UNKNOWN_ERROR';
1064
+ switch (error) {
1065
+ case this.INVALID_ENUM:
1066
+ errorName = 'INVALID_ENUM';
1067
+ break;
1068
+ case 0x0501: // GL_INVALID_VALUE
1069
+ errorName = 'INVALID_VALUE';
1070
+ break;
1071
+ case this.INVALID_OPERATION:
1072
+ errorName = 'INVALID_OPERATION';
1073
+ break;
1074
+ case 0x0505: // GL_OUT_OF_MEMORY
1075
+ errorName = 'OUT_OF_MEMORY';
1076
+ break;
1077
+ case 0x9242: // GL_CONTEXT_LOST_WEBGL
1078
+ errorName = 'CONTEXT_LOST_WEBGL';
1079
+ break;
1080
+ }
1081
+ const message = `WebGL ${errorName} (0x${error.toString(16)}) during ${operation}`;
1082
+ return { error, errorName, message };
1044
1083
  }
1084
+ return null;
1045
1085
  }
1046
1086
  }
1047
1087
  /**