@lightningjs/renderer 3.0.0-beta14 → 3.0.0-beta15

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 (271) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js.map +1 -1
  3. package/dist/src/core/CoreNode.d.ts +1 -1
  4. package/dist/src/core/CoreTextNode.d.ts +0 -2
  5. package/dist/src/core/CoreTextNode.js +4 -16
  6. package/dist/src/core/CoreTextNode.js.map +1 -1
  7. package/dist/src/core/Stage.js +2 -3
  8. package/dist/src/core/Stage.js.map +1 -1
  9. package/dist/src/core/TextureError.d.ts +11 -0
  10. package/dist/src/core/TextureError.js +37 -0
  11. package/dist/src/core/TextureError.js.map +1 -0
  12. package/dist/src/core/animations/CoreAnimation.d.ts +3 -2
  13. package/dist/src/core/animations/CoreAnimation.js +3 -2
  14. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  15. package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -5
  16. package/dist/src/core/lib/textureCompression.js +1 -1
  17. package/dist/src/core/lib/textureCompression.js.map +1 -1
  18. package/dist/src/core/platform.d.ts +10 -0
  19. package/dist/src/core/platform.js +81 -0
  20. package/dist/src/core/platform.js.map +1 -0
  21. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  22. package/{src/core/text-rendering/sdf/index.ts → dist/src/core/renderers/CoreShader.js} +11 -3
  23. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  24. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  25. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  26. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  27. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  28. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  29. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  30. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +14 -0
  31. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +138 -0
  32. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  33. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +19 -0
  34. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +58 -0
  35. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  36. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  37. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
  38. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  39. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  40. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  41. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  42. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  43. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  44. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  45. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +65 -0
  46. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +269 -0
  47. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  48. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  49. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
  50. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  51. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  52. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +616 -0
  53. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  54. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +83 -0
  55. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +233 -0
  56. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  57. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  58. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +87 -0
  59. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  60. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  61. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
  62. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  63. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  64. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +413 -0
  65. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  66. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  67. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +131 -0
  68. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  69. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  70. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +160 -0
  71. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  72. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  73. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  74. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  75. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  76. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  77. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  78. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  79. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  80. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  82. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  83. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  85. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  86. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  88. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  89. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  90. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  91. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  92. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  93. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  94. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  95. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  96. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  97. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  98. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  99. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  100. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  101. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  102. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
  103. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +129 -0
  104. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +39 -0
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +116 -0
  107. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  108. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  109. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  110. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  111. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  112. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  113. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  114. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  115. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  116. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  117. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +1 -1
  118. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  119. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +1 -1
  120. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  121. package/dist/src/core/shaders/webgl/LinearGradient.js +26 -3
  122. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  123. package/dist/src/core/shaders/webgl/RadialGradient.js +49 -27
  124. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  125. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  126. package/dist/src/core/shaders/webgl/SdfShader.js +1 -10
  127. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  128. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +21 -3
  129. package/dist/src/core/text-rendering/CanvasFontHandler.js +94 -32
  130. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  131. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -7
  132. package/dist/src/core/text-rendering/CanvasTextRenderer.js +51 -260
  133. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  134. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +35 -5
  135. package/dist/src/core/text-rendering/SdfFontHandler.js +76 -56
  136. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  137. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +1 -1
  138. package/dist/src/core/text-rendering/SdfTextRenderer.js +38 -82
  139. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  140. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +19 -0
  141. package/dist/src/core/text-rendering/{sdf/Utils.js → TextLayoutEngine.js} +125 -105
  142. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  143. package/dist/src/core/text-rendering/TextRenderer.d.ts +30 -13
  144. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
  145. package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
  146. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
  147. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
  148. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
  149. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  150. package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
  151. package/dist/src/core/text-rendering/TrFontManager.js +131 -0
  152. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  153. package/dist/src/core/text-rendering/Utils.d.ts +1 -42
  154. package/dist/src/core/text-rendering/Utils.js +4 -132
  155. package/dist/src/core/text-rendering/Utils.js.map +1 -1
  156. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
  157. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
  158. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  159. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  160. package/dist/src/core/text-rendering/{sdf/index.js → font-face-types/SdfTrFontFace/internal/FontShaper.js} +4 -3
  161. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  162. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
  163. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
  164. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  165. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
  166. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
  167. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  168. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
  169. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
  170. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  171. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
  172. package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
  173. package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
  174. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
  175. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
  176. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  177. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
  178. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
  179. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
  182. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  183. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  184. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  185. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  186. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  187. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  188. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  189. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
  193. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
  194. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  195. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  196. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  197. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  198. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
  199. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
  200. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  201. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  202. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
  206. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
  207. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
  208. package/dist/src/core/text-rendering/{canvas/Settings.js → renderers/SdfTextRenderer/internal/util.js} +22 -3
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
  210. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
  211. package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
  212. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  213. package/dist/src/core/utils.d.ts +2 -1
  214. package/dist/src/core/utils.js +1 -1
  215. package/dist/src/core/utils.js.map +1 -1
  216. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  217. package/dist/src/main-api/DynamicShaderController.js +58 -0
  218. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  219. package/dist/src/main-api/Inspector.d.ts +124 -0
  220. package/dist/src/main-api/Inspector.js +283 -8
  221. package/dist/src/main-api/Inspector.js.map +1 -1
  222. package/dist/src/main-api/Renderer.d.ts +150 -26
  223. package/dist/src/main-api/Renderer.js +27 -25
  224. package/dist/src/main-api/Renderer.js.map +1 -1
  225. package/dist/src/main-api/ShaderController.d.ts +31 -0
  226. package/dist/src/main-api/ShaderController.js +37 -0
  227. package/dist/src/main-api/ShaderController.js.map +1 -0
  228. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  229. package/exports/index.ts +1 -0
  230. package/package.json +14 -15
  231. package/src/core/CoreTextNode.ts +4 -22
  232. package/src/core/Stage.ts +2 -3
  233. package/src/core/animations/CoreAnimation.ts +8 -7
  234. package/src/core/lib/textureCompression.ts +4 -2
  235. package/src/core/shaders/canvas/RoundedWithBorder.ts +1 -1
  236. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +1 -1
  237. package/src/core/shaders/webgl/LinearGradient.ts +26 -3
  238. package/src/core/shaders/webgl/RadialGradient.ts +50 -28
  239. package/src/core/shaders/webgl/SdfShader.ts +1 -12
  240. package/src/core/text-rendering/CanvasFontHandler.ts +136 -39
  241. package/src/core/text-rendering/CanvasTextRenderer.ts +75 -440
  242. package/src/core/text-rendering/SdfFontHandler.ts +94 -60
  243. package/src/core/text-rendering/SdfTextRenderer.ts +62 -116
  244. package/src/core/text-rendering/{sdf/Utils.ts → TextLayoutEngine.ts} +209 -143
  245. package/src/core/text-rendering/TextRenderer.ts +36 -13
  246. package/src/core/text-rendering/Utils.ts +5 -163
  247. package/src/core/text-rendering/{sdf/Utils.test.ts → tests/Canvas.test.ts} +98 -122
  248. package/src/core/text-rendering/tests/SdfTests.test.ts +414 -0
  249. package/src/core/utils.ts +9 -7
  250. package/src/main-api/Inspector.ts +502 -12
  251. package/src/main-api/Renderer.ts +158 -26
  252. package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -64
  253. package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
  254. package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -20
  255. package/dist/src/core/text-rendering/canvas/Utils.js +0 -144
  256. package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
  257. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -60
  258. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -183
  259. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
  260. package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -5
  261. package/dist/src/core/text-rendering/canvas/draw.js +0 -132
  262. package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
  263. package/dist/src/core/text-rendering/sdf/Utils.d.ts +0 -26
  264. package/dist/src/core/text-rendering/sdf/Utils.js.map +0 -1
  265. package/dist/src/core/text-rendering/sdf/index.d.ts +0 -1
  266. package/dist/src/core/text-rendering/sdf/index.js.map +0 -1
  267. package/src/core/text-rendering/canvas/Settings.ts +0 -99
  268. package/src/core/text-rendering/canvas/Utils.test.ts +0 -206
  269. package/src/core/text-rendering/canvas/Utils.ts +0 -178
  270. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +0 -299
  271. package/src/core/text-rendering/canvas/draw.ts +0 -165
