@lightningjs/renderer 3.0.0-beta18 → 3.0.0-beta19

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 (306) hide show
  1. package/dist/src/core/Autosizer.d.ts +29 -0
  2. package/dist/src/core/Autosizer.js +178 -0
  3. package/dist/src/core/Autosizer.js.map +1 -0
  4. package/dist/src/core/CoreNode.d.ts +44 -26
  5. package/dist/src/core/CoreNode.js +253 -150
  6. package/dist/src/core/CoreNode.js.map +1 -1
  7. package/dist/src/core/CoreTextNode.d.ts +1 -0
  8. package/dist/src/core/CoreTextNode.js +8 -4
  9. package/dist/src/core/CoreTextNode.js.map +1 -1
  10. package/dist/src/core/CoreTextureManager.d.ts +16 -2
  11. package/dist/src/core/CoreTextureManager.js +38 -51
  12. package/dist/src/core/CoreTextureManager.js.map +1 -1
  13. package/dist/src/core/Stage.d.ts +18 -2
  14. package/dist/src/core/Stage.js +44 -14
  15. package/dist/src/core/Stage.js.map +1 -1
  16. package/dist/src/core/TextureMemoryManager.d.ts +2 -4
  17. package/dist/src/core/TextureMemoryManager.js +80 -95
  18. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  19. package/dist/src/core/lib/WebGlContextWrapper.d.ts +11 -0
  20. package/dist/src/core/lib/WebGlContextWrapper.js +34 -0
  21. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  22. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  23. package/dist/src/core/lib/textureCompression.js +320 -67
  24. package/dist/src/core/lib/textureCompression.js.map +1 -1
  25. package/dist/src/core/platforms/web/WebPlatform.js +2 -2
  26. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  27. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
  28. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  29. package/dist/src/core/renderers/CoreRenderer.d.ts +3 -1
  30. package/dist/src/core/renderers/CoreRenderer.js +1 -0
  31. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  32. package/dist/src/core/renderers/CoreShaderNode.d.ts +6 -0
  33. package/dist/src/core/renderers/CoreShaderNode.js +2 -0
  34. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  35. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -0
  36. package/dist/src/core/renderers/canvas/CanvasTexture.js +4 -1
  37. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  38. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  39. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +6 -0
  40. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  41. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +11 -0
  42. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +51 -14
  43. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  44. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -1
  45. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +2 -0
  46. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  47. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -1
  48. package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -61
  49. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  50. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -0
  51. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +12 -0
  52. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  53. package/dist/src/core/shaders/webgl/Rounded.js +3 -1
  54. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  55. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +3 -2
  56. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  57. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +3 -2
  58. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  59. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +2 -1
  60. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  61. package/dist/src/core/text-rendering/SdfFontHandler.js +1 -1
  62. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  63. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  64. package/dist/src/core/textures/ColorTexture.js +2 -3
  65. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  66. package/dist/src/core/textures/ImageTexture.d.ts +7 -1
  67. package/dist/src/core/textures/ImageTexture.js +20 -36
  68. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  69. package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
  70. package/dist/src/core/textures/NoiseTexture.js +2 -2
  71. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  72. package/dist/src/core/textures/RenderTexture.d.ts +1 -1
  73. package/dist/src/core/textures/RenderTexture.js +2 -2
  74. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  75. package/dist/src/core/textures/SubTexture.d.ts +2 -4
  76. package/dist/src/core/textures/SubTexture.js +13 -31
  77. package/dist/src/core/textures/SubTexture.js.map +1 -1
  78. package/dist/src/core/textures/Texture.d.ts +67 -8
  79. package/dist/src/core/textures/Texture.js +127 -15
  80. package/dist/src/core/textures/Texture.js.map +1 -1
  81. package/dist/src/main-api/Renderer.d.ts +15 -2
  82. package/dist/src/main-api/Renderer.js +19 -12
  83. package/dist/src/main-api/Renderer.js.map +1 -1
  84. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  85. package/package.json +1 -1
  86. package/src/core/CoreNode.test.ts +0 -1
  87. package/src/core/CoreNode.ts +296 -177
  88. package/src/core/CoreTextNode.ts +9 -4
  89. package/src/core/CoreTextureManager.ts +69 -57
  90. package/src/core/Stage.ts +51 -17
  91. package/src/core/TextureError.ts +46 -0
  92. package/src/core/TextureMemoryManager.ts +95 -122
  93. package/src/core/lib/WebGlContextWrapper.ts +40 -0
  94. package/src/core/lib/collectionUtils.ts +118 -0
  95. package/src/core/lib/textureCompression.ts +433 -77
  96. package/src/core/platforms/web/WebPlatform.ts +2 -2
  97. package/src/core/renderers/CoreContextTexture.ts +1 -0
  98. package/src/core/renderers/CoreRenderer.ts +3 -2
  99. package/src/core/renderers/CoreShaderNode.ts +7 -0
  100. package/src/core/renderers/canvas/CanvasTexture.ts +5 -1
  101. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +8 -0
  102. package/src/core/renderers/webgl/WebGlCtxTexture.ts +58 -15
  103. package/src/core/renderers/webgl/WebGlRenderOp.ts +4 -1
  104. package/src/core/renderers/webgl/WebGlRenderer.ts +66 -68
  105. package/src/core/renderers/webgl/WebGlShaderProgram.ts +16 -0
  106. package/src/core/shaders/webgl/Rounded.ts +3 -1
  107. package/src/core/shaders/webgl/RoundedWithBorder.ts +3 -2
  108. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +3 -2
  109. package/src/core/shaders/webgl/RoundedWithShadow.ts +2 -1
  110. package/src/core/text-rendering/SdfFontHandler.ts +1 -1
  111. package/src/core/textures/ColorTexture.ts +6 -4
  112. package/src/core/textures/ImageTexture.ts +35 -42
  113. package/src/core/textures/NoiseTexture.ts +6 -4
  114. package/src/core/textures/RenderTexture.ts +6 -4
  115. package/src/core/textures/SubTexture.ts +17 -38
  116. package/src/core/textures/Texture.ts +159 -20
  117. package/src/main-api/Renderer.ts +36 -14
  118. package/dist/src/core/AutosizeManager.d.ts +0 -29
  119. package/dist/src/core/AutosizeManager.js +0 -171
  120. package/dist/src/core/AutosizeManager.js.map +0 -1
  121. package/dist/src/core/animations/Animation.d.ts +0 -16
  122. package/dist/src/core/animations/Animation.js +0 -111
  123. package/dist/src/core/animations/Animation.js.map +0 -1
  124. package/dist/src/core/animations/CoreTransition.d.ts +0 -24
  125. package/dist/src/core/animations/CoreTransition.js +0 -63
  126. package/dist/src/core/animations/CoreTransition.js.map +0 -1
  127. package/dist/src/core/animations/Playback.d.ts +0 -62
  128. package/dist/src/core/animations/Playback.js +0 -155
  129. package/dist/src/core/animations/Playback.js.map +0 -1
  130. package/dist/src/core/animations/Transition.d.ts +0 -25
  131. package/dist/src/core/animations/Transition.js +0 -63
  132. package/dist/src/core/animations/Transition.js.map +0 -1
  133. package/dist/src/core/animations/utils.d.ts +0 -2
  134. package/dist/src/core/animations/utils.js +0 -137
  135. package/dist/src/core/animations/utils.js.map +0 -1
  136. package/dist/src/core/platform.d.ts +0 -10
  137. package/dist/src/core/platform.js +0 -81
  138. package/dist/src/core/platform.js.map +0 -1
  139. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  140. package/dist/src/core/renderers/CoreShader.js +0 -28
  141. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  142. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  143. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  144. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  145. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
  146. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
  147. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  148. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  149. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  150. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  151. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
  152. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
  153. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  154. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  155. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  156. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  157. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  158. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  159. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  160. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  161. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  162. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  163. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -69
  164. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -272
  165. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  166. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  167. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  168. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  169. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  170. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -645
  171. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  172. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -78
  173. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -202
  174. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  175. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  176. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -84
  177. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  178. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  179. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -108
  180. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  181. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  182. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -408
  183. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  184. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  185. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -126
  186. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  187. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  188. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -148
  189. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  190. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  191. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  192. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  193. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  194. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  195. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  196. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  197. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  198. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  199. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  200. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  201. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  202. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  203. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  204. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  205. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  206. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  207. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  208. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  209. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  210. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  211. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  212. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  213. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  214. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  215. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  216. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  217. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  218. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  219. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  220. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  221. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -134
  222. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  223. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -40
  224. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -143
  225. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  226. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  227. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  228. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  229. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  230. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  231. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  232. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  233. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  234. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  235. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  236. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  237. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  238. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  239. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  240. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  241. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  242. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  243. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  244. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  245. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  246. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  247. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  248. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  249. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  250. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  251. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  252. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  253. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  254. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  255. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  256. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  257. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  258. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  259. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  260. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  261. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  262. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  263. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  264. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  265. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  266. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  267. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  268. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  269. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  270. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  271. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  272. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  273. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  274. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  275. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  276. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  277. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  278. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  279. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  280. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  281. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  282. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  283. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  284. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  285. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  286. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  287. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  288. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  289. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  290. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  291. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  292. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  293. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  294. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  295. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  296. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  297. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  298. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  299. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  300. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  301. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  302. package/dist/src/main-api/DynamicShaderController.js +0 -58
  303. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  304. package/dist/src/main-api/ShaderController.d.ts +0 -31
  305. package/dist/src/main-api/ShaderController.js +0 -37
  306. package/dist/src/main-api/ShaderController.js.map +0 -1
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { isProductionEnvironment } from '../utils.js';
20
20
  import type { Stage } from './Stage.js';
