@lightningjs/renderer 3.0.0-beta14 → 3.0.0-beta16

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 (283) 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 +1 -2
  5. package/dist/src/core/CoreTextNode.js +43 -21
  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 -3
  13. package/dist/src/core/animations/CoreAnimation.js +3 -3
  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 +69 -0
  46. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -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 +641 -0
  53. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  54. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
  55. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -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 +84 -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 +108 -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 +408 -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 +126 -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 +148 -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 +134 -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 +40 -0
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -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/CanvasFont.d.ts +14 -0
  129. package/dist/src/core/text-rendering/CanvasFont.js +111 -0
  130. package/dist/src/core/text-rendering/CanvasFont.js.map +1 -0
  131. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +21 -3
  132. package/dist/src/core/text-rendering/CanvasFontHandler.js +97 -32
  133. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  134. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -7
  135. package/dist/src/core/text-rendering/CanvasTextRenderer.js +51 -260
  136. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  137. package/dist/src/core/text-rendering/CoreFont.d.ts +33 -0
  138. package/dist/src/core/text-rendering/CoreFont.js +48 -0
  139. package/dist/src/core/text-rendering/CoreFont.js.map +1 -0
  140. package/dist/src/core/text-rendering/FontManager.d.ts +11 -0
  141. package/dist/src/core/text-rendering/FontManager.js +42 -0
  142. package/dist/src/core/text-rendering/FontManager.js.map +1 -0
  143. package/dist/src/core/text-rendering/SdfFont.d.ts +29 -0
  144. package/dist/src/core/text-rendering/SdfFont.js +142 -0
  145. package/dist/src/core/text-rendering/SdfFont.js.map +1 -0
  146. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +35 -5
  147. package/dist/src/core/text-rendering/SdfFontHandler.js +79 -56
  148. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  149. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +1 -1
  150. package/dist/src/core/text-rendering/SdfTextRenderer.js +38 -82
  151. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  152. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +19 -0
  153. package/dist/src/core/text-rendering/{sdf/Utils.js → TextLayoutEngine.js} +125 -107
  154. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  155. package/dist/src/core/text-rendering/TextRenderer.d.ts +30 -13
  156. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
  157. package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
  158. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
  159. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
  160. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
  161. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  162. package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
  163. package/dist/src/core/text-rendering/TrFontManager.js +131 -0
  164. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  165. package/dist/src/core/text-rendering/Utils.d.ts +1 -42
  166. package/dist/src/core/text-rendering/Utils.js +4 -132
  167. package/dist/src/core/text-rendering/Utils.js.map +1 -1
  168. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
  169. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
  170. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  171. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  172. package/dist/src/core/text-rendering/{sdf/index.js → font-face-types/SdfTrFontFace/internal/FontShaper.js} +4 -3
  173. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  174. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
  175. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
  176. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  177. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
  178. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
  179. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  180. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
  181. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
  182. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  183. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
  184. package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
  185. package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
  186. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
  187. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
  188. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  189. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
  190. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
  191. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
  193. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
  194. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  195. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  196. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  197. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  198. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  199. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  200. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  201. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  202. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
  206. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  207. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  208. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  210. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
  211. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
  212. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  213. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  214. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
  215. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  216. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
  217. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
  218. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
  219. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
  220. package/dist/src/core/text-rendering/{canvas/Settings.js → renderers/SdfTextRenderer/internal/util.js} +22 -3
  221. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
  222. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
  223. package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
  224. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  225. package/dist/src/core/utils.d.ts +2 -1
  226. package/dist/src/core/utils.js +1 -1
  227. package/dist/src/core/utils.js.map +1 -1
  228. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  229. package/dist/src/main-api/DynamicShaderController.js +58 -0
  230. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  231. package/dist/src/main-api/Inspector.d.ts +124 -0
  232. package/dist/src/main-api/Inspector.js +292 -13
  233. package/dist/src/main-api/Inspector.js.map +1 -1
  234. package/dist/src/main-api/Renderer.d.ts +150 -26
  235. package/dist/src/main-api/Renderer.js +27 -25
  236. package/dist/src/main-api/Renderer.js.map +1 -1
  237. package/dist/src/main-api/ShaderController.d.ts +31 -0
  238. package/dist/src/main-api/ShaderController.js +37 -0
  239. package/dist/src/main-api/ShaderController.js.map +1 -0
  240. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  241. package/exports/index.ts +1 -0
  242. package/package.json +14 -15
  243. package/src/core/CoreTextNode.ts +55 -27
  244. package/src/core/Stage.ts +2 -3
  245. package/src/core/animations/CoreAnimation.ts +8 -9
  246. package/src/core/lib/textureCompression.ts +4 -2
  247. package/src/core/shaders/canvas/RoundedWithBorder.ts +1 -1
  248. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +1 -1
  249. package/src/core/shaders/webgl/LinearGradient.ts +26 -3
  250. package/src/core/shaders/webgl/RadialGradient.ts +50 -28
  251. package/src/core/shaders/webgl/SdfShader.ts +1 -12
  252. package/src/core/text-rendering/CanvasFontHandler.ts +139 -39
  253. package/src/core/text-rendering/CanvasTextRenderer.ts +75 -440
  254. package/src/core/text-rendering/SdfFontHandler.ts +97 -60
  255. package/src/core/text-rendering/SdfTextRenderer.ts +62 -116
  256. package/src/core/text-rendering/{sdf/Utils.ts → TextLayoutEngine.ts} +211 -145
  257. package/src/core/text-rendering/TextRenderer.ts +36 -13
  258. package/src/core/text-rendering/Utils.ts +5 -163
  259. package/src/core/text-rendering/{sdf/Utils.test.ts → tests/Canvas.test.ts} +98 -122
  260. package/src/core/text-rendering/tests/SdfTests.test.ts +414 -0
  261. package/src/core/utils.ts +9 -7
  262. package/src/main-api/Inspector.ts +511 -17
  263. package/src/main-api/Renderer.ts +158 -26
  264. package/dist/src/core/text-rendering/canvas/Settings.d.ts +0 -64
  265. package/dist/src/core/text-rendering/canvas/Settings.js.map +0 -1
  266. package/dist/src/core/text-rendering/canvas/Utils.d.ts +0 -20
  267. package/dist/src/core/text-rendering/canvas/Utils.js +0 -144
  268. package/dist/src/core/text-rendering/canvas/Utils.js.map +0 -1
  269. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +0 -60
  270. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +0 -183
  271. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +0 -1
  272. package/dist/src/core/text-rendering/canvas/draw.d.ts +0 -5
  273. package/dist/src/core/text-rendering/canvas/draw.js +0 -132
  274. package/dist/src/core/text-rendering/canvas/draw.js.map +0 -1
  275. package/dist/src/core/text-rendering/sdf/Utils.d.ts +0 -26
  276. package/dist/src/core/text-rendering/sdf/Utils.js.map +0 -1
  277. package/dist/src/core/text-rendering/sdf/index.d.ts +0 -1
  278. package/dist/src/core/text-rendering/sdf/index.js.map +0 -1
  279. package/src/core/text-rendering/canvas/Settings.ts +0 -99
  280. package/src/core/text-rendering/canvas/Utils.test.ts +0 -206
  281. package/src/core/text-rendering/canvas/Utils.ts +0 -178
  282. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +0 -299
  283. 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-beta16",
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": {
@@ -39,6 +39,7 @@ import type {
39
39
  import type { RectWithValid } from './lib/utils.js';
40
40
  import type { CoreRenderer } from './renderers/CoreRenderer.js';
41
41
  import type { TextureLoadedEventHandler } from './textures/Texture.js';
42
+ import { Matrix3d } from './lib/Matrix3d.js';
42
43
  export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
43
44
  /**
44
45
  * Force Text Node to use a specific Text Renderer
@@ -93,7 +94,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
93
94
  if (this.parentHasRenderTexture) {
94
95
  this.notifyParentRTTOfUpdate();
95
96
  }
96
-
97
97
  // ignore 1x1 pixel textures
98
98
  if (dimensions.w > 1 && dimensions.h > 1) {
99
99
  this.emit('loaded', {
@@ -101,13 +101,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
101
101
  dimensions,
102
102
  } satisfies NodeTextureLoadedPayload);
103
103
  }
104
-
105
- this.w = this._renderInfo.width;
106
- 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();
104
+ this.setUpdateType(UpdateType.IsRenderable);
111
105
  };
112
106
 
113
107
  allowTextGeneration() {
@@ -121,6 +115,52 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
121
115
  return false;
122
116
  }
123
117
 
118
+ override updateLocalTransform() {
119
+ const p = this.props;
120
+ let { x, y, w, h } = p;
121
+ const mountTranslateX = p.mountX * w;
122
+ const mountTranslateY = p.mountY * h;
123
+
124
+ const tProps = this.textProps;
125
+ const { textAlign, verticalAlign, maxWidth, maxHeight } = tProps;
126
+
127
+ if (textAlign !== 'left' && maxWidth > 0) {
128
+ if (textAlign === 'right') {
129
+ x += maxWidth - w;
130
+ } else if (textAlign === 'center') {
131
+ x += (maxWidth - w) * 0.5;
132
+ }
133
+ }
134
+
135
+ if (verticalAlign !== 'top' && maxHeight > 0) {
136
+ if (verticalAlign === 'bottom') {
137
+ y += maxHeight - h;
138
+ } else if (verticalAlign === 'middle') {
139
+ y += (maxHeight - h) * 0.5;
140
+ }
141
+ }
142
+
143
+ if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
144
+ const scaleRotate = Matrix3d.rotate(p.rotation).scale(p.scaleX, p.scaleY);
145
+ const pivotTranslateX = p.pivotX * w;
146
+ const pivotTranslateY = p.pivotY * h;
147
+
148
+ this.localTransform = Matrix3d.translate(
149
+ x - mountTranslateX + pivotTranslateX,
150
+ y - mountTranslateY + pivotTranslateY,
151
+ this.localTransform,
152
+ )
153
+ .multiply(scaleRotate)
154
+ .translate(-pivotTranslateX, -pivotTranslateY);
155
+ } else {
156
+ this.localTransform = Matrix3d.translate(
157
+ x - mountTranslateX,
158
+ y - mountTranslateY,
159
+ this.localTransform,
160
+ );
161
+ }
162
+ }
163
+
124
164
  /**
125
165
  * Override CoreNode's update method to handle text-specific updates
126
166
  */
@@ -134,7 +174,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
134
174
  this._waitingForFont = false;
135
175
  this._cachedLayout = null; // Invalidate cached layout
136
176
  this._lastVertexBuffer = null; // Invalidate last vertex buffer
137
- const resp = this.textRenderer.renderText(this.stage, this.textProps);
177
+ const resp = this.textRenderer.renderText(this.textProps);
138
178
  this.handleRenderResult(resp);
139
179
  this._layoutGenerated = true;
140
180
  } else if (this._waitingForFont === false) {
@@ -186,7 +226,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
186
226
  premultiplyAlpha: true,
187
227
  src: result.imageData as ImageData,
188
228
  });
