@lightningjs/renderer 0.7.5 → 0.8.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 (252) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +233 -221
  4. package/dist/src/common/CommonTypes.d.ts +12 -0
  5. package/dist/src/core/CoreNode.d.ts +83 -9
  6. package/dist/src/core/CoreNode.js +232 -44
  7. package/dist/src/core/CoreNode.js.map +1 -1
  8. package/dist/src/core/CoreTextNode.d.ts +6 -1
  9. package/dist/src/core/CoreTextNode.js +33 -20
  10. package/dist/src/core/CoreTextNode.js.map +1 -1
  11. package/dist/src/core/CoreTextureManager.d.ts +3 -1
  12. package/dist/src/core/CoreTextureManager.js +11 -2
  13. package/dist/src/core/CoreTextureManager.js.map +1 -1
  14. package/dist/src/core/Stage.d.ts +6 -0
  15. package/dist/src/core/Stage.js +16 -1
  16. package/dist/src/core/Stage.js.map +1 -1
  17. package/dist/src/core/TextureMemoryManager.d.ts +12 -0
  18. package/dist/src/core/TextureMemoryManager.js +42 -0
  19. package/dist/src/core/TextureMemoryManager.js.map +1 -0
  20. package/dist/src/core/lib/ImageWorker.d.ts +0 -1
  21. package/dist/src/core/lib/ImageWorker.js +55 -40
  22. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  23. package/dist/src/core/lib/RenderCoords.d.ts +13 -0
  24. package/dist/src/core/lib/RenderCoords.js +63 -0
  25. package/dist/src/core/lib/RenderCoords.js.map +1 -0
  26. package/dist/src/core/lib/WebGlContext.d.ts +414 -0
  27. package/dist/src/core/lib/WebGlContext.js +640 -0
  28. package/dist/src/core/lib/WebGlContext.js.map +1 -0
  29. package/dist/src/core/lib/utils.d.ts +1 -0
  30. package/dist/src/core/lib/utils.js +6 -0
  31. package/dist/src/core/lib/utils.js.map +1 -1
  32. package/dist/src/core/platform.js +8 -0
  33. package/dist/src/core/platform.js.map +1 -1
  34. package/dist/src/core/renderers/CoreContextTexture.d.ts +5 -1
  35. package/dist/src/core/renderers/CoreContextTexture.js +3 -1
  36. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  37. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +2 -1
  38. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +2 -2
  39. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -1
  40. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +3 -1
  41. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +26 -6
  42. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  43. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +3 -0
  44. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +4 -2
  45. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  46. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +9 -0
  47. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +14 -0
  48. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  49. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +47 -47
  50. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  51. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  52. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  53. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +49 -49
  54. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  55. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +5 -5
  56. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  57. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  58. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  59. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  60. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  61. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  62. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +44 -57
  63. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  64. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  65. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +33 -39
  66. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  67. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  68. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  69. package/dist/src/core/scene/Scene.d.ts +59 -0
  70. package/dist/src/core/scene/Scene.js +106 -0
  71. package/dist/src/core/scene/Scene.js.map +1 -0
  72. package/dist/src/core/text-rendering/TrFontManager.js +30 -25
  73. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -1
  74. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +2 -0
  75. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +26 -2
  76. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  77. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +8 -0
  78. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -6
  79. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  80. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.d.ts +8 -0
  81. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js +29 -0
  82. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js.map +1 -0
  83. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +1 -3
  84. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  85. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.d.ts +19 -0
  86. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js +84 -0
  87. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js.map +1 -0
  88. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts +8 -0
  89. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js +40 -0
  90. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js.map +1 -0
  91. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.d.ts +2 -0
  92. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js +41 -0
  93. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js.map +1 -0
  94. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts +1 -0
  95. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js +4 -0
  96. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map +1 -0
  97. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.d.ts +1 -0
  98. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js +2 -0
  99. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js.map +1 -0
  100. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  101. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  102. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  103. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts +9 -0
  104. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js +32 -0
  105. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map +1 -0
  106. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +31 -0
  107. package/dist/src/core/text-rendering/renderers/TextRenderer.js +26 -0
  108. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  109. package/dist/src/core/textures/ImageTexture.js +16 -2
  110. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  111. package/dist/src/core/textures/Texture.d.ts +27 -2
  112. package/dist/src/core/textures/Texture.js +30 -1
  113. package/dist/src/core/textures/Texture.js.map +1 -1
  114. package/dist/src/core/utils.d.ts +1 -1
  115. package/dist/src/main-api/ICoreDriver.d.ts +1 -0
  116. package/dist/src/main-api/Inspector.js +2 -1
  117. package/dist/src/main-api/Inspector.js.map +1 -1
  118. package/dist/src/main-api/RendererMain.d.ts +15 -0
  119. package/dist/src/main-api/RendererMain.js +7 -1
  120. package/dist/src/main-api/RendererMain.js.map +1 -1
  121. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +1 -0
  122. package/dist/src/render-drivers/main/MainCoreDriver.js +8 -0
  123. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  124. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +5 -0
  125. package/dist/src/render-drivers/main/MainOnlyNode.js +26 -0
  126. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  127. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +2 -0
  128. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  129. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +2 -0
  130. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
  131. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +3 -0
  132. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
  133. package/dist/src/render-drivers/threadx/worker/renderer.js +2 -0
  134. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  135. package/dist/src/utils.d.ts +6 -0
  136. package/dist/src/utils.js +9 -1
  137. package/dist/src/utils.js.map +1 -1
  138. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  139. package/exports/core-api.ts +102 -102
  140. package/exports/main-api.ts +60 -60
  141. package/exports/utils.ts +41 -41
  142. package/package.json +1 -1
  143. package/scripts/please-use-pnpm.js +13 -13
  144. package/src/common/CommonTypes.ts +132 -113
  145. package/src/common/EventEmitter.ts +77 -77
  146. package/src/common/IAnimationController.ts +29 -29
  147. package/src/core/CoreExtension.ts +32 -32
  148. package/src/core/CoreNode.ts +1199 -955
  149. package/src/core/CoreShaderManager.ts +243 -243
  150. package/src/core/CoreTextNode.ts +400 -391
  151. package/src/core/CoreTextureManager.ts +339 -326
  152. package/src/core/Stage.ts +375 -354
  153. package/src/core/TextureMemoryManager.ts +66 -0
  154. package/src/core/animations/AnimationManager.ts +38 -38
  155. package/src/core/animations/CoreAnimation.ts +181 -181
  156. package/src/core/animations/CoreAnimationController.ts +148 -148
  157. package/src/core/lib/ContextSpy.ts +41 -41
  158. package/src/core/lib/ImageWorker.ts +149 -135
  159. package/src/core/lib/Matrix3d.ts +290 -290
  160. package/src/core/lib/RenderCoords.ts +86 -0
  161. package/src/core/lib/WebGlContextWrapper.ts +992 -992
  162. package/src/core/lib/textureCompression.ts +152 -152
  163. package/src/core/lib/utils.ts +250 -241
  164. package/src/core/platform.ts +54 -46
  165. package/src/core/renderers/CoreContextTexture.ts +35 -30
  166. package/src/core/renderers/CoreRenderOp.ts +22 -22
  167. package/src/core/renderers/CoreRenderer.ts +63 -63
  168. package/src/core/renderers/CoreShader.ts +41 -41
  169. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +42 -37
  170. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +261 -230
  171. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +107 -107
  172. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +528 -520
  173. package/src/core/renderers/webgl/WebGlCoreShader.ts +337 -337
  174. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  175. package/src/core/renderers/webgl/internal/RendererUtils.ts +148 -131
  176. package/src/core/renderers/webgl/internal/ShaderUtils.ts +136 -136
  177. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  178. package/src/core/renderers/webgl/shaders/DefaultShader.ts +95 -95
  179. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  180. package/src/core/renderers/webgl/shaders/DynamicShader.ts +474 -474
  181. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +161 -161
  182. package/src/core/renderers/webgl/shaders/SdfShader.ts +174 -174
  183. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  184. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +86 -86
  185. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  186. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  187. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  188. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +33 -33
  189. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +135 -135
  190. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +145 -145
  191. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  192. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +160 -176
  193. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +153 -159
  194. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +186 -186
  195. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +121 -121
  196. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +114 -114
  197. package/src/core/text-rendering/TextTextureRendererUtils.ts +189 -189
  198. package/src/core/text-rendering/TrFontManager.ts +170 -166
  199. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +141 -141
  200. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  201. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  202. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +169 -169
  203. package/src/core/text-rendering/font-face-types/TrFontFace.ts +105 -105
  204. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +77 -77
  205. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +780 -751
  206. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +741 -741
  207. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +812 -778
  208. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  209. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  210. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  211. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  212. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +84 -84
  213. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  214. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  215. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +391 -393
  216. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  217. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +51 -51
  218. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  219. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  220. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  221. package/src/core/text-rendering/renderers/TextRenderer.ts +548 -504
  222. package/src/core/textures/ColorTexture.ts +86 -86
  223. package/src/core/textures/ImageTexture.ts +154 -140
  224. package/src/core/textures/NoiseTexture.ts +96 -96
  225. package/src/core/textures/SubTexture.ts +143 -143
  226. package/src/core/textures/Texture.ts +261 -218
  227. package/src/core/utils.ts +224 -224
  228. package/src/env.d.ts +7 -7
  229. package/src/main-api/ICoreDriver.ts +68 -66
  230. package/src/main-api/INode.ts +499 -499
  231. package/src/main-api/Inspector.ts +440 -439
  232. package/src/main-api/RendererMain.ts +676 -652
  233. package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +45 -45
  234. package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +154 -154
  235. package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +54 -54
  236. package/src/render-drivers/main/MainCoreDriver.ts +158 -148
  237. package/src/render-drivers/main/MainOnlyNode.ts +500 -466
  238. package/src/render-drivers/main/MainOnlyTextNode.ts +261 -261
  239. package/src/render-drivers/threadx/NodeStruct.ts +300 -300
  240. package/src/render-drivers/threadx/SharedNode.ts +97 -97
  241. package/src/render-drivers/threadx/TextNodeStruct.ts +211 -211
  242. package/src/render-drivers/threadx/ThreadXCoreDriver.ts +287 -285
  243. package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +99 -99
  244. package/src/render-drivers/threadx/ThreadXMainNode.ts +192 -192
  245. package/src/render-drivers/threadx/ThreadXMainTextNode.ts +85 -85
  246. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +112 -110
  247. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +245 -238
  248. package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +149 -149
  249. package/src/render-drivers/threadx/worker/renderer.ts +153 -151
  250. package/src/render-drivers/utils.ts +97 -97
  251. package/src/utils.ts +216 -207
  252. package/COPYING +0 -1