package/exports/index.ts CHANGED
@@ -50,6 +50,7 @@ export {
50
50
  } from '../src/core/CoreTextureManager.js';
51
51
  export type { MemoryInfo } from '../src/core/TextureMemoryManager.js';
52
52
  export type { AnimationSettings } from '../src/core/animations/CoreAnimation.js';
53
+ export type { TimingFunction } from '../src/core/utils.js';
53
54
  export type { Inspector } from '../src/main-api/Inspector.js';
54
55
  export type { CoreNodeRenderState } from '../src/core/CoreNode.js';
55
56
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightningjs/renderer",
3
- "version": "3.0.0-beta14",
3
+ "version": "3.0.0-beta15",
4
4
  "description": "Lightning 3 Renderer",
5
5
  "type": "module",
6
6
  "main": "./dist/exports/index.js",
@@ -32,19 +32,19 @@
32
32
  },
33
33
  "homepage": "https://github.com/lightning-js/renderer#readme",
34
34
  "devDependencies": {
35
- "@types/node": "^20.0.0",
36
- "@typescript-eslint/eslint-plugin": "^8.16.0",
37
- "@typescript-eslint/parser": "^8.16.0",
38
- "@vitest/coverage-v8": "^2.1.5",
39
- "concurrently": "^8.0.1",
40
- "eslint": "^9.15.0",
41
- "eslint-config-prettier": "^8.7.0",
35
+ "@types/node": "^20.19.17",
36
+ "@typescript-eslint/eslint-plugin": "^8.44.0",
37
+ "@typescript-eslint/parser": "^8.44.0",
38
+ "@vitest/coverage-v8": "^2.1.9",
39
+ "concurrently": "^8.2.2",
40
+ "eslint": "^9.36.0",
41
+ "eslint-config-prettier": "^8.10.2",
42
42
  "husky": "^8.0.3",
43
- "lint-staged": "^13.2.0",
44
- "prettier": "^2.8.4",
45
- "typedoc": "^0.26.11",
46
- "typescript": "~5.6.3",
47
- "vitest": "^2.0.0",
43
+ "lint-staged": "^13.3.0",
44
+ "prettier": "^2.8.8",
45
+ "typedoc": "^0.28.13",
46
+ "typescript": "~5.9.2",
47
+ "vitest": "^2.1.9",
48
48
  "vitest-mock-extended": "^2.0.2"
49
49
  },
