@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
@@ -2,7 +2,12 @@
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
4
 
5
- import { assertTruthy } from '../../utils.js';
5
+ import { assertTruthy, isProductionEnvironment } from '../../utils.js';
6
+ import type {
7
+ Vec2,
8
+ Vec3,
9
+ Vec4,
10
+ } from '../renderers/webgl/internal/ShaderUtils.js';
6
11
  import { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';
7
12
 
8
13
  /**
@@ -45,6 +50,7 @@ export class WebGlContextWrapper {
45
50
  private boundArrayBuffer: WebGLBuffer | null;
46
51
  private boundElementArrayBuffer: WebGLBuffer | null;
47
52
  private curProgram: WebGLProgram | null;
53
+ private curUniformLocations: Record<string, WebGLUniformLocation> = {};
48
54
  //#endregion Cached WebGL State
49
55
 
50
56
  //#region Canvas
@@ -67,6 +73,7 @@ export class WebGlContextWrapper {
67
73
  public readonly TEXTURE_WRAP_S;
68
74
  public readonly TEXTURE_WRAP_T;
69
75
  public readonly LINEAR;
76
+ public readonly LINEAR_MIPMAP_LINEAR;
70
77
  public readonly CLAMP_TO_EDGE;
71
78
  public readonly RGB;
72
79
  public readonly RGBA;
@@ -158,6 +165,7 @@ export class WebGlContextWrapper {
158
165
  this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;
159
166
  this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;
160
167
  this.LINEAR = gl.LINEAR;
168
+ this.LINEAR_MIPMAP_LINEAR = gl.LINEAR_MIPMAP_LINEAR;
161
169
  this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;
162
170
  this.RGB = gl.RGB;
163
171
  this.RGBA = gl.RGBA;
@@ -202,9 +210,8 @@ export class WebGlContextWrapper {
202
210
  * @param textureUnit
203
211
  */
204
212
  activeTexture(textureUnit: number) {
205
- const { gl } = this;
206
213
  if (this.activeTextureUnit !== textureUnit) {
207
- gl.activeTexture(textureUnit + gl.TEXTURE0);
214
+ this.gl.activeTexture(textureUnit + this.gl.TEXTURE0);
208
215
  this.activeTextureUnit = textureUnit;
209
216
  }
210
217
  }
@@ -219,19 +226,16 @@ export class WebGlContextWrapper {
219
226
  * @param texture
220
227
  */
221
228
  bindTexture(texture: WebGLTexture | null) {
222
- const { gl, activeTextureUnit, texture2dUnits } = this;
223
-
224
- if (texture2dUnits[activeTextureUnit] === texture) {
229
+ if (this.texture2dUnits[this.activeTextureUnit] === texture) {
225
230
  return;
226
231
  }
227
- texture2dUnits[activeTextureUnit] = texture;
232
+ this.texture2dUnits[this.activeTextureUnit] = texture;
228
233
 
229
- gl.bindTexture(this.gl.TEXTURE_2D, texture);
234
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
230
235
  }
231
236
 
232
237
  private _getActiveTexture(): WebGLTexture | null {
233
- const { activeTextureUnit, texture2dUnits } = this;
234
- return texture2dUnits[activeTextureUnit]!;
238
+ return this.texture2dUnits[this.activeTextureUnit]!;
235
239
  }
236
240
 
237
241
  /**
@@ -246,22 +250,20 @@ export class WebGlContextWrapper {
246
250
  * @returns
247
251
  */
248
252
  texParameteri(pname: number, param: number) {
249
- const { gl, texture2dParams } = this;
250
-
251
253
  const activeTexture = this._getActiveTexture();
252
254
  if (!activeTexture) {
253
255
  throw new Error('No active texture');
254
256
  }
255
- let textureParams = texture2dParams.get(activeTexture);
257
+ let textureParams = this.texture2dParams.get(activeTexture);
256
258
  if (!textureParams) {
257
259
  textureParams = {};
258
- texture2dParams.set(activeTexture, textureParams);
260
+ this.texture2dParams.set(activeTexture, textureParams);
259
261
  }
260
262
  if (textureParams[pname] === param) {
261
263
  return;
262
264
  }
263
265
  textureParams[pname] = param;
264
- gl.texParameteri(gl.TEXTURE_2D, pname, param);
266
+ this.gl.texParameteri(this.gl.TEXTURE_2D, pname, param);
265
267
  }
266
268
 
267
269
  /**
@@ -317,10 +319,9 @@ export class WebGlContextWrapper {
317
319
  type?: any,
318
320
  pixels?: any,
319
321
  ) {
320
- const { gl } = this;
321
322
  if (format) {
322
- gl.texImage2D(
323
- gl.TEXTURE_2D,
323
+ this.gl.texImage2D(
324
+ this.gl.TEXTURE_2D,
324
325
  level,
325
326
  internalFormat,
326
327
  widthOrFormat,
@@ -331,8 +332,8 @@ export class WebGlContextWrapper {
331
332
  pixels,
332
333
  );
333
334
  } else {
334
- gl.texImage2D(
335
- gl.TEXTURE_2D,
335
+ this.gl.texImage2D(
336
+ this.gl.TEXTURE_2D,
336
337
  level,
337
338
  internalFormat,
338
339
  widthOrFormat,
@@ -358,9 +359,8 @@ export class WebGlContextWrapper {
358
359
  border: GLint,
359
360
  data?: ArrayBufferView,
360
361
  ): void {
361
- const { gl } = this;
362
- gl.compressedTexImage2D(
363
- gl.TEXTURE_2D,
362
+ this.gl.compressedTexImage2D(
363
+ this.gl.TEXTURE_2D,
364
364
  level,
365
365
  internalformat,
366
366
  width,
@@ -378,8 +378,7 @@ export class WebGlContextWrapper {
378
378
  * @param param
379
379
  */
380
380
  pixelStorei(pname: GLenum, param: GLint | GLboolean) {
381
- const { gl } = this;
382
- gl.pixelStorei(pname, param);
381
+ this.gl.pixelStorei(pname, param);
383
382
  }
384
383
 
385
384
  /**
@@ -391,8 +390,7 @@ export class WebGlContextWrapper {
391
390
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
392
391
  */
393
392
  generateMipmap() {
394
- const { gl } = this;
395
- gl.generateMipmap(gl.TEXTURE_2D);
393
+ this.gl.generateMipmap(this.gl.TEXTURE_2D);
396
394
  }
397
395
 
398
396
  /**
@@ -403,8 +401,7 @@ export class WebGlContextWrapper {
403
401
  * @returns
404
402
  */
405
403
  createTexture() {
406
- const { gl } = this;
407
- return gl.createTexture();
404
+ return this.gl.createTexture();
408
405
  }
409
406
 
410
407
  /**
@@ -415,11 +412,10 @@ export class WebGlContextWrapper {
415
412
  * @param texture
416
413
  */
417
414
  deleteTexture(texture: WebGLTexture | null) {
418
- const { gl } = this;
419
415
  if (texture) {
420
416
  this.texture2dParams.delete(texture);
421
417
  }
422
- gl.deleteTexture(texture);
418
+ this.gl.deleteTexture(texture);
423
419
  }
424
420
 
425
421
  /**
@@ -438,8 +434,7 @@ export class WebGlContextWrapper {
438
434
  * ```
439
435
  */
440
436
  viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
441
- const { gl } = this;
442
- gl.viewport(x, y, width, height);
437
+ this.gl.viewport(x, y, width, height);
443
438
  }
444
439
 
445
440
  /**
@@ -453,8 +448,7 @@ export class WebGlContextWrapper {
453
448
  * @param alpha
454
449
  */
455
450
  clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf) {
456
- const { gl } = this;
457
- gl.clearColor(red, green, blue, alpha);
451
+ this.gl.clearColor(red, green, blue, alpha);
458
452
  }
459
453
 
460
454
  /**
@@ -464,14 +458,13 @@ export class WebGlContextWrapper {
464
458
  * @param enable
465
459
  */
466
460
  setScissorTest(enable: boolean) {
467
- const { gl, scissorEnabled } = this;
468
- if (enable === scissorEnabled) {
461
+ if (enable === this.scissorEnabled) {
469
462
  return;
470
463
  }
471
464
  if (enable) {
472
- gl.enable(gl.SCISSOR_TEST);
465
+ this.gl.enable(this.gl.SCISSOR_TEST);
473
466
  } else {
474
- gl.disable(gl.SCISSOR_TEST);
467
+ this.gl.disable(this.gl.SCISSOR_TEST);
475
468
  }
476
469
  this.scissorEnabled = enable;
477
470
  }
@@ -487,14 +480,13 @@ export class WebGlContextWrapper {
487
480
  * @param height
488
481
  */
489
482
  scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
490
- const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;
491
483
  if (
492
- x !== scissorX ||
493
- y !== scissorY ||
494
- width !== scissorWidth ||
495
- height !== scissorHeight
484
+ x !== this.scissorX ||
485
+ y !== this.scissorY ||
486
+ width !== this.scissorWidth ||
487
+ height !== this.scissorHeight
496
488
  ) {
497
- gl.scissor(x, y, width, height);
489
+ this.gl.scissor(x, y, width, height);
498
490
  this.scissorX = x;
499
491
  this.scissorY = y;
500
492
  this.scissorWidth = width;
@@ -511,14 +503,13 @@ export class WebGlContextWrapper {
511
503
  * @returns
512
504
  */
513
505
  setBlend(blend: boolean) {
514
- const { gl, blendEnabled } = this;
515
- if (blend === blendEnabled) {
506
+ if (blend === this.blendEnabled) {
516
507
  return;
517
508
  }
518
509
  if (blend) {
519
- gl.enable(gl.BLEND);
510
+ this.gl.enable(this.gl.BLEND);
520
511
  } else {
521
- gl.disable(gl.BLEND);
512
+ this.gl.disable(this.gl.BLEND);
522
513
  }
523
514
  this.blendEnabled = blend;
524
515
  }
@@ -532,14 +523,13 @@ export class WebGlContextWrapper {
532
523
  * @param dst
533
524
  */
534
525
  blendFunc(src: GLenum, dst: GLenum) {
535
- const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;
536
526
  if (
537
- src !== blendSrcRgb ||
538
- dst !== blendDstRgb ||
539
- src !== blendSrcAlpha ||
540
- dst !== blendDstAlpha
527
+ src !== this.blendSrcRgb ||
528
+ dst !== this.blendDstRgb ||
529
+ src !== this.blendSrcAlpha ||
530
+ dst !== this.blendDstAlpha
541
531
  ) {
542
- gl.blendFunc(src, dst);
532
+ this.gl.blendFunc(src, dst);
543
533
  this.blendSrcRgb = src;
544
534
  this.blendDstRgb = dst;
545
535
  this.blendSrcAlpha = src;
@@ -555,8 +545,7 @@ export class WebGlContextWrapper {
555
545
  * @returns
556
546
  */
557
547
  createBuffer() {
558
- const { gl } = this;
559
- return gl.createBuffer();
548
+ return this.gl.createBuffer();
560
549
  }
561
550
 
562
551
  /**
@@ -566,8 +555,7 @@ export class WebGlContextWrapper {
566
555
  * @returns
567
556
  */
568
557
  createFramebuffer() {
569
- const { gl } = this;
570
- return gl.createFramebuffer();
558
+ return this.gl.createFramebuffer();
571
559
  }
572
560
 
573
561
  /**
@@ -578,8 +566,7 @@ export class WebGlContextWrapper {
578
566
  * @param framebuffer
579
567
  */
580
568
  bindFramebuffer(framebuffer: WebGLFramebuffer | null) {
581
- const { gl } = this;
582
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
569
+ this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, framebuffer);
583
570
  }
584
571
 
585
572
  /**
@@ -595,7 +582,7 @@ export class WebGlContextWrapper {
595
582
  texture: WebGLTexture | null,
596
583
  level: GLint,
597
584
  ) {
598
- const { gl } = this;
585
+ const gl = this.gl;
599
586
  gl.framebufferTexture2D(
600
587
  gl.FRAMEBUFFER,
601
588
  attachment,
@@ -614,8 +601,7 @@ export class WebGlContextWrapper {
614
601
  * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
615
602
  */
616
603
  clear() {
617
- const { gl } = this;
618
- gl.clear(gl.COLOR_BUFFER_BIT);
604
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
619
605
  }
620
606
 
621
607
  /**
@@ -636,12 +622,37 @@ export class WebGlContextWrapper {
636
622
  data: ArrayBufferView,
637
623
  usage: GLenum,
638
624
  ) {
639
- const { gl, boundArrayBuffer } = this;
640
- if (boundArrayBuffer !== buffer) {
641
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
625
+ if (this.boundArrayBuffer !== buffer) {
626
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
642
627
  this.boundArrayBuffer = buffer;
643
628
  }
644
- gl.bufferData(gl.ARRAY_BUFFER, data, usage);
629
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, data, usage);
630
+ }
631
+
632
+ /**
633
+ * ```
634
+ * gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // if needed
635
+ * gl.bufferSubData(gl.ARRAY_BUFFER, dstByteOffset, data);
636
+ * ```
637
+ *
638
+ * @remarks
639
+ * **WebGL Combo**: `gl.bindBuffer` is only called when the buffer changes.
640
+ * Used to surgically update a subset of the GPU buffer without reallocating it.
641
+ *
642
+ * @param buffer
643
+ * @param dstByteOffset - Byte offset into the GPU buffer where `data` will be written
644
+ * @param data
645
+ */
646
+ arrayBufferSubData(
647
+ buffer: WebGLBuffer | null,
648
+ dstByteOffset: number,
649
+ data: ArrayBufferView,
650
+ ) {
651
+ if (this.boundArrayBuffer !== buffer) {
652
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
653
+ this.boundArrayBuffer = buffer;
654
+ }
655
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, dstByteOffset, data);
645
656
  }
646
657
 
647
658
  /**
@@ -661,12 +672,11 @@ export class WebGlContextWrapper {
661
672
  data: ArrayBufferView,
662
673
  usage: GLenum,
663
674
  ) {
664
- const { gl, boundElementArrayBuffer } = this;
665
- if (boundElementArrayBuffer !== buffer) {
666
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
675
+ if (this.boundElementArrayBuffer !== buffer) {
676
+ this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
667
677
  this.boundElementArrayBuffer = buffer;
668
678
  }
669
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
679
+ this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, data, usage);
670
680
  }
671
681
 
672
682
  /**
@@ -695,12 +705,58 @@ export class WebGlContextWrapper {
695
705
  stride: GLsizei,
696
706
  offset: GLintptr,
697
707
  ) {
698
- const { gl, boundArrayBuffer } = this;
699
- if (boundArrayBuffer !== buffer) {
700
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
708
+ if (this.boundArrayBuffer !== buffer) {
709
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
701
710
  this.boundArrayBuffer = buffer;
702
711
  }
703
- gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
712
+ this.gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
713
+ }
714
+
715
+ /**
716
+ * Returns object with Attribute names as key and numbers as location values
717
+ *
718
+ * @param program
719
+ * @returns object with numbers
720
+ */
721
+ getUniformLocations(
722
+ program: WebGLProgram,
723
+ ): Record<string, WebGLUniformLocation> {
724
+ const gl = this.gl;
725
+ const length = gl.getProgramParameter(
726
+ program,
727
+ gl.ACTIVE_UNIFORMS,
728
+ ) as number;
729
+ const result = {} as Record<string, WebGLUniformLocation>;
730
+ for (let i = 0; i < length; i++) {
731
+ const info = gl.getActiveUniform(program, i) as WebGLActiveInfo;
732
+ //remove bracket + value from uniform name;
733
+ let name = info.name.replace(/\[.*?\]/g, '');
734
+ result[name] = gl.getUniformLocation(
735
+ program,
736
+ name,
737
+ ) as WebGLUniformLocation;
738
+ }
739
+ return result;
740
+ }
741
+
742
+ /**
743
+ * Returns object with Attribute names as key and numbers as location values
744
+ * @param program
745
+ * @returns object with numbers
746
+ */
747
+ getAttributeLocations(program: WebGLProgram): string[] {
748
+ const gl = this.gl;
749
+ const length = gl.getProgramParameter(
750
+ program,
751
+ gl.ACTIVE_ATTRIBUTES,
752
+ ) as number;
753
+
754
+ const result: string[] = [];
755
+ for (let i = 0; i < length; i++) {
756
+ const { name } = gl.getActiveAttrib(program, i) as WebGLActiveInfo;
757
+ result[gl.getAttribLocation(program, name)] = name;
758
+ }
759
+ return result;
704
760
  }
705
761
 
706
762
  /**
@@ -711,13 +767,16 @@ export class WebGlContextWrapper {
711
767
  * @param program
712
768
  * @returns
713
769
  */
714
- useProgram(program: WebGLProgram | null) {
715
- const { gl, curProgram } = this;
716
- if (curProgram === program) {
770
+ useProgram(
771
+ program: WebGLProgram | null,
772
+ uniformLocations: Record<string, WebGLUniformLocation>,
773
+ ) {
774
+ if (this.curProgram === program) {
717
775
  return;
718
776
  }
719
- gl.useProgram(program);
777
+ this.gl.useProgram(program);
720
778
  this.curProgram = program;
779
+ this.curUniformLocations = uniformLocations;
721
780
  }
722
781
 
723
782
  /**
@@ -726,9 +785,8 @@ export class WebGlContextWrapper {
726
785
  * @param location - The location of the uniform variable.
727
786
  * @param v0 - The value to set.
728
787
  */
729
- uniform1f(location: WebGLUniformLocation | null, v0: number) {
730
- const { gl } = this;
731
- gl.uniform1f(location, v0);
788
+ uniform1f(location: string, v0: number) {
789
+ this.gl.uniform1f(this.curUniformLocations[location] || null, v0);
732
790
  }
733
791
 
734
792
  /**
@@ -737,12 +795,8 @@ export class WebGlContextWrapper {
737
795
  * @param location - The location of the uniform variable.
738
796
  * @param value - The array of values to set.
739
797
  */
740
- uniform1fv(
741
- location: WebGLUniformLocation | null,
742
- value: Float32Array | number[],
743
- ) {
744
- const { gl } = this;
745
- gl.uniform1fv(location, value);
798
+ uniform1fv(location: string, value: Float32Array) {
799
+ this.gl.uniform1fv(this.curUniformLocations[location] || null, value);
746
800
  }
747
801
 
748
802
  /**
@@ -751,9 +805,8 @@ export class WebGlContextWrapper {
751
805
  * @param location - The location of the uniform variable.
752
806
  * @param v0 - The value to set.
753
807
  */
754
- uniform1i(location: WebGLUniformLocation | null, v0: number) {
755
- const { gl } = this;
756
- gl.uniform1i(location, v0);
808
+ uniform1i(location: string, v0: number) {
809
+ this.gl.uniform1i(this.curUniformLocations[location] || null, v0);
757
810
  }
758
811
 
759
812
  /**
@@ -762,12 +815,8 @@ export class WebGlContextWrapper {
762
815
  * @param location - The location of the uniform variable.
763
816
  * @param value - The array of values to set.
764
817
  */
765
- uniform1iv(
766
- location: WebGLUniformLocation | null,
767
- value: Int32Array | number[],
768
- ) {
769
- const { gl } = this;
770
- gl.uniform1iv(location, value);
818
+ uniform1iv(location: string, value: Int32Array) {
819
+ this.gl.uniform1iv(this.curUniformLocations[location] || null, value);
771
820
  }
772
821
 
773
822
  /**
@@ -777,9 +826,22 @@ export class WebGlContextWrapper {
777
826
  * @param v0 - The first component of the vector.
778
827
  * @param v1 - The second component of the vector.
779
828
  */
780
- uniform2f(location: WebGLUniformLocation | null, v0: number, v1: number) {
781
- const { gl } = this;
782
- gl.uniform2f(location, v0, v1);
829
+ uniform2f(location: string, v0: number, v1: number) {
830
+ this.gl.uniform2f(this.curUniformLocations[location] || null, v0, v1);
831
+ }
832
+
833
+ /**
834
+ * Sets the value of a vec3 uniform variable.
835
+ *
836
+ * @param location - The location of the uniform variable.
837
+ * @param v - array of 4 numbers.
838
+ */
839
+ uniform2fa(location: string, value: Vec2) {
840
+ this.gl.uniform2f(
841
+ this.curUniformLocations[location] || null,
842
+ value[0],
843
+ value[1],
844
+ );
783
845
  }
784
846
 
785
847
  /**
@@ -788,12 +850,8 @@ export class WebGlContextWrapper {
788
850
  * @param location - The location of the uniform variable.
789
851
  * @param value - The array of vec2 values to set.
790
852
  */
791
- uniform2fv(
792
- location: WebGLUniformLocation | null,
793
- value: Float32Array | number[],
794
- ) {
795
- const { gl } = this;
796
- gl.uniform2fv(location, value);
853
+ uniform2fv(location: string, value: Float32Array) {
854
+ this.gl.uniform2fv(this.curUniformLocations[location] || null, value);
797
855
  }
798
856
 
799
857
  /**
@@ -803,9 +861,8 @@ export class WebGlContextWrapper {
803
861
  * @param v0 - The first component of the vector.
804
862
  * @param v1 - The second component of the vector.
805
863
  */
806
- uniform2i(location: WebGLUniformLocation | null, v0: number, v1: number) {
807
- const { gl } = this;
808
- gl.uniform2i(location, v0, v1);
864
+ uniform2i(location: string, v0: number, v1: number) {
865
+ this.gl.uniform2i(this.curUniformLocations[location] || null, v0, v1);
809
866
  }
810
867
 
811
868
  /**
@@ -814,12 +871,8 @@ export class WebGlContextWrapper {
814
871
  * @param location - The location of the uniform variable.
815
872
  * @param value - The array of ivec2 values to set.
816
873
  */
817
- uniform2iv(
818
- location: WebGLUniformLocation | null,
819
- value: Int32Array | number[],
820
- ) {
821
- const { gl } = this;
822
- gl.uniform2iv(location, value);
874
+ uniform2iv(location: string, value: Int32Array) {
875
+ this.gl.uniform2iv(this.curUniformLocations[location] || null, value);
823
876
  }
824
877
 
825
878
  /**
@@ -830,14 +883,23 @@ export class WebGlContextWrapper {
830
883
  * @param v1 - The second component of the vector.
831
884
  * @param v2 - The third component of the vector.
832
885
  */
833
- uniform3f(
834
- location: WebGLUniformLocation | null,
835
- v0: number,
836
- v1: number,
837
- v2: number,
838
- ) {
839
- const { gl } = this;
840
- gl.uniform3f(location, v0, v1, v2);
886
+ uniform3f(location: string, v0: number, v1: number, v2: number) {
887
+ this.gl.uniform3f(this.curUniformLocations[location] || null, v0, v1, v2);
888
+ }
889
+
890
+ /**
891
+ * Sets the value of a vec3 uniform variable.
892
+ *
893
+ * @param location - The location of the uniform variable.
894
+ * @param v - array of 4 numbers.
895
+ */
896
+ uniform3fa(location: string, value: Vec3) {
897
+ this.gl.uniform3f(
898
+ this.curUniformLocations[location] || null,
899
+ value[0],
900
+ value[1],
901
+ value[2],
902
+ );
841
903
  }
842
904
 
843
905
  /**
@@ -846,12 +908,8 @@ export class WebGlContextWrapper {
846
908
  * @param location - The location of the uniform variable.
847
909
  * @param value - The array of vec3 values to set.
848
910
  */
849
- uniform3fv(
850
- location: WebGLUniformLocation | null,
851
- value: Float32Array | number[],
852
- ) {
853
- const { gl } = this;
854
- gl.uniform3fv(location, value);
911
+ uniform3fv(location: string, value: Float32Array) {
912
+ this.gl.uniform3fv(this.curUniformLocations[location] || null, value);
855
913
  }
856
914
 
857
915
  /**
@@ -862,14 +920,8 @@ export class WebGlContextWrapper {
862
920
  * @param v1 - The second component of the vector.
863
921
  * @param v2 - The third component of the vector.
864
922
  */
865
- uniform3i(
866
- location: WebGLUniformLocation | null,
867
- v0: number,
868
- v1: number,
869
- v2: number,
870
- ) {
871
- const { gl } = this;
872
- gl.uniform3i(location, v0, v1, v2);
923
+ uniform3i(location: string, v0: number, v1: number, v2: number) {
924
+ this.gl.uniform3i(this.curUniformLocations[location] || null, v0, v1, v2);
873
925
  }
874
926
 
875
927
  /**
@@ -878,12 +930,8 @@ export class WebGlContextWrapper {
878
930
  * @param location - The location of the uniform variable.
879
931
  * @param value - The array of ivec3 values to set.
880
932
  */
881
- uniform3iv(
882
- location: WebGLUniformLocation | null,
883
- value: Int32Array | number[],
884
- ) {
885
- const { gl } = this;
886
- gl.uniform3iv(location, value);
933
+ uniform3iv(location: string, value: Int32Array) {
934
+ this.gl.uniform3iv(this.curUniformLocations[location] || null, value);
887
935
  }
888
936
 
889
937
  /**
@@ -895,15 +943,30 @@ export class WebGlContextWrapper {
895
943
  * @param v2 - The third component of the vector.
896
944
  * @param v3 - The fourth component of the vector.
897
945
  */
898
- uniform4f(
899
- location: WebGLUniformLocation | null,
900
- v0: number,
901
- v1: number,
902
- v2: number,
903
- v3: number,
904
- ) {
905
- const { gl } = this;
906
- gl.uniform4f(location, v0, v1, v2, v3);
946
+ uniform4f(location: string, v0: number, v1: number, v2: number, v3: number) {
947
+ this.gl.uniform4f(
948
+ this.curUniformLocations[location] || null,
949
+ v0,
950
+ v1,
951
+ v2,
952
+ v3,
953
+ );
954
+ }
955
+
956
+ /**
957
+ * Sets the value of a vec4 uniform variable.
958
+ *
959
+ * @param location - The location of the uniform variable.
960
+ * @param v - array of 4 numbers.
961
+ */
962
+ uniform4fa(location: string, value: Vec4) {
963
+ this.gl.uniform4f(
964
+ this.curUniformLocations[location] || null,
965
+ value[0],
966
+ value[1],
967
+ value[2],
968
+ value[3],
969
+ );
907
970
  }
908
971
 
909
972
  /**
@@ -912,12 +975,8 @@ export class WebGlContextWrapper {
912
975
  * @param location - The location of the uniform variable.
913
976
  * @param value - The array of vec4 values to set.
914
977
  */
915
- uniform4fv(
916
- location: WebGLUniformLocation | null,
917
- value: Float32Array | number[],
918
- ) {
919
- const { gl } = this;
920
- gl.uniform4fv(location, value);
978
+ uniform4fv(location: string, value: Float32Array) {
979
+ this.gl.uniform4fv(this.curUniformLocations[location] || null, value);
921
980
  }
922
981
 
923
982
  /**
@@ -929,15 +988,14 @@ export class WebGlContextWrapper {
929
988
  * @param v2 - The third component of the vector.
930
989
  * @param v3 - The fourth component of the vector.
931
990
  */
932
- uniform4i(
933
- location: WebGLUniformLocation | null,
934
- v0: number,
935
- v1: number,
936
- v2: number,
937
- v3: number,
938
- ) {
939
- const { gl } = this;
940
- gl.uniform4i(location, v0, v1, v2, v3);
991
+ uniform4i(location: string, v0: number, v1: number, v2: number, v3: number) {
992
+ this.gl.uniform4i(
993
+ this.curUniformLocations[location] || null,
994
+ v0,
995
+ v1,
996
+ v2,
997
+ v3,
998
+ );
941
999
  }
942
1000
 
943
1001
  /**
@@ -946,12 +1004,8 @@ export class WebGlContextWrapper {
946
1004
  * @param location - The location of the uniform variable.
947
1005
  * @param value - The array of ivec4 values to set.
948
1006
  */
949
- uniform4iv(
950
- location: WebGLUniformLocation | null,
951
- value: Int32Array | number[],
952
- ) {
953
- const { gl } = this;
954
- gl.uniform4iv(location, value);
1007
+ uniform4iv(location: string, value: Int32Array) {
1008
+ this.gl.uniform4iv(this.curUniformLocations[location] || null, value);
955
1009
  }
956
1010
 
957
1011
  /**
@@ -961,12 +1015,12 @@ export class WebGlContextWrapper {
961
1015
  * @param transpose - Whether to transpose the matrix.
962
1016
  * @param value - The array of mat2 values to set.
963
1017
  */
964
- uniformMatrix2fv(
965
- location: WebGLUniformLocation | null,
966
- value: Float32Array | number[],
967
- ) {
968
- const { gl } = this;
969
- gl.uniformMatrix2fv(location, false, value);
1018
+ uniformMatrix2fv(location: string, value: Float32Array) {
1019
+ this.gl.uniformMatrix2fv(
1020
+ this.curUniformLocations[location] || null,
1021
+ false,
1022
+ value,
1023
+ );
970
1024
  }
971
1025
 
972
1026
  /**
@@ -974,12 +1028,12 @@ export class WebGlContextWrapper {
974
1028
  * @param location - The location of the uniform variable.
975
1029
  * @param value - The array of mat2 values to set.
976
1030
  */
977
- uniformMatrix3fv(
978
- location: WebGLUniformLocation | null,
979
- value: Float32Array | number[],
980
- ) {
981
- const { gl } = this;
982
- gl.uniformMatrix3fv(location, false, value);
1031
+ uniformMatrix3fv(location: string, value: Float32Array) {
1032
+ this.gl.uniformMatrix3fv(
1033
+ this.curUniformLocations[location] || null,
1034
+ false,
1035
+ value,
1036
+ );
983
1037
  }
984
1038
 
985
1039
  /**
@@ -987,12 +1041,12 @@ export class WebGlContextWrapper {
987
1041
  * @param location - The location of the uniform variable.
988
1042
  * @param value - The array of mat4 values to set.
989
1043
  */
990
- uniformMatrix4fv(
991
- location: WebGLUniformLocation | null,
992
- value: Float32Array | number[],
993
- ) {
994
- const { gl } = this;
995
- gl.uniformMatrix4fv(location, false, value);
1044
+ uniformMatrix4fv(location: string, value: Float32Array) {
1045
+ this.gl.uniformMatrix4fv(
1046
+ this.curUniformLocations[location] || null,
1047
+ false,
1048
+ value,
1049
+ );
996
1050
  }
997
1051
 
998
1052
  /**
@@ -1004,8 +1058,7 @@ export class WebGlContextWrapper {
1004
1058
  * @returns
1005
1059
  */
1006
1060
  getParameter(pname: GLenum): any {
1007
- const { gl } = this;
1008
- return gl.getParameter(pname);
1061
+ return this.gl.getParameter(pname);
1009
1062
  }
1010
1063
 
1011
1064
  /**
@@ -1019,8 +1072,20 @@ export class WebGlContextWrapper {
1019
1072
  * @param offset
1020
1073
  */
1021
1074
  drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr) {
1022
- const { gl } = this;
1023
- gl.drawElements(mode, count, type, offset);
1075
+ this.gl.drawElements(mode, count, type, offset);
1076
+ }
1077
+
1078
+ /**
1079
+ * ```
1080
+ * gl.drawArrays(mode, first, count);
1081
+ * ```
1082
+ *
1083
+ * @param mode
1084
+ * @param first
1085
+ * @param count
1086
+ */
1087
+ drawArrays(mode: GLenum, first: GLint, count: GLsizei) {
1088
+ this.gl.drawArrays(mode, first, count);
1024
1089
  }
1025
1090
 
1026
1091
  /**
@@ -1032,8 +1097,7 @@ export class WebGlContextWrapper {
1032
1097
  * @returns
1033
1098
  */
1034
1099
  getExtension(name: string) {
1035
- const { gl } = this;
1036
- return gl.getExtension(name);
1100
+ return this.gl.getExtension(name);
1037
1101
  }
1038
1102
 
1039
1103
  /**
@@ -1044,8 +1108,7 @@ export class WebGlContextWrapper {
1044
1108
  * @returns
1045
1109
  */
1046
1110
  getError() {
1047
- const { gl } = this;
1048
- return gl.getError();
1111
+ return this.gl.getError();
1049
1112
  }
1050
1113
 
1051
1114
  /**
@@ -1056,9 +1119,10 @@ export class WebGlContextWrapper {
1056
1119
  * @returns
1057
1120
  */
1058
1121
  createVertexArray() {
1059
- const { gl } = this;
1060
- assertTruthy(gl instanceof WebGL2RenderingContext);
1061
- return gl.createVertexArray();
1122
+ if (this.gl instanceof WebGL2RenderingContext) {
1123
+ return this.gl.createVertexArray();
1124
+ }
1125
+ return undefined;
1062
1126
  }
1063
1127
 
1064
1128
  /**
@@ -1069,9 +1133,9 @@ export class WebGlContextWrapper {
1069
1133
  * @param vertexArray
1070
1134
  */
1071
1135
  bindVertexArray(vertexArray: WebGLVertexArrayObject | null) {
1072
- const { gl } = this;
1073
- assertTruthy(gl instanceof WebGL2RenderingContext);
1074
- gl.bindVertexArray(vertexArray);
1136
+ if (this.gl instanceof WebGL2RenderingContext) {
1137
+ this.gl.bindVertexArray(vertexArray);
1138
+ }
1075
1139
  }
1076
1140
 
1077
1141
  /**
@@ -1084,8 +1148,7 @@ export class WebGlContextWrapper {
1084
1148
  * @returns
1085
1149
  */
1086
1150
  getAttribLocation(program: WebGLProgram, name: string) {
1087
- const { gl } = this;
1088
- return gl.getAttribLocation(program, name);
1151
+ return this.gl.getAttribLocation(program, name);
1089
1152
  }
1090
1153
 
1091
1154
  /**
@@ -1098,8 +1161,7 @@ export class WebGlContextWrapper {
1098
1161
  * @returns
1099
1162
  */
1100
1163
  getUniformLocation(program: WebGLProgram, name: string) {
1101
- const { gl } = this;
1102
- return gl.getUniformLocation(program, name);
1164
+ return this.gl.getUniformLocation(program, name);
1103
1165
  }
1104
1166
 
1105
1167
  /**
@@ -1110,8 +1172,7 @@ export class WebGlContextWrapper {
1110
1172
  * @param index
1111
1173
  */
1112
1174
  enableVertexAttribArray(index: number) {
1113
- const { gl } = this;
1114
- gl.enableVertexAttribArray(index);
1175
+ this.gl.enableVertexAttribArray(index);
1115
1176
  }
1116
1177
 
1117
1178
  /**
@@ -1122,8 +1183,7 @@ export class WebGlContextWrapper {
1122
1183
  * @param index
1123
1184
  */
1124
1185
  disableVertexAttribArray(index: number) {
1125
- const { gl } = this;
1126
- gl.disableVertexAttribArray(index);
1186
+ this.gl.disableVertexAttribArray(index);
1127
1187
  }
1128
1188
 
1129
1189
  /**
@@ -1135,8 +1195,7 @@ export class WebGlContextWrapper {
1135
1195
  * @returns
1136
1196
  */
1137
1197
  createShader(type: number) {
1138
- const { gl } = this;
1139
- return gl.createShader(type);
1198
+ return this.gl.createShader(type);
1140
1199
  }
1141
1200
 
1142
1201
  /**
@@ -1148,8 +1207,7 @@ export class WebGlContextWrapper {
1148
1207
  * @returns
1149
1208
  */
1150
1209
  compileShader(shader: WebGLShader) {
1151
- const { gl } = this;
1152
- gl.compileShader(shader);
1210
+ this.gl.compileShader(shader);
1153
1211
  }
1154
1212
 
1155
1213
  /**
@@ -1161,8 +1219,7 @@ export class WebGlContextWrapper {
1161
1219
  * @param shader
1162
1220
  */
1163
1221
  attachShader(program: WebGLProgram, shader: WebGLShader) {
1164
- const { gl } = this;
1165
- gl.attachShader(program, shader);
1222
+ this.gl.attachShader(program, shader);
1166
1223
  }
1167
1224
 
1168
1225
  /**
@@ -1173,8 +1230,7 @@ export class WebGlContextWrapper {
1173
1230
  * @param program
1174
1231
  */
1175
1232
  linkProgram(program: WebGLProgram) {
1176
- const { gl } = this;
1177
- gl.linkProgram(program);
1233
+ this.gl.linkProgram(program);
1178
1234
  }
1179
1235
 
1180
1236
  /**
@@ -1185,8 +1241,7 @@ export class WebGlContextWrapper {
1185
1241
  * @param shader
1186
1242
  */
1187
1243
  deleteProgram(shader: WebGLProgram) {
1188
- const { gl } = this;
1189
- gl.deleteProgram(shader);
1244
+ this.gl.deleteProgram(shader);
1190
1245
  }
1191
1246
 
1192
1247
  /**
@@ -1198,8 +1253,7 @@ export class WebGlContextWrapper {
1198
1253
  * @param pname
1199
1254
  */
1200
1255
  getShaderParameter(shader: WebGLShader, pname: GLenum) {
1201
- const { gl } = this;
1202
- return gl.getShaderParameter(shader, pname);
1256
+ return this.gl.getShaderParameter(shader, pname);
1203
1257
  }
1204
1258
 
1205
1259
  /**
@@ -1210,8 +1264,7 @@ export class WebGlContextWrapper {
1210
1264
  * @param shader
1211
1265
  */
1212
1266
  getShaderInfoLog(shader: WebGLShader) {
1213
- const { gl } = this;
1214
- return gl.getShaderInfoLog(shader);
1267
+ return this.gl.getShaderInfoLog(shader);
1215
1268
  }
1216
1269
 
1217
1270
  /**
@@ -1222,8 +1275,7 @@ export class WebGlContextWrapper {
1222
1275
  * @returns
1223
1276
  */
1224
1277
  createProgram() {
1225
- const { gl } = this;
1226
- return gl.createProgram();
1278
+ return this.gl.createProgram();
1227
1279
  }
1228
1280
 
1229
1281
  /**
@@ -1236,8 +1288,7 @@ export class WebGlContextWrapper {
1236
1288
  * @returns
1237
1289
  */
1238
1290
  getProgramParameter(program: WebGLProgram, pname: GLenum) {
1239
- const { gl } = this;
1240
- return gl.getProgramParameter(program, pname);
1291
+ return this.gl.getProgramParameter(program, pname);
1241
1292
  }
1242
1293
 
1243
1294
  /**
@@ -1249,8 +1300,7 @@ export class WebGlContextWrapper {
1249
1300
  * @returns
1250
1301
  */
1251
1302
  getProgramInfoLog(program: WebGLProgram) {
1252
- const { gl } = this;
1253
- return gl.getProgramInfoLog(program);
1303
+ return this.gl.getProgramInfoLog(program);
1254
1304
  }
1255
1305
 
1256
1306
  /**
@@ -1262,8 +1312,7 @@ export class WebGlContextWrapper {
1262
1312
  * @param source
1263
1313
  */
1264
1314
  shaderSource(shader: WebGLShader, source: string) {
1265
- const { gl } = this;
1266
- gl.shaderSource(shader, source);
1315
+ this.gl.shaderSource(shader, source);
1267
1316
  }
1268
1317
 
1269
1318
  /**
@@ -1274,8 +1323,75 @@ export class WebGlContextWrapper {
1274
1323
  * @param shader
1275
1324
  */
1276
1325
  deleteShader(shader: WebGLShader) {
1326
+ this.gl.deleteShader(shader);
1327
+ }
1328
+
1329
+ /**
1330
+ * ```
1331
+ * gl.deleteBuffer(buffer);
1332
+ * ```
1333
+ *
1334
+ * @param buffer - The buffer to delete
1335
+ */
1336
+ deleteBuffer(buffer: WebGLBuffer) {
1277
1337
  const { gl } = this;
1278
- gl.deleteShader(shader);
1338
+ gl.deleteBuffer(buffer);
1339
+
1340
+ // Reset bound buffers if they match the deleted buffer
1341
+ if (this.boundArrayBuffer === buffer) {
1342
+ this.boundArrayBuffer = null;
1343
+ }
1344
+ }
1345
+
1346
+ /**
1347
+ * ```
1348
+ * gl.deleteVertexArray(vertexArray);
1349
+ * ```
1350
+ *
1351
+ * @param vertexArray - The vertex array object to delete
1352
+ */
1353
+ deleteVertexArray(vertexArray: WebGLVertexArrayObject) {
1354
+ if (this.isWebGl2()) {
1355
+ (this.gl as WebGL2RenderingContext).deleteVertexArray(vertexArray);
1356
+ }
1357
+ }
1358
+
1359
+ /**
1360
+ * Check for WebGL errors and return error information
1361
+ * @param operation Description of the operation for error reporting
1362
+ * @returns Object with error information or null if no error
1363
+ */
1364
+ checkError(
1365
+ operation: string,
1366
+ ): { error: number; errorName: string; message: string } | null {
1367
+ const error = this.getError();
1368
+ if (error !== 0) {
1369
+ // 0 is GL_NO_ERROR
1370
+ let errorName = 'UNKNOWN_ERROR';
1371
+ switch (error) {
1372
+ case this.INVALID_ENUM:
1373
+ errorName = 'INVALID_ENUM';
1374
+ break;
1375
+ case 0x0501: // GL_INVALID_VALUE
1376
+ errorName = 'INVALID_VALUE';
1377
+ break;
1378
+ case this.INVALID_OPERATION:
1379
+ errorName = 'INVALID_OPERATION';
1380
+ break;
1381
+ case 0x0505: // GL_OUT_OF_MEMORY
1382
+ errorName = 'OUT_OF_MEMORY';
1383
+ break;
1384
+ case 0x9242: // GL_CONTEXT_LOST_WEBGL
1385
+ errorName = 'CONTEXT_LOST_WEBGL';
1386
+ break;
1387
+ }
1388
+
1389
+ const message = `WebGL ${errorName} (0x${error.toString(
1390
+ 16,
1391
+ )}) during ${operation}`;
1392
+ return { error, errorName, message };
1393
+ }
1394
+ return null;
1279
1395
  }
1280
1396
  }
1281
1397