@lightningtv/renderer 2.16.1 → 3.2.3

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