50
50
  "lint-staged": {
@@ -63,10 +63,9 @@
63
63
  "README.md",
64
64
  "scripts"
65
65
  ],
66
- "packageManager": "pnpm@8.9.2",
67
66
  "engines": {
68
67
  "npm": ">= 10.0.0",
69
- "pnpm": ">= 8.9.2",
68
+ "pnpm": ">= 10.17.0",
70
69
  "node": ">= 18.0.0"
71
70
  },
72
71
  "scripts": {
@@ -93,7 +93,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
93
93
  if (this.parentHasRenderTexture) {
94
94
  this.notifyParentRTTOfUpdate();
95
95
  }
96
-
97
96
  // ignore 1x1 pixel textures
98
97
  if (dimensions.w > 1 && dimensions.h > 1) {
99
98
  this.emit('loaded', {
@@ -101,13 +100,9 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
101
100
  dimensions,
102
101
  } satisfies NodeTextureLoadedPayload);
103
102
  }
104
-
105
103
  this.w = this._renderInfo.width;
106
104
  this.h = this._renderInfo.height;
107
-
108
- // Texture was loaded. In case the RAF loop has already stopped, we request
109
- // a render to ensure the texture is rendered.
110
- this.stage.requestRender();
105
+ this.setUpdateType(UpdateType.IsRenderable);
111
106
  };
112
107
 