21
- import { Texture, TextureType, type TextureState } from './textures/Texture.js';
21
+ import { Texture, TextureType } from './textures/Texture.js';
22
22
  import { bytesToMb } from './utils.js';
23
23
 
24
24
  export interface TextureMemoryManagerSettings {
@@ -115,7 +115,7 @@ export interface MemoryInfo {
115
115
  */
116
116
  export class TextureMemoryManager {
117
117
  private memUsed = 0;
118
- private loadedTextures: Map<Texture, number> = new Map();
118
+ private loadedTextures: (Texture | null)[] = [];
119
119
  private orphanedTextures: Texture[] = [];
120
120
  private criticalThreshold: number = 124e6;
121
121
  private targetThreshold: number = 0.5;
@@ -126,12 +126,10 @@ export class TextureMemoryManager {
126
126
  private lastCleanupTime = 0;
127
127
  private baselineMemoryAllocation: number = 26e6;
128
128
 
129
+ private hasWarnedAboveCritical = false;
130
+
129
131
  public criticalCleanupRequested = false;
130
132
  public doNotExceedCriticalThreshold: boolean = false;
131
- private originalSetTextureMemUse: (
132
- texture: Texture,
133
- byteSize: number,
134
- ) => void;
135
133
 
136
134
  /**
137
135
  * The current frame time in milliseconds
@@ -144,8 +142,6 @@ export class TextureMemoryManager {
144
142
  public frameTime = 0;
145
143
 
146
144
  constructor(private stage: Stage, settings: TextureMemoryManagerSettings) {
147
- this.originalSetTextureMemUse = this.setTextureMemUse;
148
-
149
145
  this.updateSettings(settings);
150
146
  }
151
147
 
@@ -185,17 +181,30 @@ export class TextureMemoryManager {
185
181
  * @param byteSize - The size of the texture in bytes
186
182
  */
187
183
  setTextureMemUse(texture: Texture, byteSize: number) {
188
- if (this.loadedTextures.has(texture)) {
189
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
190
- this.memUsed -= this.loadedTextures.get(texture)!;
191
- }
184
+ // Update global memory counter by subtracting old value
185
+ this.memUsed -= texture.memUsed;
192
186
 
193
187
  if (byteSize === 0) {
194
- this.loadedTextures.delete(texture);
188
+ // PERFORMANCE: Mark for deletion, slot will be reused later
189
+ const index = this.loadedTextures.indexOf(texture);
190
+ if (index !== -1) {
191
+ this.loadedTextures[index] = null;
192
+ }
193
+ texture.memUsed = 0;
195
194
  return;
196
195
  } else {
196
+ // Update texture memory and add to tracking if not already present
197
+ texture.memUsed = byteSize;
197
198
  this.memUsed += byteSize;
198
- this.loadedTextures.set(texture, byteSize);
199
+ if (this.loadedTextures.indexOf(texture) === -1) {
200
+ // PERFORMANCE: Reuse empty slots before appending
201
+ const emptyIndex = this.loadedTextures.indexOf(null);
202
+ if (emptyIndex !== -1) {
203
+ this.loadedTextures[emptyIndex] = texture;
204
+ } else {
205
+ this.loadedTextures.push(texture);
206
+ }
207
+ }
199
208
  }
200
209
 
201
210
  if (this.memUsed > this.criticalThreshold) {
@@ -215,41 +224,6 @@ export class TextureMemoryManager {
215
224
  return this.memUsed > this.criticalThreshold;
216
225
  }
217
226
 
218
- cleanupQuick(critical: boolean) {
219
- // Free non-renderable textures until we reach the target threshold
220
- const platform = this.stage.platform;
221
- const memTarget = this.targetThreshold;
222
- const timestamp = platform.getTimeStamp();
223
-
224
- while (
225
- this.memUsed >= memTarget &&
226
- this.orphanedTextures.length > 0 &&
227
- (critical || platform.getTimeStamp() - timestamp < 10)
228
- ) {
229
- const texture = this.orphanedTextures.shift();
230
-
231
- if (texture === undefined) {
232
- continue;
233
- }
234
-
235
- if (texture.renderable === true) {
236
- // If the texture is renderable, we can't free it up
237
- continue;
238
- }
239
-
240
- // Skip textures that are in transitional states - we only want to clean up
241
- // textures that are in a stable state (loaded, failed, or freed)
242
- if (
243
- texture.state === 'initial' ||
244
- Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
245
- ) {
246
- continue;
247
- }
248
-
249
- this.destroyTexture(texture);
250
- }
251
- }
252
-
253
227
  /**
254
228
  * Destroy a texture and remove it from the memory manager
255
229
  *
@@ -262,95 +236,92 @@ export class TextureMemoryManager {
262
236
  );
263
237
  }
264
238
 
239
+ // PERFORMANCE: Null out array position, slot will be reused later
240
+ const index = this.loadedTextures.indexOf(texture);
241
+ if (index !== -1) {
242
+ this.loadedTextures[index] = null;
243
+ }
244
+
245
+ // Destroy texture and update memory counters
265
246
  const txManager = this.stage.txManager;
266
- txManager.removeTextureFromQueue(texture);
267
247
  txManager.removeTextureFromCache(texture);
268
248
 
269
249
  texture.destroy();
270
250
 
271
- this.removeFromOrphanedTextures(texture);
272
- this.loadedTextures.delete(texture);
251
+ // Update memory counters
252
+ this.memUsed -= texture.memUsed;
253
+ texture.memUsed = 0;
273
254
  }
274
- cleanupDeep(critical: boolean) {
275
- // Free non-renderable textures until we reach the target threshold
276
- const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
277
-
278
- // Filter for textures that are candidates for cleanup
279
- // note: This is an expensive operation, so we only do it in deep cleanup
280
- const cleanupCandidates = [...this.loadedTextures.keys()].filter(
281
- (texture) => {
282
- return (
283
- (texture.type === TextureType.image ||
284
- texture.type === TextureType.noise ||
285
- texture.type === TextureType.renderToTexture) &&
286
- texture.renderable === false &&
287
- texture.preventCleanup === false &&
288
- texture.state !== 'initial' &&
289
- !Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
290
- );
291
- },
292
- );
293
255
 
294
- while (this.memUsed >= memTarget && cleanupCandidates.length > 0) {
295
- const texture = cleanupCandidates.shift();
296
- if (texture === undefined) {
297
- continue;
298
- }
299
-
300
- this.destroyTexture(texture);
301
- }
302
- }
303
-
304
- cleanup(aggressive: boolean = false) {
256
+ cleanup() {
305
257
  const critical = this.criticalCleanupRequested;
306
- const criticalThreshold = this.criticalThreshold;
307
- const memUsed = this.memUsed;
308
- const stage = this.stage;
309
258
  this.lastCleanupTime = this.frameTime;
310
259
 
311
260
  if (critical === true) {
312
- stage.queueFrameEvent('criticalCleanup', {
261
+ this.stage.queueFrameEvent('criticalCleanup', {
313
262
  memUsed: this.memUsed,
314
- criticalThreshold: criticalThreshold,
263
+ criticalThreshold: this.criticalThreshold,
315
264
  });
316
265
  }
317
266
 
318
267
  if (this.debugLogging === true) {
319
268
  console.log(
320
- `[TextureMemoryManager] Cleaning up textures. Critical: ${critical}. Aggressive: ${aggressive}`,
269
+ `[TextureMemoryManager] Cleaning up textures. Critical: ${critical}.`,
321
270
  );
322
271
  }
323
272
 
324
- // Note: We skip textures in transitional states during cleanup:
325
- // - 'initial': These textures haven't started loading yet
326
- // - 'fetching': These textures are in the process of being fetched
327
- // - 'fetched': These textures have been fetched but not yet uploaded to GPU
328
- // - 'loading': These textures are being uploaded to the GPU
329
- //
330
- // For 'failed' and 'freed' states, we only remove them from the tracking
331
- // arrays without trying to free GPU resources that don't exist.
332
-
333
- // try a quick cleanup first
334
- this.cleanupQuick(critical);
335
-
336
- // if we're still above the target threshold, do a deep cleanup
337
- if (aggressive === true && memUsed >= criticalThreshold) {
338
- this.cleanupDeep(critical);
273
+ // Free non-renderable textures until we reach the target threshold
274
+ const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
275
+
276
+ // PERFORMANCE: Zero-overhead cleanup with null marking
277
+ // Skip null entries, mark cleaned textures as null for later defrag
278
+ let currentMemUsed = this.memUsed;
279
+
280
+ for (let i = 0; i < this.loadedTextures.length; i++) {
281
+ // Early exit: target memory reached
282
+ if (currentMemUsed < memTarget) {
283
+ break;
284
+ }
285
+
286
+ const texture = this.loadedTextures[i];
287
+ if (!texture) continue; // Skip null entries from previous deletions
288
+
289
+ // Fast type check for cleanable textures
290
+ const isCleanableType =
291
+ texture.type === TextureType.image ||
292
+ texture.type === TextureType.noise ||
293
+ texture.type === TextureType.renderToTexture;
294
+
295
+ // Immediate cleanup if eligible
296
+ if (isCleanableType && texture.canBeCleanedUp() === true) {
297
+ // Get memory before destroying
298
+ const textureMemory = texture.memUsed;
299
+
300
+ // Destroy texture (which will null out the array position)
301
+ this.destroyTexture(texture);
302
+ currentMemUsed -= textureMemory;
303
+ }
339
304
  }
340
305
 
341
- if (memUsed >= criticalThreshold) {
342
- stage.queueFrameEvent('criticalCleanupFailed', {
343
- memUsed: memUsed,
344
- criticalThreshold: criticalThreshold,
306
+ if (this.memUsed >= this.criticalThreshold) {
307
+ this.stage.queueFrameEvent('criticalCleanupFailed', {
308
+ memUsed: this.memUsed,
309
+ criticalThreshold: this.criticalThreshold,
345
310
  });
346
-
347
- if (this.debugLogging === true || isProductionEnvironment === false) {
311
+ // Only emit the warning once per over-threshold period
312
+ if (
313
+ !this.hasWarnedAboveCritical &&
314
+ (this.debugLogging === true || isProductionEnvironment === false)
315
+ ) {
348
316
  console.warn(
349
- `[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${memUsed}`,
317
+ `[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`,
350
318
  );
319
+
320
+ this.hasWarnedAboveCritical = true;
351
321
  }
352
322
  } else {
353
323
  this.criticalCleanupRequested = false;
324
+ this.hasWarnedAboveCritical = false;
354
325
  }
355
326
  }
356
327
 
@@ -363,15 +334,19 @@ export class TextureMemoryManager {
363
334
  */
364
335
  getMemoryInfo(): MemoryInfo {
365
336
  let renderableTexturesLoaded = 0;
366
- const renderableMemUsed = [...this.loadedTextures.keys()].reduce(
367
- (acc, texture) => {
368
- renderableTexturesLoaded += texture.renderable ? 1 : 0;
369
- // Get the memory used by the texture, defaulting to 0 if not found
370
- const textureMemory = this.loadedTextures.get(texture) ?? 0;
371
- return acc + (texture.renderable ? textureMemory : 0);
372
- },
373
- this.baselineMemoryAllocation,
374
- );
337
+ let renderableMemUsed = this.baselineMemoryAllocation;
338
+
339
+ for (const texture of this.loadedTextures) {
340
+ if (texture && texture.renderable) {
341
+ renderableTexturesLoaded += 1;
342
+ renderableMemUsed += texture.memUsed;
343
+ }
344
+ }
345
+
346
+ // Count non-null entries for accurate loaded texture count
347
+ const actualLoadedTextures = this.loadedTextures.filter(
348
+ (t) => t !== null,
349
+ ).length;
375
350
 
376
351
  return {
377
352
  criticalThreshold: this.criticalThreshold,
@@ -379,7 +354,7 @@ export class TextureMemoryManager {
379
354
  renderableMemUsed,
380
355
  memUsed: this.memUsed,
381
356
  renderableTexturesLoaded,
382
- loadedTextures: this.loadedTextures.size,
357
+ loadedTextures: actualLoadedTextures,
383
358
  baselineMemoryAllocation: this.baselineMemoryAllocation,
384
359
  };
385
360
  }
@@ -438,8 +413,6 @@ export class TextureMemoryManager {
438
413
  // setTextureMemUse method with a no-op function.
439
414
  if (criticalThreshold === 0) {
440
415
  this.setTextureMemUse = () => {};
441
- } else {
442
- this.setTextureMemUse = this.originalSetTextureMemUse;
443
416
  }
444
417
  }
445
418
  }
@@ -73,6 +73,7 @@ export class WebGlContextWrapper {
73
73
  public readonly TEXTURE_WRAP_S;
74
74
  public readonly TEXTURE_WRAP_T;
75
75
  public readonly LINEAR;
76
+ public readonly LINEAR_MIPMAP_LINEAR;
76
77
  public readonly CLAMP_TO_EDGE;
77
78
  public readonly RGB;
78
79
  public readonly RGBA;
@@ -164,6 +165,7 @@ export class WebGlContextWrapper {
164
165
  this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;
165
166
  this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;
166
167
  this.LINEAR = gl.LINEAR;
168
+ this.LINEAR_MIPMAP_LINEAR = gl.LINEAR_MIPMAP_LINEAR;
167
169
  this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;
168
170
  this.RGB = gl.RGB;
169
171
  this.RGBA = gl.RGBA;
@@ -1327,6 +1329,44 @@ export class WebGlContextWrapper {
1327
1329
  (this.gl as WebGL2RenderingContext).deleteVertexArray(vertexArray);
1328
1330
  }
1329
1331
  }
1332
+
1333
+ /**
1334
+ * Check for WebGL errors and return error information
1335
+ * @param operation Description of the operation for error reporting
1336
+ * @returns Object with error information or null if no error
1337
+ */
1338
+ checkError(
1339
+ operation: string,
1340
+ ): { error: number; errorName: string; message: string } | null {
1341
+ const error = this.getError();
1342
+ if (error !== 0) {
1343
+ // 0 is GL_NO_ERROR
1344
+ let errorName = 'UNKNOWN_ERROR';
1345
+ switch (error) {
1346
+ case this.INVALID_ENUM:
1347
+ errorName = 'INVALID_ENUM';
1348
+ break;
1349
+ case 0x0501: // GL_INVALID_VALUE
1350
+ errorName = 'INVALID_VALUE';
1351
+ break;
1352
+ case this.INVALID_OPERATION:
1353
+ errorName = 'INVALID_OPERATION';
1354
+ break;
1355
+ case 0x0505: // GL_OUT_OF_MEMORY
1356
+ errorName = 'OUT_OF_MEMORY';
1357
+ break;
1358
+ case 0x9242: // GL_CONTEXT_LOST_WEBGL
1359
+ errorName = 'CONTEXT_LOST_WEBGL';
1360
+ break;
1361
+ }
1362
+
1363
+ const message = `WebGL ${errorName} (0x${error.toString(
1364
+ 16,
1365
+ )}) during ${operation}`;
1366
+ return { error, errorName, message };
1367
+ }
1368
+ return null;
1369
+ }
1330
1370
  }
1331
1371
 
1332
1372
  // prettier-ignore
@@ -0,0 +1,118 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ import type { CoreNode } from '../CoreNode.js';
21
+
22
+ //Bucket sort implementation for sorting CoreNode arrays by zIndex
23
+ export const bucketSortByZIndex = (nodes: CoreNode[], min: number): void => {
24
+ const buckets: CoreNode[][] = [];
25
+ const bucketIndices: number[] = [];
26
+ //distribute nodes into buckets
27
+ for (let i = 0; i < nodes.length; i++) {
28
+ const node = nodes[i]!;
29
+ const index = node.props.zIndex - min;
30
+ //create bucket if it doesn't exist
31
+ if (buckets[index] === undefined) {
32
+ buckets[index] = [];
33
+ bucketIndices.push(index);
34
+ }
35
+ buckets[index]!.push(node);
36
+ }
37
+
38
+ //sort each bucket using insertion sort
39
+ for (let i = 1; i < bucketIndices.length; i++) {
40
+ const key = bucketIndices[i]!;
41
+ let j = i - 1;
42
+ while (j >= 0 && bucketIndices[j]! > key) {
43
+ bucketIndices[j + 1] = bucketIndices[j]!;
44
+ j--;
45
+ }
46
+ bucketIndices[j + 1] = key;
47
+ }
48
+
49
+ //flatten buckets
50
+ let idx = 0;
51
+ for (let i = 0; i < bucketIndices.length; i++) {
52
+ const bucket = buckets[bucketIndices[i]!]!;
53
+ for (let j = 0; j < bucket.length; j++) {
54
+ nodes[idx++] = bucket[j]!;
55
+ }
56
+ }
57
+
58
+ //clean up
59
+ buckets.length = 0;
60
+ bucketIndices.length = 0;
61
+ };
62
+
63
+ export const incrementalRepositionByZIndex = (
64
+ changedNodes: CoreNode[],
65
+ nodes: CoreNode[],
66
+ ): void => {
67
+ for (let i = 0; i < changedNodes.length; i++) {
68
+ const node = changedNodes[i]!;
69
+ const currentIndex = findChildIndexById(node, nodes);
70
+ if (currentIndex === -1) continue;
71
+
72
+ const targetZIndex = node.props.zIndex;
73
+
74
+ //binary search for correct insertion position
75
+ let left = 0;
76
+ let right = nodes.length;
77
+
78
+ while (left < right) {
79
+ const mid = (left + right) >>> 1;
80
+ if (nodes[mid]!.props.zIndex <= targetZIndex) {
81
+ left = mid + 1;
82
+ } else {
83
+ right = mid;
84
+ }
85
+ }
86
+
87
+ //adjust target position if it's after the current position
88
+ const targetIndex = left > currentIndex ? left - 1 : left;
89
+
90
+ //only reposition if target is different from current
91
+ if (targetIndex !== currentIndex) {
92
+ nodes.splice(currentIndex, 1);
93
+ nodes.splice(targetIndex, 0, node);
94
+ }
95
+ }
96
+ };
97
+
98
+ export const findChildIndexById = (
99
+ node: CoreNode,
100
+ children: CoreNode[],
101
+ ): number => {
102
+ for (let i = 0; i < children.length; i++) {
103
+ const child = children[i]!;
104
+
105
+ // @ts-ignore - accessing protected property
106
+ if (child._id === node._id) {
107
+ return i;
108
+ }
109
+ }
110
+ return -1;
111
+ };
112
+
113
+ export const removeChild = (node: CoreNode, children: CoreNode[]): void => {
114
+ const index = findChildIndexById(node, children);
115
+ if (index !== -1) {
116
+ children.splice(index, 1);
117
+ }
118
+ };