@@ -47,25 +47,25 @@ export class BorderLeftEffect extends ShaderEffect {
47
47
  },
48
48
  };
49
49
  static methods = {
50
- fillMask: `
51
- float function(float dist) {
52
- return clamp(-dist, 0.0, 1.0);
53
- }
50
+ fillMask: `
51
+ float function(float dist) {
52
+ return clamp(-dist, 0.0, 1.0);
53
+ }
54
54
  `,
55
- rectDist: `
56
- float function(vec2 p, vec2 size) {
57
- vec2 d = abs(p) - size;
58
- return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
- }
55
+ rectDist: `
56
+ float function(vec2 p, vec2 size) {
57
+ vec2 d = abs(p) - size;
58
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
+ }
60
60
  `,
61
61
  };
62
- static onEffectMask = `
63
- vec2 pos = vec2(width * 0.5, 0.0);
64
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
65
- return mix(shaderColor, maskColor, $fillMask(mask));
62
+ static onEffectMask = `
63
+ vec2 pos = vec2(width * 0.5, 0.0);
64
+ float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
65
+ return mix(shaderColor, maskColor, $fillMask(mask));
66
66
  `;
67
- static onColorize = `
68
- return color;
67
+ static onColorize = `
68
+ return color;
69
69
  `;
70
70
  }
