@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
@@ -264,7 +264,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
264
264
 
265
265
  if (this.renderState > CoreNodeRenderState.OutOfBounds) {
266
266
  // We do want the texture to load immediately
267
- this.texture.setRenderableOwner(this, true);
267
+ this.texture.setRenderableOwner(this._id, true);
268
268
  }
269
269
  }
270
270
 
@@ -279,14 +279,19 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
279
279
  }
280
280
 
281
281
  this._renderInfo = result;
282
+ queueMicrotask(this.emitTextLoadedEvent);
283
+ }
284
+
285
+ // Reusable bound method for emitting loaded event
286
+ private emitTextLoadedEvent = () => {
282
287
  this.emit('loaded', {
283
288
  type: 'text',
284
289
  dimensions: {
285
- w: width,
286
- h: height,
290
+ w: this._renderInfo.width,
291
+ h: this._renderInfo.height,
287
292
  },
288
293
  } satisfies NodeTextLoadedPayload);
289
- }
294
+ };
290
295
 
291
296
  /**
292
297
  * Override renderQuads to handle SDF vs Canvas rendering
@@ -32,6 +32,7 @@ import {
32
32
  type CreateImageBitmapSupport,
33
33
  } from './lib/validateImageBitmap.js';
34
34
  import type { Platform } from './platforms/Platform.js';
35
+ import { TextureError, TextureErrorCode } from './TextureError.js';
35
36
 
36
37
  /**
37
38
  * Augmentable map of texture class types
@@ -64,6 +65,7 @@ export interface TextureManagerDebugInfo {
64
65
  export interface TextureManagerSettings {
65
66
  numImageWorkers: number;
66
67
  createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
68
+ maxRetryCount: number;
67
69
  }
68
70
 
69
71
  export type ResizeModeOptions =
@@ -138,6 +140,20 @@ export interface TextureOptions {
138
140
  */
139
141
  preventCleanup?: boolean;
140
142
 
143
+ /**
144
+ * Number of times to retry loading a failed texture
145
+ *
146
+ * @remarks
147
+ * When a texture fails to load, Lightning will retry up to this many times
148
+ * before permanently giving up. Each retry will clear the texture ownership
149
+ * and then re-establish it to trigger a new load attempt.
150
+ *
151
+ * Set to null to disable retries. Set to 0 to always try once and never retry.
152
+ * This is typically only used on ImageTexture instances.
153
+ *
154
+ */
155
+ maxRetryCount?: number | null;
156
+
141
157
  /**
142
158
  * Flip the texture horizontally when rendering
143
159
  *
@@ -178,6 +194,7 @@ export class CoreTextureManager extends EventEmitter {
178
194
  */
179
195
  txConstructors: Partial<TextureMap> = {};
180
196
 
197
+ public maxRetryCount: number;
181
198
  private priorityQueue: Array<Texture> = [];
182
199
  private uploadTextureQueue: Array<Texture> = [];
183
200
  private initialized = false;