189
-
190
229
  // It isn't renderable until the texture is loaded we have to set it to false here to avoid it
191
230
  // being detected as a renderable default color node in the next frame
192
231
  // it will be corrected once the texture is loaded
@@ -198,12 +237,13 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
198
237
  }
199
238
  }
200
239
 
240
+ this._cachedLayout = result.layout || null;
241
+ this.props.w = width;
242
+ this.props.h = height;
243
+
201
244
  // Handle SDF renderer (uses layout caching)
202
245
  if (textRendererType === 'sdf') {
203
- this._cachedLayout = result.layout || null;
204
246
  this.setRenderable(true);
205
- this.props.w = width;
206
- this.props.h = height;
207
247
  this.setUpdateType(UpdateType.Local);
208
248
  }
209
249
 
@@ -341,7 +381,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
341
381
  this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
342
382
  }
343
383
  this.textProps.fontFamily = value;
344
- this._layoutGenerated = true;
384
+ this._layoutGenerated = false;
345
385
  this.setUpdateType(UpdateType.Local);
346
386
  }
347
387
  }
@@ -353,7 +393,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
353
393
  set fontStyle(value: TrProps['fontStyle']) {
354
394
  if (this.textProps.fontStyle !== value) {
355
395
  this.textProps.fontStyle = value;
356
- this._layoutGenerated = true;
396
+ this._layoutGenerated = false;
357
397
  this.setUpdateType(UpdateType.Local);
358
398
  }
359
399
  }
