@lightningjs/renderer 2.12.1 → 3.0.0-beta1

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 (323) hide show
  1. package/dist/exports/canvas-shaders.d.ts +10 -0
  2. package/dist/exports/canvas-shaders.js +27 -0
  3. package/dist/exports/canvas-shaders.js.map +1 -0
  4. package/dist/exports/canvas.d.ts +7 -1
  5. package/dist/exports/canvas.js +7 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +15 -8
  8. package/dist/exports/index.js +7 -4
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/webgl-shaders.d.ts +11 -0
  11. package/dist/exports/webgl-shaders.js +28 -0
  12. package/dist/exports/webgl-shaders.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +9 -1
  14. package/dist/exports/webgl.js +9 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/core/CoreNode.d.ts +19 -5
  17. package/dist/src/core/CoreNode.js +117 -24
  18. package/dist/src/core/CoreNode.js.map +1 -1
  19. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  20. package/dist/src/core/CoreShaderManager.js +110 -97
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreTextNode.js +1 -1
  23. package/dist/src/core/CoreTextNode.js.map +1 -1
  24. package/dist/src/core/CoreTextureManager.d.ts +13 -7
  25. package/dist/src/core/CoreTextureManager.js +92 -105
  26. package/dist/src/core/CoreTextureManager.js.map +1 -1
  27. package/dist/src/core/Stage.d.ts +15 -16
  28. package/dist/src/core/Stage.js +45 -32
  29. package/dist/src/core/Stage.js.map +1 -1
  30. package/dist/src/core/TextureMemoryManager.d.ts +16 -6
  31. package/dist/src/core/TextureMemoryManager.js +75 -17
  32. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  33. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  34. package/dist/src/core/animations/CoreAnimation.js +6 -52
  35. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  36. package/dist/src/core/lib/ImageWorker.d.ts +1 -1
  37. package/dist/src/core/lib/ImageWorker.js +13 -11
  38. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  39. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  40. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  41. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  42. package/dist/src/core/lib/textureCompression.js +0 -1
  43. package/dist/src/core/lib/textureCompression.js.map +1 -1
  44. package/dist/src/core/lib/utils.d.ts +4 -0
  45. package/dist/src/core/lib/utils.js +26 -0
  46. package/dist/src/core/lib/utils.js.map +1 -1
  47. package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
  48. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  49. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  50. package/dist/src/core/platform.js +4 -3
  51. package/dist/src/core/platform.js.map +1 -1
  52. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  53. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  54. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  55. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  56. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  57. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  58. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  59. package/{src/core/renderers/CoreShader.ts → dist/src/core/renderers/CoreShaderProgram.js} +2 -23
  60. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  61. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  62. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  63. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  64. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  65. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  66. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  67. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  68. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  69. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  70. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  71. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  72. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  74. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  75. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  76. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -12
  77. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  79. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  80. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  82. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  83. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  85. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  86. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  89. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  90. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  91. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  92. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  93. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  94. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  95. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  96. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  97. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  98. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  99. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  100. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  101. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  102. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  103. package/dist/src/core/shaders/canvas/Border.js +57 -0
  104. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  105. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  106. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  107. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  108. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  109. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  110. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  111. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  112. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  113. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  114. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  115. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  116. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  117. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  118. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  119. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  120. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  121. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  122. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  123. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  124. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  125. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  126. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  127. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  128. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  129. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  130. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  131. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  132. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  133. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  134. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  135. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  136. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  137. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  138. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  139. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  140. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  141. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  142. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  143. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  144. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  145. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  146. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  147. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  148. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  149. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  150. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  151. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  152. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  153. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  154. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  155. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  156. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  157. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  158. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  159. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  160. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  161. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  162. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  163. package/dist/src/core/shaders/webgl/Border.js +87 -0
  164. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  165. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  166. package/dist/src/core/shaders/webgl/Default.js +86 -0
  167. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  168. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  169. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  170. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  171. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  172. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  173. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  174. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  175. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  176. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  177. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  178. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  179. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  180. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  181. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  182. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  183. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  184. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  185. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  186. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  187. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  188. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  189. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  190. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  191. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  192. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  193. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  194. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  195. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  196. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  197. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  198. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  199. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  200. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  201. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  202. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  206. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  207. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  208. package/dist/src/core/textures/ImageTexture.js +10 -16
  209. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  210. package/dist/src/core/textures/Texture.d.ts +1 -1
  211. package/dist/src/main-api/INode.d.ts +9 -9
  212. package/dist/src/main-api/Inspector.js +16 -2
  213. package/dist/src/main-api/Inspector.js.map +1 -1
  214. package/dist/src/main-api/Renderer.d.ts +35 -92
  215. package/dist/src/main-api/Renderer.js +11 -57
  216. package/dist/src/main-api/Renderer.js.map +1 -1
  217. package/dist/src/utils.d.ts +6 -0
  218. package/dist/src/utils.js +18 -0
  219. package/dist/src/utils.js.map +1 -1
  220. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  221. package/exports/canvas-shaders.ts +28 -0
  222. package/exports/canvas.ts +7 -1
  223. package/exports/index.ts +17 -17
  224. package/exports/webgl-shaders.ts +28 -0
  225. package/exports/webgl.ts +13 -1
  226. package/package.json +3 -1
  227. package/src/core/CoreNode.test.ts +157 -153
  228. package/src/core/CoreNode.ts +173 -38
  229. package/src/core/CoreShaderManager.ts +127 -226
  230. package/src/core/CoreTextNode.ts +1 -8
  231. package/src/core/CoreTextureManager.ts +127 -126
  232. package/src/core/Stage.ts +62 -44
  233. package/src/core/TextureMemoryManager.ts +108 -27
  234. package/src/core/animations/CoreAnimation.ts +8 -64
  235. package/src/core/lib/ImageWorker.ts +20 -12
  236. package/src/core/lib/WebGlContextWrapper.ts +228 -236
  237. package/src/core/lib/textureCompression.ts +3 -3
  238. package/src/core/lib/utils.ts +51 -0
  239. package/src/core/lib/validateImageBitmap.ts +76 -0
  240. package/src/core/platform.ts +6 -3
  241. package/src/core/renderers/CoreRenderer.ts +19 -27
  242. package/src/core/renderers/CoreShaderNode.ts +171 -0
  243. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
  244. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  245. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  246. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +1 -1
  247. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
  248. package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
  249. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
  250. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
  251. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +12 -14
  252. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +56 -36
  253. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +143 -243
  254. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  255. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  256. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
  257. package/src/core/shaders/canvas/Border.ts +78 -0
  258. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  259. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  260. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  261. package/src/core/shaders/canvas/Rounded.ts +55 -0
  262. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  263. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  264. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  265. package/src/core/shaders/canvas/Shadow.ts +52 -0
  266. package/src/core/shaders/canvas/utils/render.ts +151 -0
  267. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  268. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  269. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  270. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  271. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  272. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  273. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  274. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  275. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  276. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  277. package/src/core/shaders/webgl/Border.ts +96 -0
  278. package/src/core/shaders/webgl/Default.ts +89 -0
  279. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  280. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  281. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  282. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  283. package/src/core/shaders/webgl/Rounded.ts +117 -0
  284. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  285. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  286. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  287. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  288. package/src/core/shaders/webgl/Shadow.ts +115 -0
  289. package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
  290. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
  291. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
  292. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -56
  293. package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
  294. package/src/core/textures/ImageTexture.ts +11 -17
  295. package/src/core/textures/Texture.ts +1 -1
  296. package/src/main-api/INode.ts +11 -13
  297. package/src/main-api/Inspector.ts +19 -2
  298. package/src/main-api/Renderer.ts +59 -130
  299. package/src/utils.ts +19 -0
  300. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  301. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  302. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  303. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  304. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  305. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  306. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  307. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  308. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  309. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  310. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  311. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  312. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  313. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  314. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  315. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  316. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  317. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  318. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  319. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  320. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  321. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  322. package/src/main-api/DynamicShaderController.ts +0 -104
  323. package/src/main-api/ShaderController.ts +0 -80