@@ -218,10 +235,13 @@ export class CoreTextureManager extends EventEmitter {
218
235
  constructor(stage: Stage, settings: TextureManagerSettings) {
219
236
  super();
220
237
 
221
- const { numImageWorkers, createImageBitmapSupport } = settings;
238
+ const { numImageWorkers, createImageBitmapSupport, maxRetryCount } =
239
+ settings;
240
+
222
241
  this.stage = stage;
223
242
  this.platform = stage.platform;
224
243
  this.numImageWorkers = numImageWorkers;
244
+ this.maxRetryCount = maxRetryCount;
225
245
 
226
246
  if (createImageBitmapSupport === 'auto') {
227
247
  validateCreateImageBitmap(this.platform)
@@ -315,14 +335,14 @@ export class CoreTextureManager extends EventEmitter {
315
335
  if (!TextureClass) {
316
336
  throw new Error(`Texture type "${textureType}" is not registered`);
317
337
  }
318
-
319
- const cacheKey = TextureClass.makeCacheKey(props as any);
338
+ const resolvedProps = TextureClass.resolveDefaults(props as any);
339
+ const cacheKey = TextureClass.makeCacheKey(resolvedProps as any);
320
340
  if (cacheKey && this.keyCache.has(cacheKey)) {
321
341
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
322
342
  texture = this.keyCache.get(cacheKey)!;
323
343
  } else {
324
344
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
325
- texture = new TextureClass(this, props as any);
345
+ texture = new TextureClass(this, resolvedProps as any);
326
346
 
327
347
  if (cacheKey) {
328
348
  this.initTextureToCache(texture, cacheKey);
@@ -332,25 +352,13 @@ export class CoreTextureManager extends EventEmitter {
332
352
  return texture as InstanceType<TextureMap[Type]>;
333
353
  }
334
354
 
335
- orphanTexture(texture: Texture): void {
336
- // if it is part of the download or upload queue, remove it
337
- this.removeTextureFromQueue(texture);
338
-
339
- if (texture.type === TextureType.subTexture) {
340
- // ignore subtextures
341
- return;
342
- }
343
-
344
- this.stage.txMemManager.addToOrphanedTextures(texture);
345
- }
346
-
347
355
  /**
348
356
  * Override loadTexture to use the batched approach.
349
357
  *
350
358
  * @param texture - The texture to load
351
359
  * @param immediate - Whether to prioritize the texture for immediate loading
352
360
  */
353
- loadTexture(texture: Texture, priority?: boolean): void {
361
+ async loadTexture(texture: Texture, priority?: boolean): Promise<void> {
354
362
  this.stage.txMemManager.removeFromOrphanedTextures(texture);
355
363
 
356
364
  if (texture.type === TextureType.subTexture) {
@@ -363,56 +371,39 @@ export class CoreTextureManager extends EventEmitter {
363
371
  return;
364
372
  }
365
373
 
366
- if (Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)) {
367
- return;
368
- }
369
-
370
374
  // if we're not initialized, just queue the texture into the priority queue
371
375
  if (this.initialized === false) {
372
376
  this.priorityQueue.push(texture);
373
377
  return;
374
378
  }
375
379
 
376
- // If the texture failed to load, we need to re-download it.
377
- if (texture.state === 'failed') {
378
- texture.free();
379
- texture.freeTextureData();
380
- }
381
-
382
380
  texture.setState('loading');
383
381
 
384
- // Get the texture data
385
- texture
386
- .getTextureData()
387
- .then(() => {
388
- if (texture.state !== 'fetched') {
389
- texture.setState('failed');
390
- return;
391
- }
392
-
393
- // For non-image textures, upload immediately
394
- if (texture.type !== TextureType.image) {
395
- this.uploadTexture(texture).catch((err) => {
396
- console.error('Failed to upload non-image texture:', err);
397
- texture.setState('failed');
398
- });
399
- } else {
400
- // For image textures, queue for throttled upload
401
- // If it's a priority texture, upload it immediately
402
- if (priority === true) {
403
- this.uploadTexture(texture).catch((err) => {
404
- console.error('Failed to upload priority texture:', err);
405
- texture.setState('failed');
406
- });
407
- } else {
408
- this.enqueueUploadTexture(texture);
409
- }
410
- }
411
- })
412
- .catch((err) => {
413
- console.error(err);
382
+ // Get texture data - early return on failure
383
+ const textureDataResult = await texture.getTextureData().catch((err) => {
384
+ console.error(err);
385
+ texture.setState('failed');
386
+ return null;
387
+ });
388
+
389
+ // Early return if texture data fetch failed
390
+ if (textureDataResult === null || texture.state === 'failed') {
391
+ return;
392
+ }
393
+
394
+ // Handle non-image textures: upload immediately
395
+ const shouldUploadImmediately =
396
+ texture.type !== TextureType.image || priority === true;
397
+ if (shouldUploadImmediately === true) {
398
+ await this.uploadTexture(texture).catch((err) => {
399
+ console.error(`Failed to upload texture:`, err);
414
400
  texture.setState('failed');
415
401
  });
402
+ return;
403
+ }
404
+
405
+ // Queue image textures for throttled upload
406
+ this.enqueueUploadTexture(texture);
416
407
  }
417
408
 
418
409
  /**
@@ -431,6 +422,27 @@ export class CoreTextureManager extends EventEmitter {
431
422
  return;
432
423
  }
433
424
 
425
+ if (texture.state === 'failed' || texture.state === 'freed') {
426
+ // don't upload failed or freed textures
427
+ return;
428
+ }
429
+
430
+ if (texture.state === 'loaded') {
431
+ // already loaded
432
+ return;
433
+ }
434
+
435
+ if (texture.textureData === null) {
436
+ texture.setState(
437
+ 'failed',
438
+ new TextureError(
439
+ TextureErrorCode.TEXTURE_DATA_NULL,
440
+ 'Texture data is null, cannot upload texture',
441
+ ),
442
+ );
443
+ return;
444
+ }
445
+
434
446
  const coreContext = texture.loadCtxTexture();
435
447
  if (coreContext !== null && coreContext.state === 'loaded') {
436
448
  texture.setState('loaded');
package/src/core/Stage.ts CHANGED
@@ -60,7 +60,7 @@ import type { RendererMainSettings } from '../main-api/Renderer.js';
60
60
 
61
61
  export type StageOptions = Omit<
62
62
  RendererMainSettings,
63
- 'inspector' | 'platform'
63
+ 'inspector' | 'platform' | 'maxRetryCount'
64
64
  > & {
65
65
  textureMemory: TextureMemoryManagerSettings;
66
66
  canvas: HTMLCanvasElement | OffscreenCanvas;
@@ -68,6 +68,7 @@ export type StageOptions = Omit<
68
68
  eventBus: EventEmitter;
69
69
  platform: Platform | WebPlatform;
70
70
  inspector: boolean;
71
+ maxRetryCount: number;
71
72
  };
72
73
 
73
74
  export type StageFpsUpdateHandler = (
@@ -129,9 +130,12 @@ export class Stage {
129
130
  public readonly eventBus: EventEmitter;
130
131
 
131
132
  /// State
133
+ startTime = 0;
132
134
  deltaTime = 0;
133
135
  lastFrameTime = 0;
134
136
  currentFrameTime = 0;
137
+ elapsedTime = 0;
138
+ private timedNodes: CoreNode[] = [];
135
139
  private clrColor = 0x00000000;
136
140
  private fpsNumFrames = 0;
137
141
  private fpsElapsedTime = 0;
@@ -167,6 +171,7 @@ export class Stage {
167
171
  fontEngines,
168
172
  createImageBitmapSupport,
169
173
  platform,
174
+ maxRetryCount,
170
175
  } = options;
171
176
 
172
177
  assertTruthy(
@@ -176,6 +181,8 @@ export class Stage {
176
181
 
177
182
  this.platform = platform;
178
183
 
184
+ this.startTime = platform.getTimeStamp();
185
+
179
186
  this.eventBus = options.eventBus;
180
187
 
181
188
  // Calculate target frame time from targetFPS option
@@ -184,6 +191,7 @@ export class Stage {
184
191
  this.txManager = new CoreTextureManager(this, {
185
192
  numImageWorkers,
186
193
  createImageBitmapSupport,
194
+ maxRetryCount,
187
195
  });
188
196
 
189
197
  // Wait for the Texture Manager to initialize
@@ -335,7 +343,6 @@ export class Stage {
335
343
  colorBl: 0x00000000,
336
344
  colorBr: 0x00000000,
337
345
  zIndex: 0,
338
- zIndexLocked: 0,
339
346
  scaleX: 1,
340
347
  scaleY: 1,
341
348
  mountX: 0,
@@ -383,9 +390,10 @@ export class Stage {
383
390
  }
384
391
 
385
392
  updateFrameTime() {
386
- const newFrameTime = this.platform!.getTimeStamp();
393
+ const newFrameTime = this.platform.getTimeStamp();
387
394
  this.lastFrameTime = this.currentFrameTime;
388
395
  this.currentFrameTime = newFrameTime;
396
+ this.elapsedTime = this.startTime - newFrameTime;
389
397
  this.deltaTime = !this.lastFrameTime
390
398
  ? 100 / 6
391
399
  : newFrameTime - this.lastFrameTime;
@@ -417,7 +425,7 @@ export class Stage {
417
425
  // Mark the default texture as ALWAYS renderable
418
426
  // This prevents it from ever being cleaned up.
419
427
  // Fixes https://github.com/lightning-js/renderer/issues/262
420
- this.defaultTexture.setRenderableOwner(this, true);
428
+ this.defaultTexture.setRenderableOwner('stage', true);
421
429
 
422
430
  // When the default texture is loaded, request a render in case the
423
431
  // RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
@@ -472,16 +480,6 @@ export class Stage {
472
480
  // Reset render operations and clear the canvas
473
481
  renderer.reset();
474
482
 
475
- // Check if we need to cleanup textures
476
- if (txMemManager.criticalCleanupRequested === true) {
477
- txMemManager.cleanup(false);
478
-
479
- if (txMemManager.criticalCleanupRequested === true) {
480
- // If we still need to cleanup, request another but aggressive cleanup
481
- txMemManager.cleanup(true);
482
- }
483
- }
484
-
485
483
  // If we have RTT nodes draw them first
486
484
  // So we can use them as textures in the main scene
487
485
  if (renderer.rttNodes.length > 0) {
@@ -501,6 +499,19 @@ export class Stage {
501
499
  if (renderRequested === true) {
502
500
  this.renderRequested = false;
503
501
  }
502
+
503
+ if (this.timedNodes.length > 0) {
504
+ for (let key in this.timedNodes) {
505
+ if (this.timedNodes[key]!.isRenderable === true) {
506
+ this.requestRender();
507
+ break;
508
+ }
509
+ }
510
+ }
511
+ // Check if we need to cleanup textures
512
+ if (this.txMemManager.criticalCleanupRequested === true) {
513
+ this.txMemManager.cleanup();
514
+ }
504
515
  }
505
516
 
506
517
  /**
@@ -764,6 +775,30 @@ export class Stage {
764
775
  return topNode || null;
765
776
  }
766
777
 
778
+ /**
779
+ * add node to timeNodes arrays
780
+ * @param node
781
+ * @returns
782
+ */
783
+ trackTimedNode(node: CoreNode) {
784
+ if (this.timedNodes[node.id] !== undefined) {
785
+ return;
786
+ }
787
+ this.timedNodes[node.id] = node;
788
+ }
789
+
790
+ /**
791
+ * remove node from timeNodes arrays
792
+ * @param node
793
+ * @returns
794
+ */
795
+ untrackTimedNode(node: CoreNode) {
796
+ if (this.timedNodes[node.id] === undefined) {
797
+ return;
798
+ }
799
+ delete this.timedNodes[node.id];
800
+ }
801
+
767
802
  /**
768
803
  * Resolves the default property values for a Node
769
804
  *
@@ -821,7 +856,6 @@ export class Stage {
821
856
  colorBl,
822
857
  colorBr,
823
858
  zIndex: props.zIndex ?? 0,
824
- zIndexLocked: props.zIndexLocked ?? 0,
825
859
  parent: props.parent ?? null,
826
860
  texture: props.texture ?? null,
827
861
  textureOptions: props.textureOptions ?? {},
@@ -854,8 +888,8 @@ export class Stage {
854
888
  * @remarks
855
889
  * This method is used to cleanup orphaned textures that are no longer in use.
856
890
  */
857
- cleanup(aggressive: boolean) {
858
- this.txMemManager.cleanup(aggressive);
891
+ cleanup() {
892
+ this.txMemManager.cleanup();
859
893
  }
860
894
 
861
895
  set clearColor(value: number) {
@@ -0,0 +1,46 @@
1
+ export enum TextureErrorCode {
2
+ MEMORY_THRESHOLD_EXCEEDED = 'MEMORY_THRESHOLD_EXCEEDED',
3
+ TEXTURE_DATA_NULL = 'TEXTURE_DATA_NULL',
4
+ TEXTURE_TYPE_NOT_REGISTERED = 'TEXTURE_TYPE_NOT_REGISTERED',
5
+ }
6
+
7
+ const defaultMessages: Record<TextureErrorCode, string> = {
8
+ [TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED]: 'Memory threshold exceeded',
9
+ [TextureErrorCode.TEXTURE_DATA_NULL]: 'Texture data is null',
10
+ [TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED]:
11
+ 'Texture type is not registered',
12
+ };
13
+
14
+ export class TextureError extends Error {
15
+ code?: TextureErrorCode;
16
+
17
+ constructor(message: string);
18
+ constructor(code: TextureErrorCode, message?: string);
19
+ constructor(codeOrMessage: TextureErrorCode | string, maybeMessage?: string) {
20
+ const isCode = Object.values(TextureErrorCode).includes(
21
+ codeOrMessage as TextureErrorCode,
22
+ );
23
+
24
+ const code = isCode ? (codeOrMessage as TextureErrorCode) : undefined;
25
+ let message: string;
26
+ if (isCode && code) {
27
+ message = maybeMessage ?? defaultMessages[code];
28
+ } else {
29
+ message = String(codeOrMessage);
30
+ }
31
+
32
+ super(message);
33
+ this.name = new.target.name;
34
+ if (code) this.code = code;
35
+ }
36
+ }
37
+
38
+ export function isTextureError(err: unknown): err is TextureError {
39
+ return (
40
+ err instanceof TextureError ||
41
+ (typeof err === 'object' &&
42
+ err !== null &&
43
+ (err as { name?: unknown }).name === 'TextureError' &&
44
+ typeof (err as { code?: unknown }).code === 'string')
45
+ );
46
+ }