@@ -406,18 +446,6 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
406
446
  }
407
447
  }
408
448
 
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
449
  get verticalAlign(): TrProps['verticalAlign'] {
422
450
  return this.textProps.verticalAlign;
423
451
  }
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,17 +18,16 @@
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
- repeatDelay: number;
32
31
  stopMethod: 'reverse' | 'reset' | false;
33
32
  }
34
33
 
@@ -43,7 +42,7 @@ export class CoreAnimation extends EventEmitter {
43
42
  private progress = 0;
44
43
  private delayFor = 0;
45
44
  private delay = 0;
46
- private timingFunction: (t: number) => number | undefined;
45
+ private timingFunction: TimingFunction;
47
46
 
48
47
  propValuesMap: PropValuesMap = {};
49
48
 
@@ -89,10 +88,10 @@ export class CoreAnimation extends EventEmitter {
89
88
  easing,
90
89
  loop: settings.loop ?? false,
91
90
  repeat: settings.repeat ?? 0,
92
- repeatDelay: settings.repeatDelay ?? 0,
93
91
  stopMethod: settings.stopMethod ?? false,
94
92
  };
95
- this.timingFunction = getTimingFunction(easing);
93
+ this.timingFunction =
94
+ typeof easing === 'string' ? getTimingFunction(easing) : easing;
96
95
  this.delayFor = delay;
97
96
  this.delay = delay;
98
97
  }
@@ -162,14 +161,14 @@ export class CoreAnimation extends EventEmitter {
162
161
  }
163
162
 
164
163
  private applyEasing(p: number, s: number, e: number): number {
165
- return (this.timingFunction(p) || p) * (e - s) + s;
164
+ return this.timingFunction(p) * (e - s) + s;
166
165
  }
167
166
 
168
167
  updateValue(
169
168
  propName: string,
170
169
  propValue: number,
171
170
  startValue: number,
172
- easing: string | undefined,
171
+ easing: string | TimingFunction | undefined,
173
172
  ): number {
174
173
  if (this.progress === 1) {
175
174
  return propValue;
@@ -201,7 +200,7 @@ export class CoreAnimation extends EventEmitter {
201
200
  private updateValues(
202
201
  target: Record<string, number>,
203
202
  valueMap: Record<string, PropValues>,
204
- easing: string | undefined,
203
+ easing: string | TimingFunction | undefined,
205
204
  ) {
206
205
  const entries = Object.entries(valueMap);
207
206
  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;