71
71
  //# sourceMappingURL=BorderLeftEffect.js.map
@@ -47,25 +47,25 @@ export class BorderRightEffect extends ShaderEffect {
47
47
  },
48
48
  };
49
49
  static methods = {
50
- fillMask: `
51
- float function(float dist) {
52
- return clamp(-dist, 0.0, 1.0);
53
- }
50
+ fillMask: `
51
+ float function(float dist) {
52
+ return clamp(-dist, 0.0, 1.0);
53
+ }
54
54
  `,
55
- rectDist: `
56
- float function(vec2 p, vec2 size) {
57
- vec2 d = abs(p) - size;
58
- return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
- }
55
+ rectDist: `
56
+ float function(vec2 p, vec2 size) {
57
+ vec2 d = abs(p) - size;
58
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
+ }
60
60
  `,
61
61
  };
62
- static onEffectMask = `
63
- vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);
64
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
65
- return mix(shaderColor, maskColor, $fillMask(mask));
62
+ static onEffectMask = `
63
+ vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);
64
+ float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
65
+ return mix(shaderColor, maskColor, $fillMask(mask));
66
66
  `;
67
- static onColorize = `
68
- return color;
67
+ static onColorize = `
68
+ return color;
69
69
  `;
70
70
  }
71
71
  //# sourceMappingURL=BorderRightEffect.js.map