113
108
  allowTextGeneration() {
@@ -134,7 +129,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
134
129
  this._waitingForFont = false;
135
130
  this._cachedLayout = null; // Invalidate cached layout
136
131
  this._lastVertexBuffer = null; // Invalidate last vertex buffer
137
- const resp = this.textRenderer.renderText(this.stage, this.textProps);
132
+ const resp = this.textRenderer.renderText(this.textProps);
138
133
  this.handleRenderResult(resp);
139
134
  this._layoutGenerated = true;
140
135
  } else if (this._waitingForFont === false) {
@@ -186,7 +181,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
186
181
  premultiplyAlpha: true,
187
182
  src: result.imageData as ImageData,
188
183
  });
189
-
190
184
  // It isn't renderable until the texture is loaded we have to set it to false here to avoid it
191
185
  // being detected as a renderable default color node in the next frame
192
186
  // it will be corrected once the texture is loaded
@@ -341,7 +335,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
341
335
  this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
342
336
  }
343
337
  this.textProps.fontFamily = value;
344
- this._layoutGenerated = true;
338
+ this._layoutGenerated = false;
345
339
  this.setUpdateType(UpdateType.Local);
346
340
  }
347
341
  }
@@ -353,7 +347,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
353
347
  set fontStyle(value: TrProps['fontStyle']) {
354
348
  if (this.textProps.fontStyle !== value) {
355
349
  this.textProps.fontStyle = value;
356
- this._layoutGenerated = true;
350
+ this._layoutGenerated = false;
357
351
  this.setUpdateType(UpdateType.Local);
358
352
  }
359
353
  }
@@ -406,18 +400,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
406
400
  }
407
401
  }
408
402
 
409
- get textBaseline(): TrProps['textBaseline'] {
410
- return this.textProps.textBaseline;
411
- }
412
-
413
- set textBaseline(value: TrProps['textBaseline']) {
414
- if (this.textProps.textBaseline !== value) {
415
- this.textProps.textBaseline = value;
416
- this._layoutGenerated = false;
417
- this.setUpdateType(UpdateType.Local);
418
- }
419
- }
420
-
421
403
  get verticalAlign(): TrProps['verticalAlign'] {
422
404
  return this.textProps.verticalAlign;
423
405
  }