@@ -0,0 +1,115 @@
1
+ /*
2
+ * Copyright 2023 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+
18
+ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
19
+ import {
20
+ ShadowTemplate,
21
+ type ShadowProps,
22
+ } from '../templates/ShadowTemplate.js';
23
+
24
+ export const Shadow: WebGlShaderType<ShadowProps> = {
25
+ props: ShadowTemplate.props,
26
+ update() {
27
+ this.uniformRGBA('u_color', this.props!.color);
28
+ this.uniform4fa('u_shadow', this.props!.projection);
29
+ },
30
+ vertex: `
31
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
32
+ precision highp float;
33
+ # else
34
+ precision mediump float;
35
+ # endif
36
+
37
+ attribute vec2 a_position;
38
+ attribute vec2 a_textureCoords;
39
+ attribute vec4 a_color;
40
+ attribute vec2 a_nodeCoords;
41
+
42
+ uniform vec2 u_resolution;
43
+ uniform float u_pixelRatio;
44
+ uniform float u_rtt;
45
+ uniform vec2 u_dimensions;
46
+
47
+ uniform vec4 u_shadow;
48
+
49
+ varying vec4 v_color;
50
+ varying vec2 v_textureCoords;
51
+ varying vec2 v_nodeCoords;
52
+
53
+ void main() {
54
+ vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
55
+ vec2 outerEdge = clamp(a_nodeCoords * 2.0 - vec2(1.0), -1.0, 1.0);
56
+
57
+ vec2 shadowEdge = outerEdge * ((u_shadow.w * 2.0)+ u_shadow.z) + u_shadow.xy;
58
+ vec2 normVertexPos = a_position * u_pixelRatio;
59
+
60
+ vec2 vertexPos = (a_position + outerEdge + shadowEdge) * u_pixelRatio;
61
+ gl_Position = vec4(vertexPos.x * screenSpace.x - 1.0, -sign(screenSpace.y) * (vertexPos.y * -abs(screenSpace.y)) + 1.0, 0.0, 1.0);
62
+
63
+ v_color = a_color;
64
+ v_nodeCoords = a_nodeCoords + (screenSpace + shadowEdge) / (u_dimensions);
65
+ v_textureCoords = a_textureCoords + (screenSpace + shadowEdge) / (u_dimensions);
66
+ }
67
+ `,
68
+ fragment: `
69
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
70
+ precision highp float;
71
+ # else
72
+ precision mediump float;
73
+ # endif
74
+
75
+ uniform vec2 u_resolution;
76
+ uniform float u_pixelRatio;
77
+ uniform float u_alpha;
78
+ uniform vec2 u_dimensions;
79
+ uniform sampler2D u_texture;
80
+
81
+ uniform vec4 u_color;
82
+ uniform vec4 u_shadow;
83
+
84
+ varying vec4 v_color;
85
+ varying vec2 v_textureCoords;
86
+ varying vec2 v_nodeCoords;
87
+
88
+ float box(vec2 p, vec2 s) {
89
+ vec2 q = abs(p) - s;
90
+ return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0))) + 2.0;
91
+ }
92
+
93
+ float shadowBox(vec2 p, vec2 s, float r) {
94
+ vec2 q = abs(p) - s + r;
95
+ float dist = min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - r;
96
+ return 1.0 - smoothstep(-u_shadow.w, u_shadow.w + u_shadow.z, dist);
97
+ }
98
+
99
+ void main() {
100
+ vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
101
+ vec2 halfDimensions = (u_dimensions * 0.5);
102
+
103
+ vec2 boxUv = v_nodeCoords.xy * u_dimensions - halfDimensions;
104
+ float boxDist = box(boxUv, halfDimensions);
105
+
106
+ float boxAlpha = 1.0 - smoothstep(0.0, u_pixelRatio, boxDist);
107
+ float shadowDist = shadowBox(boxUv - u_shadow.xy, halfDimensions + u_shadow.w, u_shadow.z);
108
+
109
+ vec4 resColor = vec4(0.0);
110
+ resColor = mix(resColor, u_color, shadowDist);
111
+ resColor = mix(resColor, color, min(color.a, boxAlpha));
112
+ gl_FragColor = resColor * u_alpha;
113
+ }
114
+ `,
115
+ };
@@ -43,7 +43,7 @@ export function getFontSetting(
43
43
  ff = [ff];
44
44
  }
45
45
 
46
- const ffs = [];
46
+ const ffs: string[] = [];
47
47
  for (let i = 0, n = ff.length; i < n; i++) {
48
48
  let curFf = ff[i];
49
49
  // Replace the default font face `null` with the actual default font face set
@@ -20,7 +20,7 @@
20
20
  // import type { Renderer } from '../../../Renderer';
21
21
  import { assertTruthy } from '../../../../utils.js';
22
22
  import type { Stage } from '../../../Stage.js';
23
- import { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';
23
+ import { WebGlRenderer } from '../../../renderers/webgl/WebGlRenderer.js';
24
24
  import { ImageTexture } from '../../../textures/ImageTexture.js';
25
25
  import {
26
26
  TrFontFace,
@@ -73,7 +73,7 @@ export class SdfTrFontFace<
73
73
  this.type = type;
74
74
  const renderer = stage.renderer;
75
75
  assertTruthy(
76
- renderer instanceof WebGlCoreRenderer,
76
+ renderer instanceof WebGlRenderer,
77
77
  'SDF Font Faces can only be used with the WebGL Renderer',
78
78
  );
79
79
 
@@ -137,6 +137,13 @@ export interface RenderInfo {
137
137
  metrics: NormalizedFontMetrics;
138
138
  }
139
139
 
140
+ export interface LineType {
141
+ text: string;
142
+ x: number;
143
+ y: number;
144
+ w: number;
145
+ }
146
+
140
147
  /**
141
148
  * Calculate height for the canvas
142
149
  *
@@ -199,10 +206,10 @@ export class LightningTextTextureRenderer {
199
206
  _getFontSetting() {
200
207
  const ff = [this._settings.fontFamily];
201
208
 
202
- const ffs = [];
209
+ const ffs: string[] = [];
203
210
  for (let i = 0, n = ff.length; i < n; i++) {
204
211
  if (ff[i] === 'serif' || ff[i] === 'sans-serif') {
205
- ffs.push(ff[i]);
212
+ ffs.push(ff[i]!);
206
213
  } else {
207
214
  ffs.push(`"${ff[i]!}"`);
208
215
  }
@@ -339,7 +346,7 @@ export class LightningTextTextureRenderer {
339
346
  if (calcMaxLines && lines.length > calcMaxLines) {
340
347
  const usedLines = lines.slice(0, calcMaxLines);
341
348
 
342
- let otherLines = null;
349
+ let otherLines: string[] | null = null;
343
350
  if (this._settings.overflowSuffix) {
344
351
  // Wrap again with max lines suffix enabled.
345
352
  const w = this._settings.overflowSuffix
@@ -354,7 +361,7 @@ export class LightningTextTextureRenderer {
354
361
  usedLines[usedLines.length - 1] = `${al.l[0]!}${
355
362
  this._settings.overflowSuffix
356
363
  }`;
357
- otherLines = [al.l.length > 1 ? al.l[1] : ''];
364
+ otherLines = [al.l.length > 1 ? al.l[1]! : ''];
358
365
  } else {
359
366
  otherLines = [''];
360
367
  }
@@ -515,7 +522,7 @@ export class LightningTextTextureRenderer {
515
522
  let linePositionX;
516
523
  let linePositionY;
517
524
 
518
- const drawLines = [];
525
+ const drawLines: LineType[] = [];
519
526
 
520
527
  const { metrics } = renderInfo;
521
528
 
@@ -44,21 +44,21 @@ import {
44
44
  type SdfRenderWindow,
45
45
  } from './internal/setRenderWindow.js';
46
46
  import type { TrFontFace } from '../../font-face-types/TrFontFace.js';
47
- import { TrFontManager, type FontFamilyMap } from '../../TrFontManager.js';
47
+ import { type FontFamilyMap } from '../../TrFontManager.js';
48
48
  import { assertTruthy, mergeColorAlpha } from '../../../../utils.js';
49
49
  import type { Stage } from '../../../Stage.js';
50
- import { WebGlCoreRenderOp } from '../../../renderers/webgl/WebGlCoreRenderOp.js';
50
+ import { WebGlRenderOp } from '../../../renderers/webgl/WebGlRenderOp.js';
51
51
  import { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';
52
- import type {
53
- SdfShader,
54
- SdfShaderProps,
55
- } from '../../../renderers/webgl/shaders/SdfShader.js';
56
- import type { WebGlCoreCtxTexture } from '../../../renderers/webgl/WebGlCoreCtxTexture.js';
52
+ import { Sdf, type SdfShaderProps } from '../../../shaders/webgl/SdfShader.js';
53
+ import type { WebGlCtxTexture } from '../../../renderers/webgl/WebGlCtxTexture.js';
57
54
  import { EventEmitter } from '../../../../common/EventEmitter.js';
58
55
  import type { Matrix3d } from '../../../lib/Matrix3d.js';
59
56
  import type { Dimensions } from '../../../../common/CommonTypes.js';
60
- import { WebGlCoreRenderer } from '../../../renderers/webgl/WebGlCoreRenderer.js';
57
+ import { WebGlRenderer } from '../../../renderers/webgl/WebGlRenderer.js';
61
58
  import { calcDefaultLineHeight } from '../../TextRenderingUtils.js';
59
+ import type { WebGlShaderProgram } from '../../../renderers/webgl/WebGlShaderProgram.js';
60
+ import type { WebGlShaderNode } from '../../../renderers/webgl/WebGlShaderNode.js';
61
+ import type { CoreTextNode } from '../../../CoreTextNode.js';
62
62
 
63
63
  declare module '../TextRenderer.js' {
64
64
  interface TextRendererMap {
@@ -139,21 +139,17 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
139
139
  this.ssdfFontFamilies,
140
140
  this.msdfFontFamilies,
141
141
  ];
142
- private sdfShader: SdfShader;
142
+ private sdfShader: WebGlShaderNode;
143
143
  private rendererBounds: Bound;
144
144
 
145
145
  public type: 'canvas' | 'sdf' = 'sdf';
146
146
 
147
147
  constructor(stage: Stage) {
148
148
  super(stage);
149
- this.sdfShader = this.stage.shManager.loadShader('SdfShader', {
150
- transform: new Float32Array(),
151
- color: 0,
152
- size: 0,
153
- scrollY: 0,
154
- distanceRange: 0,
155
- debug: false,
156
- }).shader;
149
+ this.stage.shManager.registerShaderType('Sdf', Sdf);
150
+ this.sdfShader = this.stage.shManager.createShader(
151
+ 'Sdf',
152
+ ) as WebGlShaderNode;
157
153
  this.rendererBounds = {
158
154
  x1: 0,
159
155
  y1: 0,
@@ -601,21 +597,15 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
601
597
  this.setStatus(state, 'loaded');
602
598
  }
603
599
 
604
- override renderQuads(
605
- state: SdfTextRendererState,
606
- transform: Matrix3d,
607
- clippingRect: Readonly<RectWithValid>,
608
- alpha: number,
609
- parentHasRenderTexture: boolean,
610
- framebufferDimensions: Dimensions,
611
- ): void {
600
+ override renderQuads(node: CoreTextNode): void {
601
+ const state = node.trState as SdfTextRendererState;
612
602
  if (!state.vertexBuffer) {
613
603
  // Nothing to draw
614
604
  return;
615
605
  }
616
606
 
617
607
  const renderer = this.stage.renderer;
618
- assertTruthy(renderer instanceof WebGlCoreRenderer);
608
+ assertTruthy(renderer instanceof WebGlRenderer);
619
609
 
620
610
  const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;
621
611
 
@@ -651,8 +641,8 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
651
641
  stride, // 0 = move forward size * sizeof(type) each iteration to get the next position
652
642
  offset: 0, // start at the beginning of the buffer
653
643
  },
654
- a_textureCoordinate: {
655
- name: 'a_textureCoordinate',
644
+ a_textureCoords: {
645
+ name: 'a_textureCoords',
656
646
  size: 2,
657
647
  type: glw.FLOAT,
658
648
  normalized: false,
@@ -670,7 +660,7 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
670
660
  if (!bufferUploaded) {
671
661
  const glw = renderer.glw;
672
662
 
673
- const buffer = webGlBuffers?.getBuffer('a_textureCoordinate') ?? null;
663
+ const buffer = webGlBuffers?.getBuffer('a_textureCoords') ?? null;
674
664
  glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);
675
665
  state.bufferUploaded = true;
676
666
  }
@@ -680,50 +670,48 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
680
670
  assertTruthy(elementBounds.valid);
681
671
  const elementRect = convertBoundToRect(elementBounds, tmpRect);
682
672
 
683
- if (clippingRect.valid) {
673
+ if (node.clippingRect.valid) {
684
674
  state.clippingRect.valid = true;
685
- clippingRect = intersectRect(
686
- clippingRect,
675
+ node.clippingRect = intersectRect(
676
+ node.clippingRect,
687
677
  elementRect,
688
678
  state.clippingRect,
689
679
  );
690
680
  } else {
691
681
  state.clippingRect.valid = true;
692
- clippingRect = copyRect(elementRect, state.clippingRect);
682
+ node.clippingRect = copyRect(elementRect, state.clippingRect);
693
683
  }
694
684
  }
695
685
 
696
- const renderOp = new WebGlCoreRenderOp(
697
- renderer.glw,
698
- renderer.options,
699
- webGlBuffers,
700
- this.sdfShader,
686
+ const renderOp = new WebGlRenderOp(
687
+ renderer,
701
688
  {
702
- transform: transform.getFloatArr(),
703
- // IMPORTANT: The SDF Shader expects the color NOT to be premultiplied
704
- // for the best blending results. Which is why we use `mergeColorAlpha`
705
- // instead of `mergeColorAlphaPremultiplied` here.
706
- color: mergeColorAlpha(color, alpha),
707
- size: fontSize / (trFontFace.data?.info.size || 0),
708
- scrollY,
709
- distanceRange,
710
- debug: debug.sdfShaderDebug,
711
- } satisfies SdfShaderProps,
712
- alpha,
713
- clippingRect,
714
- { height: textH, width: textW },
689
+ sdfShaderProps: {
690
+ transform: node.globalTransform!.getFloatArr(),
691
+ color: mergeColorAlpha(color, node.worldAlpha),
692
+ size: fontSize / (trFontFace.data?.info.size || 0),
693
+ scrollY,
694
+ distanceRange,
695
+ debug: debug.sdfShaderDebug,
696
+ },
697
+ sdfBuffers: state.webGlBuffers as BufferCollection,
698
+ shader: this.sdfShader,
699
+ alpha: node.worldAlpha,
700
+ clippingRect: node.clippingRect,
701
+ height: textH,
702
+ width: textW,
703
+ rtt: false,
704
+ parentHasRenderTexture: node.parentHasRenderTexture,
705
+ framebufferDimensions: node.framebufferDimensions,
706
+ },
715
707
  0,
716
- zIndex,
717
- false,
718
- parentHasRenderTexture,
719
- framebufferDimensions,
720
708
  );
721
709
 
722
710
  const texture = state.trFontFace?.texture;
723
711
  assertTruthy(texture);
724
712
  const ctxTexture = texture.ctxTexture;
725
713
 
726
- renderOp.addTexture(ctxTexture as WebGlCoreCtxTexture);
714
+ renderOp.addTexture(ctxTexture as WebGlCtxTexture);
727
715
  renderOp.length = state.bufferNumFloats;
728
716
  renderOp.numQuads = state.bufferNumQuads;
729
717
 
@@ -44,7 +44,7 @@ import type {
44
44
  * }
45
45
  * ```
46
46
  */