@@ -47,25 +47,25 @@ export class BorderTopEffect extends ShaderEffect {
47
47
  },
48
48
  };
49
49
  static methods = {
50
- fillMask: `
51
- float function(float dist) {
52
- return clamp(-dist, 0.0, 1.0);
53
- }
50
+ fillMask: `
51
+ float function(float dist) {
52
+ return clamp(-dist, 0.0, 1.0);
53
+ }
54
54
  `,
55
- rectDist: `
56
- float function(vec2 p, vec2 size) {
57
- vec2 d = abs(p) - size;
58
- return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
- }
55
+ rectDist: `
56
+ float function(vec2 p, vec2 size) {
57
+ vec2 d = abs(p) - size;
58
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
59
+ }
60
60
  `,
61
61
  };
62
- static onEffectMask = `
63
- vec2 pos = vec2(0.0, width * 0.5);
64
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
65
- return mix(shaderColor, maskColor, $fillMask(mask));
62
+ static onEffectMask = `
63
+ vec2 pos = vec2(0.0, width * 0.5);
64
+ float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
65
+ return mix(shaderColor, maskColor, $fillMask(mask));
66
66
  `;
67
- static onColorize = `
68
- return color;
67
+ static onColorize = `
68
+ return color;
69
69
  `;
70
70
  }
71
71
  //# sourceMappingURL=BorderTopEffect.js.map
@@ -53,48 +53,48 @@ export class FadeOutEffect extends ShaderEffect {
53
53
  fade: props.fade ?? 10,
54
54
  };
55
55
  }
56
- static onColorize = `
57
- vec2 point = v_textureCoordinate.xy * u_dimensions.xy;
58
- vec2 pos1;
59
- vec2 pos2;
60
- vec2 d;
61
- float c;
62
- vec4 result = maskColor;
63
-
64
-
65
- if(fade[0] > 0.0) {
66
- pos1 = vec2(point.x, point.y);
67
- pos2 = vec2(point.x, point.y + fade[0]);
68
- d = pos2 - pos1;
69
- c = dot(pos1, d) / dot(d, d);
70
- result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
71
- }
72
-
73
- if(fade[1] > 0.0) {
74
- pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);
75
- pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);
76
- d = pos1 - pos2;
77
- c = dot(pos2, d) / dot(d, d);
78
- result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
79
- }
80
-
81
- if(fade[2] > 0.0) {
82
- pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);
83
- pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);
84
- d = pos1 - pos2;
85
- c = dot(pos2, d) / dot(d, d);
86
- result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
87
- }
88
-
89
- if(fade[3] > 0.0) {
90
- pos1 = vec2(point.x, point.y);
91
- pos2 = vec2(point.x + fade[3], point.y);
92
- d = pos2 - pos1;
93
- c = dot(pos1, d) / dot(d, d);
94
- result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
95
- }
96
-
97
- return result;
56
+ static onColorize = `
57
+ vec2 point = v_textureCoordinate.xy * u_dimensions.xy;
58
+ vec2 pos1;
59
+ vec2 pos2;
60
+ vec2 d;
61
+ float c;
62
+ vec4 result = maskColor;
63
+
64
+
65
+ if(fade[0] > 0.0) {
66
+ pos1 = vec2(point.x, point.y);
67
+ pos2 = vec2(point.x, point.y + fade[0]);
68
+ d = pos2 - pos1;
69
+ c = dot(pos1, d) / dot(d, d);
70
+ result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
71
+ }
72
+
73
+ if(fade[1] > 0.0) {
74
+ pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);
75
+ pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);
76
+ d = pos1 - pos2;
77
+ c = dot(pos2, d) / dot(d, d);
78
+ result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
79
+ }
80
+
81
+ if(fade[2] > 0.0) {
82
+ pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);
83
+ pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);
84
+ d = pos1 - pos2;
85
+ c = dot(pos2, d) / dot(d, d);
86
+ result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
87
+ }
88
+
89
+ if(fade[3] > 0.0) {
90
+ pos1 = vec2(point.x, point.y);
91
+ pos2 = vec2(point.x + fade[3], point.y);
92
+ d = pos2 - pos1;
93
+ c = dot(pos1, d) / dot(d, d);
94
+ result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
95
+ }
96
+
97
+ return result;
98
98
  `;
99
99
  }
100
100
  //# sourceMappingURL=FadeOutEffect.js.map
@@ -48,54 +48,54 @@ export class GlitchEffect extends ShaderEffect {
48
48
  },
49
49
  };
50
50
  static methods = {
51
- rand: `
52
- float function(vec2 p, float time) {
53
- float t = floor(time * 20.) / 10.;
54
- return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);
55
- }
51
+ rand: `
52
+ float function(vec2 p, float time) {
53
+ float t = floor(time * 20.) / 10.;
54
+ return fract(sin(dot(p, vec2(t * 12.9898, t * 78.233))) * 43758.5453);
55
+ }
56
56
  `,
