@lightningjs/renderer 0.9.4 → 1.0.0-rc.0

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 (289) hide show
  1. package/README.md +0 -82
  2. package/dist/exports/index.d.ts +40 -3
  3. package/dist/exports/index.js +35 -3
  4. package/dist/exports/index.js.map +1 -1
  5. package/dist/src/core/CoreNode.d.ts +462 -46
  6. package/dist/src/core/CoreNode.js +171 -103
  7. package/dist/src/core/CoreNode.js.map +1 -1
  8. package/dist/src/core/CoreShaderManager.d.ts +16 -6
  9. package/dist/src/core/CoreShaderManager.js +20 -20
  10. package/dist/src/core/CoreShaderManager.js.map +1 -1
  11. package/dist/src/core/CoreTextNode.d.ts +30 -4
  12. package/dist/src/core/CoreTextNode.js +24 -1
  13. package/dist/src/core/CoreTextNode.js.map +1 -1
  14. package/dist/src/core/CoreTextureManager.d.ts +31 -82
  15. package/dist/src/core/CoreTextureManager.js +39 -126
  16. package/dist/src/core/CoreTextureManager.js.map +1 -1
  17. package/dist/src/core/Stage.d.ts +67 -9
  18. package/dist/src/core/Stage.js +174 -30
  19. package/dist/src/core/Stage.js.map +1 -1
  20. package/dist/src/core/TextureMemoryManager.d.ts +97 -8
  21. package/dist/src/core/TextureMemoryManager.js +142 -19
  22. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  23. package/dist/src/core/animations/CoreAnimation.d.ts +14 -6
  24. package/dist/src/core/animations/CoreAnimation.js +136 -44
  25. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  26. package/dist/src/core/lib/ImageWorker.js +59 -52
  27. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  28. package/dist/src/core/lib/utils.js.map +1 -1
  29. package/dist/src/core/platform.js +7 -1
  30. package/dist/src/core/platform.js.map +1 -1
  31. package/dist/src/core/renderers/CoreContextTexture.d.ts +3 -2
  32. package/dist/src/core/renderers/CoreContextTexture.js +7 -1
  33. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  34. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -1
  35. package/dist/src/core/renderers/CoreRenderer.js +0 -1
  36. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  37. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +3 -0
  38. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +16 -1
  39. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  40. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -1
  41. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +2 -5
  42. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  43. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +2 -2
  44. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  45. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -1
  46. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -10
  47. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  48. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +3 -0
  49. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +47 -9
  50. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  51. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +24 -8
  52. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +70 -37
  53. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  54. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +2 -2
  55. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -1
  56. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +2 -2
  57. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -1
  58. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +2 -2
  59. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -1
  60. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +2 -2
  61. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -1
  62. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +2 -2
  63. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -1
  64. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +8 -0
  65. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +103 -0
  66. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -1
  67. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +3 -18
  68. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -1
  69. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +5 -2
  70. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -1
  71. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +4 -36
  72. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -1
  73. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +3 -2
  74. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  75. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +4 -2
  76. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  77. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +2 -1
  78. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -1
  79. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +4 -36
  80. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +11 -0
  82. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
  83. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +5 -2
  84. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  85. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -1
  86. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -1
  87. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -1
  88. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -1
  89. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
  90. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +10 -26
  91. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +116 -365
  92. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  93. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -1
  94. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -2
  95. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  96. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +2 -2
  97. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  98. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +2 -0
  99. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  100. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +3 -2
  101. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  102. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  103. package/dist/src/core/textures/ColorTexture.js +1 -1
  104. package/dist/src/core/textures/ImageTexture.d.ts +1 -1
  105. package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
  106. package/dist/src/core/textures/NoiseTexture.js +3 -0
  107. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  108. package/dist/src/core/textures/SubTexture.d.ts +2 -2
  109. package/dist/src/core/textures/SubTexture.js +5 -1
  110. package/dist/src/core/textures/SubTexture.js.map +1 -1
  111. package/dist/src/core/textures/Texture.d.ts +23 -2
  112. package/dist/src/core/textures/Texture.js +32 -3
  113. package/dist/src/core/textures/Texture.js.map +1 -1
  114. package/dist/src/core/utils.d.ts +7 -0
  115. package/dist/src/core/utils.js +12 -10
  116. package/dist/src/core/utils.js.map +1 -1
  117. package/dist/src/main-api/DynamicShaderController.d.ts +3 -9
  118. package/dist/src/main-api/DynamicShaderController.js +18 -17
  119. package/dist/src/main-api/DynamicShaderController.js.map +1 -1
  120. package/dist/src/main-api/INode.d.ts +43 -463
  121. package/dist/src/main-api/INode.js +1 -19
  122. package/dist/src/main-api/INode.js.map +1 -1
  123. package/dist/src/main-api/Inspector.d.ts +10 -10
  124. package/dist/src/main-api/Inspector.js +18 -15
  125. package/dist/src/main-api/Inspector.js.map +1 -1
  126. package/dist/src/main-api/Renderer.d.ts +27 -21
  127. package/dist/src/main-api/Renderer.js +38 -107
  128. package/dist/src/main-api/Renderer.js.map +1 -1
  129. package/dist/src/main-api/ShaderController.d.ts +3 -8
  130. package/dist/src/main-api/ShaderController.js +8 -3
  131. package/dist/src/main-api/ShaderController.js.map +1 -1
  132. package/dist/src/utils.d.ts +1 -0
  133. package/dist/src/utils.js +7 -0
  134. package/dist/src/utils.js.map +1 -1
  135. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  136. package/exports/index.ts +60 -3
  137. package/package.json +8 -7
  138. package/src/core/CoreNode.test.ts +93 -0
  139. package/src/core/CoreNode.ts +675 -187
  140. package/src/core/CoreShaderManager.ts +56 -29
  141. package/src/core/CoreTextNode.ts +41 -9
  142. package/src/core/CoreTextureManager.ts +55 -175
  143. package/src/core/Stage.ts +199 -43
  144. package/src/core/TextureMemoryManager.ts +231 -22
  145. package/src/core/animations/CoreAnimation.ts +193 -68
  146. package/src/core/lib/ImageWorker.ts +79 -52
  147. package/src/core/lib/utils.ts +1 -0
  148. package/src/core/platform.ts +8 -1
  149. package/src/core/renderers/CoreContextTexture.ts +9 -2
  150. package/src/core/renderers/CoreRenderer.ts +5 -2
  151. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +20 -1
  152. package/src/core/renderers/canvas/CanvasCoreTexture.ts +2 -6
  153. package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +2 -2
  154. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +7 -11
  155. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +51 -9
  156. package/src/core/renderers/webgl/shaders/DynamicShader.ts +114 -55
  157. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +2 -2
  158. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +2 -2
  159. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +2 -2
  160. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +2 -2
  161. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +2 -2
  162. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +129 -3
  163. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +7 -15
  164. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +5 -2
  165. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +6 -15
  166. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +6 -2
  167. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +10 -2
  168. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +2 -1
  169. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +6 -15
  170. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +20 -0
  171. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +14 -15
  172. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -2
  173. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -1
  174. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +139 -447
  175. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -3
  176. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -2
  177. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +4 -2
  178. package/src/core/text-rendering/renderers/TextRenderer.ts +3 -2
  179. package/src/core/textures/ColorTexture.ts +1 -1
  180. package/src/core/textures/ImageTexture.ts +1 -1
  181. package/src/core/textures/NoiseTexture.ts +4 -1
  182. package/src/core/textures/SubTexture.ts +7 -7
  183. package/src/core/textures/Texture.ts +46 -3
  184. package/src/core/utils.ts +12 -11
  185. package/src/main-api/DynamicShaderController.ts +97 -0
  186. package/src/main-api/INode.ts +56 -479
  187. package/src/main-api/Inspector.ts +37 -39
  188. package/src/main-api/Renderer.ts +543 -0
  189. package/src/main-api/ShaderController.ts +81 -0
  190. package/src/main-api/utils.ts +45 -0
  191. package/src/utils.ts +8 -0
  192. package/dist/exports/core-api.d.ts +0 -74
  193. package/dist/exports/core-api.js +0 -96
  194. package/dist/exports/core-api.js.map +0 -1
  195. package/dist/exports/main-api.d.ts +0 -30
  196. package/dist/exports/main-api.js +0 -45
  197. package/dist/exports/main-api.js.map +0 -1
  198. package/dist/src/core/CoreExtension.d.ts +0 -12
  199. package/dist/src/core/CoreExtension.js +0 -29
  200. package/dist/src/core/CoreExtension.js.map +0 -1
  201. package/dist/src/core/renderers/SpecificNode.d.ts +0 -1
  202. package/dist/src/core/renderers/SpecificNode.js +0 -19
  203. package/dist/src/core/renderers/SpecificNode.js.map +0 -1
  204. package/dist/src/core/renderers/webgl/newShader/effectsMock.d.ts +0 -13
  205. package/dist/src/core/renderers/webgl/newShader/effectsMock.js +0 -62
  206. package/dist/src/core/renderers/webgl/newShader/effectsMock.js.map +0 -1
  207. package/dist/src/main-api/ICoreDriver.d.ts +0 -24
  208. package/dist/src/main-api/ICoreDriver.js +0 -20
  209. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  210. package/dist/src/main-api/RendererMain.d.ts +0 -378
  211. package/dist/src/main-api/RendererMain.js +0 -367
  212. package/dist/src/main-api/RendererMain.js.map +0 -1
  213. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  214. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  215. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  216. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  217. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  218. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  219. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  220. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  221. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  222. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -21
  223. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -115
  224. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  225. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -101
  226. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -425
  227. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  228. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  229. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -204
  230. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  231. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -93
  232. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -290
  233. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  234. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -40
  235. package/dist/src/render-drivers/threadx/SharedNode.js +0 -61
  236. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  237. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  238. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -203
  239. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  240. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -25
  241. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -232
  242. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  243. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -24
  244. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -113
  245. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  246. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -46
  247. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -160
  248. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  249. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  250. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  251. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  252. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  253. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  254. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  255. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  256. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -184
  257. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  258. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  259. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -109
  260. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  261. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  262. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -147
  263. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  264. package/dist/src/render-drivers/utils.d.ts +0 -12
  265. package/dist/src/render-drivers/utils.js +0 -74
  266. package/dist/src/render-drivers/utils.js.map +0 -1
  267. package/exports/core-api.ts +0 -102
  268. package/exports/main-api.ts +0 -62
  269. package/src/core/CoreExtension.ts +0 -32
  270. package/src/main-api/ICoreDriver.ts +0 -68
  271. package/src/main-api/RendererMain.ts +0 -685
  272. package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +0 -45
  273. package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +0 -154
  274. package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +0 -54
  275. package/src/render-drivers/main/MainCoreDriver.ts +0 -159
  276. package/src/render-drivers/main/MainOnlyNode.ts +0 -553
  277. package/src/render-drivers/main/MainOnlyTextNode.ts +0 -261
  278. package/src/render-drivers/threadx/NodeStruct.ts +0 -320
  279. package/src/render-drivers/threadx/SharedNode.ts +0 -101
  280. package/src/render-drivers/threadx/TextNodeStruct.ts +0 -213
  281. package/src/render-drivers/threadx/ThreadXCoreDriver.ts +0 -291
  282. package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +0 -135
  283. package/src/render-drivers/threadx/ThreadXMainNode.ts +0 -201
  284. package/src/render-drivers/threadx/ThreadXMainTextNode.ts +0 -85
  285. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +0 -112
  286. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +0 -253
  287. package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +0 -151
  288. package/src/render-drivers/threadx/worker/renderer.ts +0 -156
  289. package/src/render-drivers/utils.ts +0 -102