47
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
47
+
48
48
  export interface TextRendererMap {}
49
49
 
50
50
  export interface TextRendererState {
@@ -546,12 +546,5 @@ export abstract class TextRenderer<
546
546
 
547
547
  abstract updateState(state: StateT): void;
548
548
 
549
- renderQuads?(
550
- state: StateT,
551
- transform: Matrix3d,
552
- clippingRect: RectWithValid,
553
- alpha: number,
554
- parentHasRenderTexture: boolean,
555
- framebufferDimensions: Dimensions | undefined,
556
- ): void;
549
+ renderQuads?(node: CoreTextNode): void;
557
550
  }
@@ -170,29 +170,15 @@ export class ImageTexture extends Texture {
170
170
  const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
171
171
  const imageBitmapSupported = this.txManager.imageBitmapSupported;
172
172
 
173
- if (
174
- imageBitmapSupported.full === true &&
175
- sx !== null &&
176
- sy !== null &&
177
- sw !== null &&
178
- sh !== null
179
- ) {
173
+ if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
180
174
  // createImageBitmap with crop
181
- const bitmap = await createImageBitmap(blob, sx, sy, sw, sh, {
175
+ const bitmap = await createImageBitmap(blob, sx || 0, sy || 0, sw, sh, {
182
176
  premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
183
177
  colorSpaceConversion: 'none',
184
178
  imageOrientation: 'none',
185
179
  });
186
180
  return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
187
- } else if (imageBitmapSupported.options === true) {
188
- // createImageBitmap without crop but with options
189
- const bitmap = await createImageBitmap(blob, {
190
- premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
191
- colorSpaceConversion: 'none',
192
- imageOrientation: 'none',
193
- });
194
- return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
195
- } else {
181
+ } else if (imageBitmapSupported.basic === true) {
196
182
  // basic createImageBitmap without options or crop
197
183
  // this is supported for Chrome v50 to v52/54 that doesn't support options
198
184
  return {
@@ -200,6 +186,14 @@ export class ImageTexture extends Texture {
200
186
  premultiplyAlpha: hasAlphaChannel,
201
187
  };
202
188
  }
189
+
190
+ // default createImageBitmap without crop but with options
191
+ const bitmap = await createImageBitmap(blob, {
192
+ premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
193
+ colorSpaceConversion: 'none',
194
+ imageOrientation: 'none',
195
+ });
196
+ return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
203
197
  }
204
198
 
205
199
  async loadImage(src: string) {
@@ -331,7 +331,7 @@ export abstract class Texture extends EventEmitter {
331
331
  static resolveDefaults(
332
332
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
333
333
  props: unknown,
334
- ): Record<string, unknown> {
334
+ ): Record<string, any> {
335
335
  return {};
336
336
  }
337
337
  }
@@ -24,7 +24,7 @@ import {
24
24
  } from '../core/CoreNode.js';
25
25
  import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
26
26
  import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
27
- import type { BaseShaderController } from './ShaderController.js';
27
+ import type { CoreShaderNode } from '../core/renderers/CoreShaderNode.js';
28
28
 
29
29
  /**
30
30
  * A visual Node in the Renderer scene graph.
@@ -44,11 +44,11 @@ import type { BaseShaderController } from './ShaderController.js';
44
44
  * Users of the Renderer API, should generally interact with INode objects
45
45
  * instead of CoreNode objects.
46
46
  */
47
- export interface INode<SC extends BaseShaderController = BaseShaderController>
47
+ export interface INode<ShaderNode extends CoreShaderNode = CoreShaderNode>
48
48
  extends Omit<CoreNode, 'shader' | 'animate' | 'parent'> {
49
- shader: SC;
49
+ shader: ShaderNode;
50
50
  animate(
51
- props: Partial<INodeAnimateProps<SC>>,
51
+ props: Partial<INodeAnimateProps<ShaderNode>>,
52
52
  settings: Partial<AnimationSettings>,
53
53
  ): IAnimationController;
54
54
  parent: INode | null;
@@ -57,19 +57,17 @@ export interface INode<SC extends BaseShaderController = BaseShaderController>
57
57
  /**
58
58
  * Properties used to animate() a Node
59
59
  */
60
- export interface INodeAnimateProps<
61
- SC extends BaseShaderController = BaseShaderController,
62
- > extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
63
- shaderProps: Partial<SC['props']>;
60
+ export interface INodeAnimateProps<ShNode extends CoreShaderNode>
61
+ extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
62
+ shaderProps: Partial<ShNode['props']>;
64
63
  }
65
64
 
66
65
  /**
67
66
  * Properties used to create a new Node
68
67
  */
69
- export interface INodeProps<
70
- SC extends BaseShaderController = BaseShaderController,
71
- > extends Omit<CoreNodeProps, 'shader' | 'parent'> {
72
- shader: SC;
68
+ export interface INodeProps<ShNode extends CoreShaderNode>
69
+ extends Omit<CoreNodeProps, 'shader' | 'parent'> {
70
+ shader: ShNode;
73
71
  parent: INode | null;
74
72
  }
75
73
 
@@ -87,7 +85,7 @@ export interface INodeProps<
87
85
  */
88
86
  export interface ITextNode extends Omit<CoreTextNode, 'animate' | 'parent'> {
89
87
  animate(
90
- props: Partial<INodeAnimateProps<BaseShaderController>>,
88
+ props: Partial<INodeAnimateProps<CoreShaderNode>>,
91
89
  settings: Partial<AnimationSettings>,
92
90
  ): IAnimationController;
93
91
  parent: INode | null;
@@ -62,13 +62,25 @@ const stylePropertyMap: {
62
62
 
63
63
  return { prop: 'height', value: `${h}px` };
64
64
  },
65
+ fontSize: (fs) => {
66
+ if (fs === 0) {
67
+ return null;
68
+ }
69
+
70
+ return { prop: 'font-size', value: `${fs}px` };
71
+ },
72
+ lineHeight: (lh) => {
73
+ if (lh === 0) {
74
+ return null;
75
+ }
76
+
77
+ return { prop: 'line-height', value: `${lh}px` };
78
+ },
65
79
  zIndex: () => 'z-index',
66
80
  fontFamily: () => 'font-family',
67
- fontSize: () => 'font-size',
68
81
  fontStyle: () => 'font-style',
69
82
  fontWeight: () => 'font-weight',
70
83
  fontStretch: () => 'font-stretch',
71
- lineHeight: () => 'line-height',
72
84
  letterSpacing: () => 'letter-spacing',
73
85
  textAlign: () => 'text-align',
74
86
  overflowSuffix: () => 'overflow-suffix',
@@ -396,6 +408,11 @@ export class Inspector {
396
408
  // return;
397
409
  // }
398
410
 
411
+ if (property === 'rtt' && value) {
412
+ div.setAttribute('data-rtt', String(value));
413
+ return;
414
+ }
415
+
399
416
  // CSS mappable attribute
400
417
  if (stylePropertyMap[property]) {
401
418
  const mappedStyleResponse = stylePropertyMap[property]?.(value);