57
- noise: `
58
- float function(vec2 uv, float blockiness, float time) {
59
- vec2 lv = fract(uv);
60
- vec2 id = floor(uv);
61
-
62
- float n1 = rand(id, time);
63
- float n2 = rand(id+vec2(1,0), time);
64
- float n3 = rand(id+vec2(0,1), time);
65
- float n4 = rand(id+vec2(1,1), time);
66
- vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);
67
- return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);
68
- }
57
+ noise: `
58
+ float function(vec2 uv, float blockiness, float time) {
59
+ vec2 lv = fract(uv);
60
+ vec2 id = floor(uv);
61
+
62
+ float n1 = rand(id, time);
63
+ float n2 = rand(id+vec2(1,0), time);
64
+ float n3 = rand(id+vec2(0,1), time);
65
+ float n4 = rand(id+vec2(1,1), time);
66
+ vec2 u = smoothstep(0.0, 1.0 + blockiness, lv);
67
+ return mix(mix(n1, n2, u.x), mix(n3, n4, u.x), u.y);
68
+ }
69
69
  `,
70
- fbm: `
71
- float function(vec2 uv, int count, float blockiness, float complexity, float time) {
72
- float val = 0.0;
73
- float amp = 0.5;
74
- const int MAX_ITERATIONS = 10;
75
-
76
- for(int i = 0; i < MAX_ITERATIONS; i++) {
77
- if(i >= count) {break;}
78
- val += amp * noise(uv, blockiness, time);
79
- amp *= 0.5;
80
- uv *= complexity;
81
- }
82
- return val;
83
- }
70
+ fbm: `
71
+ float function(vec2 uv, int count, float blockiness, float complexity, float time) {
72
+ float val = 0.0;
73
+ float amp = 0.5;
74
+ const int MAX_ITERATIONS = 10;
75
+
76
+ for(int i = 0; i < MAX_ITERATIONS; i++) {
77
+ if(i >= count) {break;}
78
+ val += amp * noise(uv, blockiness, time);
79
+ amp *= 0.5;
80
+ uv *= complexity;
81
+ }
82
+ return val;
83
+ }
84
84
  `,
85
85
  };