package/src/core/Stage.ts CHANGED
@@ -678,10 +678,9 @@ export class Stage {
678
678
  textAlign: props.textAlign || 'left',
679
679
  offsetY: props.offsetY || 0,
680
680
  letterSpacing: props.letterSpacing || 0,
681
- lineHeight: props.lineHeight || 0,
681
+ lineHeight: props.lineHeight || 1.2,
682
682
  maxLines: props.maxLines || 0,
683
- textBaseline: props.textBaseline || 'alphabetic',
684
- verticalAlign: props.verticalAlign || 'middle',
683
+ verticalAlign: props.verticalAlign || 'top',
685
684
  overflowSuffix: props.overflowSuffix || '...',
686
685
  wordBreak: props.wordBreak || 'normal',
687
686
  maxWidth: props.maxWidth || 0,
@@ -18,14 +18,14 @@
18
18
  */
19
19
 
20
20
  import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
21
- import { getTimingFunction } from '../utils.js';
21
+ import { getTimingFunction, type TimingFunction } from '../utils.js';
22
22
  import { mergeColorProgress } from '../../utils.js';
23
23
  import { EventEmitter } from '../../common/EventEmitter.js';
24
24
 
25
25
  export interface AnimationSettings {
26
26
  duration: number;
27
27
  delay: number;
28
- easing: string;
28
+ easing: string | TimingFunction;
29
29
  loop: boolean;
30
30
  repeat: number;
31
31
  repeatDelay: number;
@@ -43,7 +43,7 @@ export class CoreAnimation extends EventEmitter {
43
43
  private progress = 0;
44
44
  private delayFor = 0;
45
45
  private delay = 0;
46
- private timingFunction: (t: number) => number | undefined;
46
+ private timingFunction: TimingFunction;
47
47
 
48
48
  propValuesMap: PropValuesMap = {};
49
49
 
@@ -92,7 +92,8 @@ export class CoreAnimation extends EventEmitter {
92
92
  repeatDelay: settings.repeatDelay ?? 0,
93
93
  stopMethod: settings.stopMethod ?? false,
94
94
  };
95
- this.timingFunction = getTimingFunction(easing);
95
+ this.timingFunction =
96
+ typeof easing === 'string' ? getTimingFunction(easing) : easing;
96
97
  this.delayFor = delay;
97
98
  this.delay = delay;
98
99
  }
@@ -162,14 +163,14 @@ export class CoreAnimation extends EventEmitter {
162
163
  }
163
164
 
164
165
  private applyEasing(p: number, s: number, e: number): number {
165
- return (this.timingFunction(p) || p) * (e - s) + s;
166
+ return this.timingFunction(p) * (e - s) + s;
166
167
  }
167
168
 
168
169
  updateValue(
169
170
  propName: string,
170
171
  propValue: number,
171
172
  startValue: number,
172
- easing: string | undefined,
173
+ easing: string | TimingFunction | undefined,
173
174
  ): number {
174
175
  if (this.progress === 1) {
175
176
  return propValue;
@@ -201,7 +202,7 @@ export class CoreAnimation extends EventEmitter {
201
202
  private updateValues(
202
203
  target: Record<string, number>,
203
204
  valueMap: Record<string, PropValues>,
204
- easing: string | undefined,
205
+ easing: string | TimingFunction | undefined,
205
206
  ) {
206
207
  const entries = Object.entries(valueMap);
207
208
  const eLength = entries.length;
@@ -114,7 +114,7 @@ const loadPVRData = async (buffer: ArrayBuffer): Promise<TextureData> => {
114
114
 
115
115
  const dataOffset = header[pvrMetadata] + 52;
116
116
  const pvrtcData = new Uint8Array(arrayBuffer, dataOffset);
117
- const mipmaps: Uint8Array[] = [];
117
+ const mipmaps: ArrayBuffer[] = [];
118
118
  const data = {
119
119
  pixelWidth: header[pvrWidth],
120
120
  pixelHeight: header[pvrHeight],
@@ -133,7 +133,9 @@ const loadPVRData = async (buffer: ArrayBuffer): Promise<TextureData> => {
133
133
  level,
134
134
  );
135
135
 
136
- mipmaps.push(view);
136
+ mipmaps.push(
137
+ view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength),
138
+ );
137
139
  offset += level;
138
140
  width = width >> 1;
139
141
  height = height >> 1;
@@ -62,7 +62,7 @@ export const RoundedWithBorder: CanvasShaderType<
62
62
  quad.width,
63
63
  quad.height,
64
64
  computed.radius,
65
- this.props!['border-width'] as Vec4,
65
+ this.props!['border-w'] as Vec4,
66
66
  computed.borderRadius,
67
67
  computed.borderColor,
68
68
  computed.borderAsym,
@@ -78,7 +78,7 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
78
78
  quad.width,
79
79
  quad.height,
80
80
  computed.radius,
81
- this.props!['border-width'] as Vec4,
81
+ this.props!['border-w'] as Vec4,
82
82
  computed.borderRadius,
83
83
  computed.borderColor,
84
84
  computed.borderAsym,
@@ -49,6 +49,8 @@ export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
49
49
  # endif
50
50
 
51
51
  #define PI 3.14159265359
52
+ #define MAX_STOPS ${props.colors.length}
53
+ #define LAST_STOP ${props.colors.length - 1}
52
54
 
53
55
  uniform float u_alpha;
54
56
  uniform vec2 u_dimensions;
@@ -56,8 +58,8 @@ export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
56
58
  uniform sampler2D u_texture;
57
59
 
58
60
  uniform float u_angle;
59
- uniform float u_stops[${props.stops.length}];
60
- uniform vec4 u_colors[${props.colors.length}];
61
+ uniform float u_stops[MAX_STOPS];
62
+ uniform vec4 u_colors[MAX_STOPS];
61
63
 
62
64
  varying vec4 v_color;
63
65
  varying vec2 v_textureCoords;
@@ -66,6 +68,27 @@ export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
66
68
  return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
67
69
  }
68
70
 
71
+ vec4 getGradientColor(float dist) {
72
+ dist = clamp(dist, 0.0, 1.0);
73
+
74
+ if(dist <= u_stops[0]) {
75
+ return u_colors[0];
76
+ }
77
+
78
+ if(dist >= u_stops[LAST_STOP]) {
79
+ return u_colors[LAST_STOP];
80
+ }
81
+
82
+ for(int i = 0; i < LAST_STOP; i++) {
83
+ float left = u_stops[i];
84
+ float right = u_stops[i + 1];
85
+ if(dist >= left && dist <= right) {
86
+ float lDist = smoothstep(left, right, dist);
87
+ return mix(u_colors[i], u_colors[i + 1], lDist);
88
+ }
89
+ }
90
+ }
91
+
69
92
  void main() {
70
93
  vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
71
94
  float a = u_angle;
@@ -74,7 +97,7 @@ export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
74
97
  vec2 t = calcPoint(lineDist * 0.5, a + PI);
75
98
  vec2 gradVec = t - f;
76
99
  float dist = dot(v_textureCoords.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
77
- ${genGradientColors(props.stops.length)}
100
+ vec4 colorOut = getGradientColor(dist);
78
101
  gl_FragColor = mix(color, colorOut, clamp(colorOut.a, 0.0, 1.0));
79
102
  }
80
103
  `;
@@ -21,9 +21,8 @@ import {
21
21
  RadialGradientTemplate,
22
22
  type RadialGradientProps,
23
23
  } from '../templates/RadialGradientTemplate.js';
24
- import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
25
- import type { WebGlRenderer } from '../../renderers/webgl/WebGlRenderer.js';
26
24
  import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
25
+ import type { WebGlRenderer } from '../../renderers/webgl/WebGlRenderer.js';
27
26
 
28
27
  export const RadialGradient: WebGlShaderType<RadialGradientProps> = {
29
28
  props: RadialGradientTemplate.props,
@@ -48,38 +47,61 @@ export const RadialGradient: WebGlShaderType<RadialGradientProps> = {
48
47
  },
49
48
  fragment(renderer: WebGlRenderer, props: RadialGradientProps) {
50
49
  return `
51
- # ifdef GL_FRAGMENT_PRECISION_HIGH
52
- precision highp float;
53
- # else
54
- precision mediump float;
55
- # endif
50
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
51
+ precision highp float;
52
+ # else
53
+ precision mediump float;
54
+ # endif
56
55
 
57
- #define PI 3.14159265359
56
+ #define MAX_STOPS ${props.colors.length}
57
+ #define LAST_STOP ${props.colors.length - 1}
58
58
 
59
- uniform float u_alpha;
60
- uniform vec2 u_dimensions;
59
+ uniform float u_alpha;
60
+ uniform vec2 u_dimensions;
61
61
 
62
- uniform sampler2D u_texture;
62
+ uniform sampler2D u_texture;
63
63
 
64
- uniform vec2 u_projection;
65
- uniform vec2 u_size;
66
- uniform float u_stops[${props.stops.length}];
67
- uniform vec4 u_colors[${props.colors.length}];
64
+ uniform vec2 u_projection;
65
+ uniform vec2 u_size;
66
+ uniform float u_stops[MAX_STOPS];
67
+ uniform vec4 u_colors[MAX_STOPS];
68
68
 
69
- varying vec4 v_color;
70
- varying vec2 v_textureCoords;
69
+ varying vec4 v_color;
70
+ varying vec2 v_textureCoords;
71
71
 
72
- vec2 calcPoint(float d, float angle) {
73
- return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
74
- }
72
+ vec2 calcPoint(float d, float angle) {
73
+ return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
74
+ }
75
75
 
76
- void main() {
77
- vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
78
- vec2 point = v_textureCoords.xy * u_dimensions;
79
- float dist = length((point - u_projection) / u_size);
80
- ${genGradientColors(props.stops.length)}
81
- gl_FragColor = mix(color, colorOut, clamp(colorOut.a, 0.0, 1.0));
82
- }
83
- `;
76
+ vec4 getGradientColor(float dist) {
77
+ dist = clamp(dist, 0.0, 1.0);
78
+
79
+ if(dist <= u_stops[0]) {
80
+ return u_colors[0];
81
+ }
82
+
83
+ if(dist >= u_stops[LAST_STOP]) {
84
+ return u_colors[LAST_STOP];
85
+ }
86
+
87
+ for(int i = 0; i < LAST_STOP; i++) {
88
+ float left = u_stops[i];
89
+ float right = u_stops[i + 1];
90
+ if(dist >= left && dist <= right) {
91
+ float lDist = smoothstep(left, right, dist);
92
+ return mix(u_colors[i], u_colors[i + 1], lDist);
93
+ }
94
+ }
95
+ }
96
+
97
+ void main() {
98
+ vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
99
+ vec2 point = v_textureCoords.xy * u_dimensions;
100
+ float dist = length((point - u_projection) / u_size);
101
+
102
+ vec4 colorOut = getGradientColor(dist);
103
+ gl_FragColor = mix(color, colorOut, clamp(colorOut.a, 0.0, 1.0));
104
+ }
105
+ `;
84
106
  },
85
107
  };
@@ -25,7 +25,6 @@ const IDENTITY_MATRIX_3x3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
25
25
  */
26
26
  export interface SdfShaderProps {
27
27
  transform: Float32Array;
28
- scrollY: number;
29
28
  /**
30
29
  * Color in RGBA format
31
30
  *
@@ -35,7 +34,6 @@ export interface SdfShaderProps {
35
34
  color: number;
36
35
  size: number;
37
36
  distanceRange: number;
38
- debug: boolean;
39
37
  }
40
38
  /**
41
39
  * SdfShader supports multi-channel and single-channel signed distance field textures.
@@ -53,19 +51,15 @@ export interface SdfShaderProps {
53
51
  export const Sdf: WebGlShaderType<SdfShaderProps> = {
54
52
  props: {
55
53
  transform: IDENTITY_MATRIX_3x3,
56
- scrollY: 0,
57
54
  color: 0xffffffff,
58
55
  size: 16,
59
56
  distanceRange: 1.0,
60
- debug: false,
61
57
  },
62
58
  onSdfBind(props) {
63
59
  this.uniformMatrix3fv('u_transform', props.transform);
64
- this.uniform1f('u_scrollY', props.scrollY);
65
60
  this.uniform4fa('u_color', getNormalizedRgbaComponents(props.color));
66
61
  this.uniform1f('u_size', props.size);
67
62
  this.uniform1f('u_distanceRange', props.distanceRange);
68
- this.uniform1i('u_debug', props.debug ? 1 : 0);
69
63
  },
70
64
  vertex: `
71
65
  # ifdef GL_FRAGMENT_PRECISION_HIGH
@@ -80,14 +74,13 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
80
74
 
81
75
  uniform vec2 u_resolution;
82
76
  uniform mat3 u_transform;
83
- uniform float u_scrollY;
84
77
  uniform float u_pixelRatio;
85
78
  uniform float u_size;
86
79
 
87
80
  varying vec2 v_texcoord;
88
81
 
89
82
  void main() {
90
- vec2 scrolledPosition = a_position * u_size - vec2(0, u_scrollY);
83
+ vec2 scrolledPosition = a_position * u_size;
91
84
  vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;
92
85
 
93
86
  // Calculate screen space with pixel ratio
@@ -118,10 +111,6 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
118
111
 
119
112
  void main() {
120
113
  vec3 sample = texture2D(u_texture, v_texcoord).rgb;
121
- if (u_debug == 1) {
122
- gl_FragColor = vec4(sample.r, sample.g, sample.b, 1.0);
123
- return;
124
- }
125
114
  float scaledDistRange = u_distanceRange * u_pixelRatio;
126
115
  float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
127
116
  float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;