@@ -16,10 +16,15 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import {
20
+ updateFloat32ArrayLength4,
21
+ validateArrayLength4,
22
+ } from './EffectUtils.js';
19
23
  import {
20
24
  ShaderEffect,
21
25
  type DefaultEffectProps,
22
26
  type ShaderEffectUniforms,
27
+ type ShaderEffectValueMap,
23
28
  } from './ShaderEffect.js';
24
29
 
25
30
  /**
@@ -63,21 +68,8 @@ export class FadeOutEffect extends ShaderEffect {
63
68
  value: 0,
64
69
  method: 'uniform4fv',
65
70
  type: 'vec4',
66
- validator: (value: number | number[]) => {
67
- let r = value;
68
- if (Array.isArray(r)) {
69
- if (r.length === 2) {
70
- r = [r[0], r[1], r[0], r[1]] as number[];
71
- } else if (r.length === 3) {
72
- r = [r[0], r[1], r[2], r[0]] as number[];
73
- } else if (r.length !== 4) {
74
- r = [r[0], r[0], r[0], r[0]] as number[];
75
- }
76
- } else if (typeof r === 'number') {
77
- r = [r, r, r, r];
78
- }
79
- return r;
80
- },
71
+ validator: validateArrayLength4,
72
+ updateProgramValue: updateFloat32ArrayLength4,
81
73
  },
82
74
  };
83
75
 
@@ -84,8 +84,11 @@ export class GlitchEffect extends ShaderEffect {
84
84
  time: {
85
85
  value: 0,
86
86
  method: 'uniform1f',
87
- validator: (value: number) => {
88
- return (Date.now() - value) % 1000;
87
+ updateOnBind: true,
88
+ updateProgramValue: (values) => {
89
+ const value = (values.value =
90
+ (Date.now() - (values.value as number)) % 1000);
91
+ values.programValue = value;
89
92
  },
90
93
  type: 'float',
91
94
  },
@@ -16,10 +16,13 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import type { DynamicShaderProps } from '../DynamicShader.js';
20
+ import { updateWebSafeRadius, validateArrayLength4 } from './EffectUtils.js';
19
21
  import {
20
22
  ShaderEffect,
21
23
  type DefaultEffectProps,
22
24
  type ShaderEffectUniforms,
25
+ type ShaderEffectValueMap,
23
26
  } from './ShaderEffect.js';
24
27
 
25
28
  /**
@@ -103,21 +106,9 @@ export class HolePunchEffect extends ShaderEffect {
103
106
  value: 0,
104
107
  method: 'uniform4fv',
105
108
  type: 'vec4',
106
- validator: (value: number | number[]) => {
107
- let r = value;
108
- if (Array.isArray(r)) {
109
- if (r.length === 2) {
110
- r = [r[0], r[1], r[0], r[1]] as number[];
111
- } else if (r.length === 3) {
112
- r = [r[0], r[1], r[2], r[0]] as number[];
113
- } else if (r.length !== 4) {
114
- r = [r[0], r[0], r[0], r[0]] as number[];
115
- }
116
- } else if (typeof r === 'number') {
117
- r = [r, r, r, r];
118
- }
119
- return r;
120
- },
109
+ updateOnBind: true,
110
+ validator: validateArrayLength4,
111
+ updateProgramValue: updateWebSafeRadius,
121
112
  },
122
113
  };
123
114
 
@@ -17,6 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { getNormalizedRgbaComponents } from '../../../../lib/utils.js';
20
+ import { updateFloat32ArrayLengthN } from './EffectUtils.js';
20
21
  import {
21
22
  type DefaultEffectProps,
22
23
  ShaderEffect,
@@ -94,9 +95,12 @@ export class LinearGradientEffect extends ShaderEffect {
94
95
  colors: {
95
96
  value: 0xffffffff,
96
97
  validator: (rgbas: number[]): number[] => {
97
- const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));
98
- return cols.reduce((acc, val) => acc.concat(val), [] as number[]);
98
+ return rgbas.reduce(
99
+ (acc, val) => acc.concat(getNormalizedRgbaComponents(val)),
100
+ [] as number[],
101
+ );
99
102
  },
103
+ updateProgramValue: updateFloat32ArrayLengthN,
100
104
  size: (props: LinearGradientEffectProps) => props.colors!.length,
101
105
  method: 'uniform4fv',
102
106
  type: 'vec4',
@@ -17,6 +17,10 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { getNormalizedRgbaComponents } from '../../../../lib/utils.js';
20
+ import {
21
+ updateFloat32ArrayLength2,
22
+ updateFloat32ArrayLengthN,
23
+ } from './EffectUtils.js';
20
24
  import {
21
25
  type DefaultEffectProps,
22
26
  ShaderEffect,
@@ -105,15 +109,19 @@ export class RadialGradientEffect extends ShaderEffect {
105
109
  },
106
110
  pivot: {
107
111
  value: [0.5, 0.5],
112
+ updateProgramValue: updateFloat32ArrayLength2,
108
113
  method: 'uniform2fv',
109
114
  type: 'vec2',
110
115
  },
111
116
  colors: {
112
117
  value: 0xffffffff,
113
118
  validator: (rgbas: number[]): number[] => {
114
- const cols = rgbas.map((rgbas) => getNormalizedRgbaComponents(rgbas));
115
- return cols.reduce((acc, val) => acc.concat(val), [] as number[]);
119
+ return rgbas.reduce(
120
+ (acc, val) => acc.concat(getNormalizedRgbaComponents(val)),
121
+ [] as number[],
122
+ );
116
123
  },
124
+ updateProgramValue: updateFloat32ArrayLengthN,
117
125
  size: (props: RadialGradientEffectProps) => props.colors!.length,
118
126
  method: 'uniform4fv',
119
127
  type: 'vec4',
@@ -17,6 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  import { getNormalizedRgbaComponents } from '../../../../lib/utils.js';
20
+ import { updateShaderEffectColor } from './EffectUtils.js';
20
21
  import {
21
22
  ShaderEffect,
22
23
  type DefaultEffectProps,
@@ -132,7 +133,7 @@ export class RadialProgressEffect extends ShaderEffect {
132
133
  },
133
134
  color: {
134
135
  value: 0xffffffff,
135
- validator: (rgba): number[] => getNormalizedRgbaComponents(rgba),
136
+ updateProgramValue: updateShaderEffectColor,
136
137
  method: 'uniform4fv',
137
138
  type: 'vec4',
138
139
  },
@@ -16,10 +16,13 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
+ import type { DynamicShaderProps } from '../DynamicShader.js';
20
+ import { updateWebSafeRadius, validateArrayLength4 } from './EffectUtils.js';
19
21
  import {
20
22
  ShaderEffect,
21
23
  type DefaultEffectProps,
22
24
  type ShaderEffectUniforms,
25
+ type ShaderEffectValueMap,
23
26
  } from './ShaderEffect.js';
24
27
 
25
28
  /**
@@ -65,21 +68,9 @@ export class RadiusEffect extends ShaderEffect {
65
68
  value: 0,
66
69
  method: 'uniform4fv',
67
70
  type: 'vec4',
68
- validator: (value: number | number[]) => {
69
- let r = value;
70
- if (Array.isArray(r)) {
71
- if (r.length === 2) {
72
- r = [r[0], r[1], r[0], r[1]] as number[];
73
- } else if (r.length === 3) {
74
- r = [r[0], r[1], r[2], r[0]] as number[];
75
- } else if (r.length !== 4) {
76
- r = [r[0], r[0], r[0], r[0]] as number[];
77
- }
78
- } else if (typeof r === 'number') {
79
- r = [r, r, r, r];
80
- }
81
- return r;
82
- },
71
+ updateOnBind: true,
72
+ validator: validateArrayLength4,
73
+ updateProgramValue: updateWebSafeRadius,
83
74
  },
84
75
  };
85
76
 
@@ -1,3 +1,7 @@
1
+ import type {
2
+ AlphaShaderProp,
3
+ DimensionsShaderProp,
4
+ } from '../../WebGlCoreShader.js';
1
5
  import type {
2
6
  UniformInfo,
3
7
  UniformMethodMap,
@@ -9,12 +13,28 @@ export interface ShaderEffectUniform {
9
13
  method: keyof UniformMethodMap;
10
14
  name?: string;
11
15
  size?: (value: Record<string, unknown>) => number;
16
+ updateOnBind?: boolean;
17
+ updateProgramValue?: (
18
+ programValues: ShaderEffectValueMap,
19
+ shaderProps?: Record<string, unknown>,
20
+ ) => void;
12
21
  validator?: (
13
22
  value: any,
14
23
  props: Record<string, unknown>,
15
24
  ) => number | number[] | number[][];
16
25
  }
17
26
 
27
+ export interface ShaderEffectValueMap
28
+ extends DimensionsShaderProp,
29
+ AlphaShaderProp {
30
+ value: ShaderEffectUniform['value'];
31
+ programValue: number | Float32Array | undefined;
32
+ hasValidator: boolean;
33
+ hasProgramValueUpdater: boolean;
34
+ updateOnBind: boolean;
35
+ validatedValue?: number | number[];
36
+ }
37
+
18
38
  export interface ShaderEffectUniforms {
19
39
  [key: string]: ShaderEffectUniform;
20
40
  }
@@ -25,7 +25,6 @@ import { ImageTexture } from '../../../textures/ImageTexture.js';
25
25
  import {
26
26
  TrFontFace,
27
27
  type NormalizedFontMetrics,
28
- type TrFontFaceDescriptors,
29
28
  type TrFontFaceOptions,
30
29
  } from '../TrFontFace.js';
31
30
  import type { FontShaper } from './internal/FontShaper.js';
@@ -77,25 +76,25 @@ export class SdfTrFontFace<
77
76
  'SDF Font Faces can only be used with the WebGL Renderer',
78
77
  );
79
78
 
80
- this.texture = stage.txManager.loadTexture(
81
- 'ImageTexture',
82
- {
83
- src: atlasUrl,
84
- // IMPORTANT: The SDF shader requires the alpha channel to NOT be
85
- // premultiplied on the atlas texture. If it is premultiplied, the
86
- // rendering of SDF glyphs (especially single-channel SDF fonts) will
87
- // be very jagged.
88
- premultiplyAlpha: false,
89
- },
90
- {
91
- preload: true,
92
- },
93
- );
79
+ // Load image
80
+ this.texture = stage.txManager.loadTexture('ImageTexture', {
81
+ src: atlasUrl,
82
+ // IMPORTANT: The SDF shader requires the alpha channel to NOT be
83
+ // premultiplied on the atlas texture. If it is premultiplied, the
84
+ // rendering of SDF glyphs (especially single-channel SDF fonts) will
85
+ // be very jagged.
86
+ premultiplyAlpha: false,
87
+ });
94
88
 
95
89
  this.texture.on('loaded', () => {
96
90
  this.checkLoaded();
91
+ // Make sure we mark the stage for a re-render (in case the font's texture was freed and reloaded)
92
+ stage.requestRender();
97
93
  });
98
94
 
95
+ // Pre-load it
96
+ this.texture.ctxTexture.load();
97
+
99
98
  // Set this.data to the fetched data from dataUrl
100
99
  fetch(atlasDataUrl)
101
100
  .then(async (response) => {
@@ -61,7 +61,6 @@ export interface TrFontFaceDescriptors {
61
61
  unicodeRange?: string;
62
62
  display?: FontDisplay;
63
63
  featureSettings?: string;
64
- variant?: string;
65
64
  }
66
65
 
67
66
  export interface FontMetrics {
@@ -182,7 +181,6 @@ export class TrFontFace extends EventEmitter {
182
181
  : descriptors.weight,
183
182
  stretch: descriptors.stretch,
184
183
  unicodeRange: descriptors.unicodeRange,
185
- variant: descriptors.variant,
186
184
  featureSettings: descriptors.featureSettings,
187
185
  display: descriptors.display,
188
186
  };
@@ -57,7 +57,6 @@ export class WebTrFontFace extends TrFontFace {
57
57
  : determinedDescriptors.weight,
58
58
  stretch: determinedDescriptors.stretch,
59
59
  unicodeRange: determinedDescriptors.unicodeRange,
60
- variant: determinedDescriptors.variant,
61
60
  featureSettings: determinedDescriptors.featureSettings,
62
61
  display: determinedDescriptors.display,
63
62
  };