86
- static onColorize = `
87
- vec2 uv = v_textureCoordinate.xy;
88
- float aspect = u_dimensions.x / u_dimensions.y;
89
- vec2 a = vec2(uv.x * aspect , uv.y);
90
- vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));
91
-
92
- float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);
93
- float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);
94
- float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);
95
- float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);
96
-
97
- vec3 f = vec3(colR, colG, colB);
98
- return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);
86
+ static onColorize = `
87
+ vec2 uv = v_textureCoordinate.xy;
88
+ float aspect = u_dimensions.x / u_dimensions.y;
89
+ vec2 a = vec2(uv.x * aspect , uv.y);
90
+ vec2 uv2 = vec2(a.x / u_dimensions.x, exp(a.y));
91
+
92
+ float shift = amplitude * pow($fbm(uv2, 4, blockiness, narrowness, time), minimizer);
93
+ float colR = texture2D(u_texture, vec2(uv.x + shift, uv.y)).r * (1. - shift);
94
+ float colG = texture2D(u_texture, vec2(uv.x - shift, uv.y)).g * (1. - shift);
95
+ float colB = texture2D(u_texture, vec2(uv.x - shift, uv.y)).b * (1. - shift);
96
+
97
+ vec3 f = vec3(colR, colG, colB);
98
+ return vec4(f, texture2D(u_texture, vec2(uv.x - shift, uv.y)).a);
99
99
  `;
100
100
  }
101
101
  //# sourceMappingURL=GlitchEffect.js.map
@@ -37,9 +37,9 @@ export class GrayscaleEffect extends ShaderEffect {
37
37
  type: 'float',
38
38
  },
39
39
  };
40
- static onColorize = `
41
- float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;
42
- return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);
40
+ static onColorize = `
41
+ float grayness = 0.2 * maskColor.r + 0.6 * maskColor.g + 0.2 * maskColor.b;
42
+ return vec4(amount * vec3(grayness) + (1.0 - amount) * maskColor.rgb, maskColor.a);
43
43
  `;
44
44
  }
45
45
  //# sourceMappingURL=GrayscaleEffect.js.map
@@ -29,13 +29,23 @@ export class LinearGradientEffect extends ShaderEffect {
29
29
  }
30
30
  static resolveDefaults(props) {
31
31
  const colors = props.colors ?? [0xff000000, 0xffffffff];
32
- let stops = props.stops;
33
- if (!stops) {
34
- stops = [];
35
- const calc = colors.length - 1;
36
- for (let i = 0; i < colors.length; i++) {
37
- stops.push(i * (1 / calc));
32
+ let stops = props.stops || [];
33
+ if (stops.length === 0 || stops.length !== colors.length) {
34
+ const colorsL = colors.length;
35
+ let i = 0;
36
+ const tmp = stops;
37
+ for (; i < colorsL; i++) {
38
+ if (stops[i]) {
39
+ tmp[i] = stops[i];
40
+ if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {
41
+ tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;
42
+ }
43
+ }
44
+ else {
45
+ tmp[i] = i * (1 / (colors.length - 1));
46
+ }
38
47
  }
48
+ stops = tmp;
39
49
  }
40
50
  return {
41
51
  colors,
@@ -61,50 +71,30 @@ export class LinearGradientEffect extends ShaderEffect {
61
71
  },
62
72
  stops: {
63
73
  value: [],
64
- validator: (value, props) => {
65
- const colors = props.colors ?? [];
66
- let stops = value;
67
- const tmp = value;
68
- if (stops.length === 0 || (stops && stops.length !== colors.length)) {
69
- for (let i = 0; i < colors.length; i++) {
70
- if (stops[i]) {
71
- tmp[i] = stops[i];
72
- if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {
73
- tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;
74
- }
75
- }
76
- else {
77
- tmp[i] = i * (1 / (colors.length - 1));
78
- }
79
- }
80
- stops = tmp;
81
- }
82
- return tmp;
83
- },
84
74
  size: (props) => props.colors.length,
85
75
  method: 'uniform1fv',
86
76
  type: 'float',
87
77
  },
88
78
  };
89
79
  static methods = {
90
- fromLinear: `
91
- vec4 function(vec4 linearRGB) {
92
- vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);
93
- vec4 lower = linearRGB * vec4(12.92);
94
- return mix(higher, lower, 1.0);
95
- }
80
+ fromLinear: `
81
+ vec4 function(vec4 linearRGB) {
82
+ vec4 higher = vec4(1.055)*pow(linearRGB, vec4(1.0/2.4)) - vec4(0.055);
83
+ vec4 lower = linearRGB * vec4(12.92);
84
+ return mix(higher, lower, 1.0);
85
+ }
96
86
  `,
97
- toLinear: `
98
- vec4 function(vec4 sRGB) {
99
- vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));
100
- vec4 lower = sRGB/vec4(12.92);
101
- return mix(higher, lower, 1.0);
102
- }
87
+ toLinear: `
88
+ vec4 function(vec4 sRGB) {
89
+ vec4 higher = pow((sRGB + vec4(0.055))/vec4(1.055), vec4(2.4));
90
+ vec4 lower = sRGB/vec4(12.92);
91
+ return mix(higher, lower, 1.0);
92
+ }
103
93
  `,
104
- calcPoint: `
105
- vec2 function(float d, float angle) {
106
- return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
107
- }
94
+ calcPoint: `
95
+ vec2 function(float d, float angle) {
96
+ return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
97
+ }
108
98
  `,
109
99
  };
110
100
  static ColorLoop = (amount) => {
@@ -116,21 +106,18 @@ export class LinearGradientEffect extends ShaderEffect {
116
106
  };
117
107
  static onColorize = (props) => {
118
108
  const colors = props.colors.length || 1;
119
- return `
120
- float a = angle - (PI / 180.0 * 90.0);
121
- float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));
122
- vec2 f = $calcPoint(lineDist * 0.5, a);
123
- vec2 t = $calcPoint(lineDist * 0.5, a + PI);
124
- vec2 gradVec = t - f;
125
- float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
126
-
127
- float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);
128
- vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));
129
- for(int i = 1; i < ${colors}-1; i++) {
130
- stopCalc = (dist - stops[i]) / (stops[i + 1] - stops[i]);
131
- colorOut = mix(colorOut, colors[i + 1], clamp(stopCalc, 0.0, 1.0));
132
- }
133
- return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));
109
+ return `
110
+ float a = angle - (PI / 180.0 * 90.0);
111
+ float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));
112
+ vec2 f = $calcPoint(lineDist * 0.5, a);
113
+ vec2 t = $calcPoint(lineDist * 0.5, a + PI);
114
+ vec2 gradVec = t - f;
115
+ float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
116
+
117
+ float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);
118
+ vec4 colorOut = $fromLinear(mix($toLinear(colors[0]), $toLinear(colors[1]), stopCalc));
119
+ ${this.ColorLoop(colors)}
120
+ return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));
134
121
  `;
135
122
  };
136
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LinearGradientEffect.js","sourceRoot":"","sources":["../../../../../../../src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinearGradientEffect.js","sourceRoot":"","sources":["../../../../../../../src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAEL,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAwB3B;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,MAAM,CAAC,eAAe,CAA4B;IAChC,IAAI,GAAG,gBAAgB,CAAC;IAE1C,MAAM,CAAU,YAAY,CAAC,KAAgC;QAC3D,OAAO,iBAAiB,KAAK,CAAC,MAAO,CAAC,MAAM,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAgC;QAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAExD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;YACxD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,MAAM,GAAG,GAAG,KAAK,CAAC;YAClB,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACZ,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBACnB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE;wBAC1D,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC;qBAC1D;iBACF;qBAAM;oBACL,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxC;aACF;YACD,KAAK,GAAG,GAAG,CAAC;SACb;QACD,OAAO;YACL,MAAM;YACN,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,QAAQ,GAAyB;QAC/C,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,OAAO;SACd;QACD,MAAM,EAAE;YACN,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,CAAC,KAAe,EAAY,EAAE;gBACvC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAc,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,EAAE,CAAC,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAO,CAAC,MAAM;YAChE,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,MAAM;SACb;QACD,KAAK,EAAE;YACL,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,CAAC,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAO,CAAC,MAAM;YAChE,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,OAAO;SACd;KACF,CAAC;IAEF,MAAM,CAAU,OAAO,GAA2B;QAChD,UAAU,EAAE;;;;;;KAMX;QACD,QAAQ,EAAE;;;;;;KAMT;QACD,SAAS,EAAE;;;;KAIV;KACF,CAAC;IAEF,MAAM,CAAC,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE;QAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,IAAI,mCAAmC,CAAC,0BAC1C,CAAC,GAAG,CACN,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACrD;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,CAAU,UAAU,GAAG,CAAC,KAAgC,EAAE,EAAE;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACzC,OAAO;;;;;;;;;;QAUH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;KAEzB,CAAC;IACJ,CAAC,CAAC"}
@@ -34,5 +34,6 @@ export declare class RadialGradientEffect extends ShaderEffect {
34
34
  static getEffectKey(props: RadialGradientEffectProps): string;
35
35
  static resolveDefaults(props: RadialGradientEffectProps): Required<RadialGradientEffectProps>;
36
36
  static uniforms: ShaderEffectUniforms;
37
+ static ColorLoop: (amount: number) => string;
37
38
  static onColorize: (props: RadialGradientEffectProps) => string;
38
39
  }
@@ -26,13 +26,23 @@ export class RadialGradientEffect extends ShaderEffect {
26
26
  }
27
27
  static resolveDefaults(props) {
28
28
  const colors = props.colors ?? [0xff000000, 0xffffffff];
29
- let stops = props.stops;
30
- if (!stops) {
31
- stops = [];
32
- const calc = colors.length - 1;
33
- for (let i = 0; i < colors.length; i++) {
34
- stops.push(i * (1 / calc));
29
+ let stops = props.stops || [];
30
+ if (stops.length === 0 || stops.length !== colors.length) {
31
+ const colorsL = colors.length;
32
+ let i = 0;
33
+ const tmp = stops;
34
+ for (; i < colorsL; i++) {
35
+ if (stops[i]) {
36
+ tmp[i] = stops[i];
37
+ if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {
38
+ tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;
39
+ }
40
+ }
41
+ else {
42
+ tmp[i] = i * (1 / (colors.length - 1));
43
+ }
35
44
  }
45
+ stops = tmp;
36
46
  }
37
47
  return {
38
48
  colors,
@@ -70,46 +80,30 @@ export class RadialGradientEffect extends ShaderEffect {
70
80
  },
71
81
  stops: {
72
82
  value: [],
73
- validator: (value, props) => {
74
- const colors = props.colors ?? [];
75
- let stops = value;
76
- const tmp = value;
77
- if (stops.length === 0 || (stops && stops.length !== colors.length)) {
78
- for (let i = 0; i < colors.length; i++) {
79
- if (stops[i]) {
80
- tmp[i] = stops[i];
81
- if (stops[i - 1] === undefined && tmp[i - 2] !== undefined) {
82
- tmp[i - 1] = tmp[i - 2] + (stops[i] - tmp[i - 2]) / 2;
83
- }
84
- }
85
- else {
86
- tmp[i] = i * (1 / (colors.length - 1));
87
- }
88
- }
89
- stops = tmp;
90
- }
91
- return tmp;
92
- },
93
83
  size: (props) => props.colors.length,
94
84
  method: 'uniform1fv',
95
85
  type: 'float',
96
86
  },
97
87
  };
88
+ static ColorLoop = (amount) => {
89
+ let loop = '';
90
+ for (let i = 2; i < amount; i++) {
91
+ loop += `colorOut = mix(colorOut, colors[${i}], clamp((dist - stops[${i - 1}]) / (stops[${i}] - stops[${i - 1}]), 0.0, 1.0));`;
92
+ }
93
+ return loop;
94
+ };
98
95
  static onColorize = (props) => {
99
96
  const colors = props.colors.length || 1;
100
- return `
101
- vec2 point = v_textureCoordinate.xy * u_dimensions;
102
- vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);
103
-
104
- float dist = length((point - projection) / vec2(width, height));
105
-
106
- float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);
107
- vec4 colorOut = mix(colors[0], colors[1], stopCalc);
108
- for(int i = 1; i < ${colors}-1; i++) {
109
- stopCalc = (dist - stops[i]) / (stops[i + 1] - stops[i]);
110
- colorOut = mix(colorOut, colors[i + 1], clamp(stopCalc, 0.0, 1.0));
111
- }
112
- return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));
97
+ return `
98
+ vec2 point = v_textureCoordinate.xy * u_dimensions;
99
+ vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);
100
+
101
+ float dist = length((point - projection) / vec2(width, height));
102
+
103
+ float stopCalc = (dist - stops[0]) / (stops[1] - stops[0]);
104
+ vec4 colorOut = mix(colors[0], colors[1], stopCalc);
105
+ ${this.ColorLoop(colors)}
106
+ return mix(maskColor, colorOut, clamp(colorOut.a, 0.0, 1.0));
113
107
  `;
114
108
  };
115
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RadialGradientEffect.js","sourceRoot":"","sources":["../../../../../../../src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RadialGradientEffect.js","sourceRoot":"","sources":["../../../../../../../src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts"],"names":[],"mappings":"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"}