@lightningtv/renderer 3.0.0-beta1 → 3.2.3

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 (497) hide show
  1. package/NOTICE +4 -0
  2. package/README.md +22 -28
  3. package/dist/exports/canvas-shaders.js +0 -16
  4. package/dist/exports/canvas-shaders.js.map +1 -1
  5. package/dist/exports/canvas.d.ts +1 -1
  6. package/dist/exports/canvas.js +1 -19
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +2 -5
  9. package/dist/exports/index.js +1 -23
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/inspector.js +0 -18
  12. package/dist/exports/inspector.js.map +1 -1
  13. package/dist/exports/utils.d.ts +2 -1
  14. package/dist/exports/utils.js +2 -19
  15. package/dist/exports/utils.js.map +1 -1
  16. package/dist/exports/webgl-shaders.js +0 -16
  17. package/dist/exports/webgl-shaders.js.map +1 -1
  18. package/dist/exports/webgl.d.ts +2 -1
  19. package/dist/exports/webgl.js +2 -19
  20. package/dist/exports/webgl.js.map +1 -1
  21. package/dist/src/common/CommonTypes.d.ts +15 -3
  22. package/dist/src/common/CommonTypes.js +0 -18
  23. package/dist/src/common/CommonTypes.js.map +1 -1
  24. package/dist/src/common/EventEmitter.js +0 -18
  25. package/dist/src/common/EventEmitter.js.map +1 -1
  26. package/dist/src/common/IEventEmitter.js +0 -16
  27. package/dist/src/common/IEventEmitter.js.map +1 -1
  28. package/dist/src/core/Autosizer.d.ts +35 -0
  29. package/dist/src/core/Autosizer.js +178 -0
  30. package/dist/src/core/Autosizer.js.map +1 -0
  31. package/dist/src/core/CoreNode.d.ts +140 -102
  32. package/dist/src/core/CoreNode.js +812 -528
  33. package/dist/src/core/CoreNode.js.map +1 -1
  34. package/dist/src/core/CoreShaderManager.d.ts +3 -3
  35. package/dist/src/core/CoreShaderManager.js +0 -18
  36. package/dist/src/core/CoreShaderManager.js.map +1 -1
  37. package/dist/src/core/CoreTextNode.d.ts +75 -87
  38. package/dist/src/core/CoreTextNode.js +380 -258
  39. package/dist/src/core/CoreTextNode.js.map +1 -1
  40. package/dist/src/core/CoreTextureManager.d.ts +25 -14
  41. package/dist/src/core/CoreTextureManager.js +82 -139
  42. package/dist/src/core/CoreTextureManager.js.map +1 -1
  43. package/dist/src/core/Stage.d.ts +102 -36
  44. package/dist/src/core/Stage.js +424 -191
  45. package/dist/src/core/Stage.js.map +1 -1
  46. package/dist/src/core/TextureError.d.ts +11 -0
  47. package/dist/src/core/TextureError.js +37 -0
  48. package/dist/src/core/TextureError.js.map +1 -0
  49. package/dist/src/core/TextureMemoryManager.d.ts +11 -4
  50. package/dist/src/core/TextureMemoryManager.js +114 -134
  51. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  52. package/dist/src/core/animations/AnimationManager.js +0 -18
  53. package/dist/src/core/animations/AnimationManager.js.map +1 -1
  54. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  55. package/dist/src/core/animations/CoreAnimation.js +8 -24
  56. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  57. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  58. package/dist/src/core/animations/CoreAnimationController.js +11 -22
  59. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  60. package/dist/src/core/lib/ContextSpy.js +0 -18
  61. package/dist/src/core/lib/ContextSpy.js.map +1 -1
  62. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  63. package/dist/src/core/lib/ImageWorker.js +33 -31
  64. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  65. package/dist/src/core/lib/Matrix3d.d.ts +1 -0
  66. package/dist/src/core/lib/Matrix3d.js +7 -19
  67. package/dist/src/core/lib/Matrix3d.js.map +1 -1
  68. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  69. package/dist/src/core/lib/RenderCoords.js +27 -55
  70. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  71. package/dist/src/core/lib/WebGlContextWrapper.d.ts +83 -8
  72. package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
  73. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  74. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  75. package/dist/src/core/lib/collectionUtils.js +82 -0
  76. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  77. package/dist/src/core/lib/colorCache.d.ts +1 -0
  78. package/dist/src/core/lib/colorCache.js +19 -0
  79. package/dist/src/core/lib/colorCache.js.map +1 -0
  80. package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +1 -19
  81. package/dist/src/core/lib/colorParser.js.map +1 -0
  82. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  83. package/dist/src/core/lib/textureCompression.js +320 -85
  84. package/dist/src/core/lib/textureCompression.js.map +1 -1
  85. package/dist/src/core/lib/textureSvg.js +0 -18
  86. package/dist/src/core/lib/textureSvg.js.map +1 -1
  87. package/dist/src/core/lib/utils.d.ts +8 -1
  88. package/dist/src/core/lib/utils.js +44 -20
  89. package/dist/src/core/lib/utils.js.map +1 -1
  90. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  91. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  92. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  93. package/dist/src/core/platforms/Platform.d.ts +42 -0
  94. package/dist/src/core/platforms/Platform.js +4 -0
  95. package/dist/src/core/platforms/Platform.js.map +1 -0
  96. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  97. package/dist/src/core/platforms/web/WebPlatform.js +90 -0
  98. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  99. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  100. package/dist/src/core/renderers/CoreContextTexture.js +0 -18
  101. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  102. package/dist/src/core/renderers/CoreRenderOp.js +0 -18
  103. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
  104. package/dist/src/core/renderers/CoreRenderer.d.ts +15 -3
  105. package/dist/src/core/renderers/CoreRenderer.js +1 -18
  106. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  107. package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
  108. package/dist/src/core/renderers/CoreShaderNode.js +25 -2
  109. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  110. package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
  111. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
  112. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
  113. package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
  114. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  115. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
  116. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  117. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  118. package/dist/src/core/renderers/canvas/CanvasTexture.js +18 -31
  119. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  121. package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
  122. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  123. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  124. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
  125. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  126. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  127. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
  128. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  129. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  130. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -70
  131. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  132. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
  133. package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
  134. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  135. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
  136. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  137. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  138. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
  139. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +99 -48
  140. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  141. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
  142. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
  143. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
  144. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
  145. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  146. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +0 -18
  147. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  148. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
  149. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
  150. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  151. package/dist/src/core/shaders/canvas/Border.js +67 -41
  152. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  153. package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
  154. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  155. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -21
  156. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  157. package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
  158. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  159. package/dist/src/core/shaders/canvas/Rounded.js +1 -17
  160. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  161. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  162. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +44 -22
  163. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  164. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  165. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +47 -25
  166. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  167. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
  168. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  169. package/dist/src/core/shaders/canvas/Shadow.js +0 -16
  170. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  171. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  172. package/dist/src/core/shaders/canvas/utils/render.js +31 -34
  173. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  174. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
  175. package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
  176. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  177. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  178. package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -19
  179. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  180. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
  181. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
  182. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  183. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
  184. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  185. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -17
  186. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  187. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  188. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
  189. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
  190. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -2
  191. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
  192. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
  193. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  194. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
  195. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
  196. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  197. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
  198. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
  199. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  200. package/dist/src/core/shaders/utils.js +25 -0
  201. package/dist/src/core/shaders/utils.js.map +1 -0
  202. package/dist/src/core/shaders/webgl/Border.js +118 -51
  203. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  204. package/dist/src/core/shaders/webgl/Default.js +6 -41
  205. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  206. package/dist/src/core/shaders/webgl/HolePunch.js +4 -19
  207. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  208. package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
  209. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  210. package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
  211. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  212. package/dist/src/core/shaders/webgl/Rounded.js +25 -23
  213. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  214. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +160 -55
  215. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  216. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
  217. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  218. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
  219. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  220. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  221. package/dist/src/core/shaders/webgl/SdfShader.js +8 -36
  222. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  223. package/dist/src/core/shaders/webgl/Shadow.js +39 -34
  224. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  225. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  226. package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
  227. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  228. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  229. package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
  230. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  231. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
  232. package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
  233. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  234. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
  235. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  236. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  237. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  238. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  239. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  240. package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
  241. package/dist/src/core/text-rendering/TextRenderer.js +2 -0
  242. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  243. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  244. package/dist/src/core/text-rendering/Utils.js +66 -0
  245. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  246. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  247. package/dist/src/core/textures/ColorTexture.js +3 -22
  248. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  249. package/dist/src/core/textures/ImageTexture.d.ts +13 -6
  250. package/dist/src/core/textures/ImageTexture.js +57 -66
  251. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  252. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  253. package/dist/src/core/textures/NoiseTexture.js +8 -26
  254. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  255. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  256. package/dist/src/core/textures/RenderTexture.js +12 -30
  257. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  258. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  259. package/dist/src/core/textures/SubTexture.js +19 -55
  260. package/dist/src/core/textures/SubTexture.js.map +1 -1
  261. package/dist/src/core/textures/Texture.d.ts +90 -12
  262. package/dist/src/core/textures/Texture.js +160 -35
  263. package/dist/src/core/textures/Texture.js.map +1 -1
  264. package/dist/src/core/utils.d.ts +2 -1
  265. package/dist/src/core/utils.js +1 -19
  266. package/dist/src/core/utils.js.map +1 -1
  267. package/dist/src/main-api/INode.js.map +1 -1
  268. package/dist/src/main-api/Inspector.d.ts +135 -2
  269. package/dist/src/main-api/Inspector.js +507 -30
  270. package/dist/src/main-api/Inspector.js.map +1 -1
  271. package/dist/src/main-api/Renderer.d.ts +294 -81
  272. package/dist/src/main-api/Renderer.js +225 -96
  273. package/dist/src/main-api/Renderer.js.map +1 -1
  274. package/dist/src/utils.d.ts +19 -6
  275. package/dist/src/utils.js +32 -27
  276. package/dist/src/utils.js.map +1 -1
  277. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  278. package/dist/tsconfig.tsbuildinfo +1 -0
  279. package/exports/canvas-shaders.ts +0 -17
  280. package/exports/canvas.ts +1 -19
  281. package/exports/index.ts +6 -27
  282. package/exports/inspector.ts +0 -19
  283. package/exports/utils.ts +7 -19
  284. package/exports/webgl-shaders.ts +0 -16
  285. package/exports/webgl.ts +3 -20
  286. package/package.json +23 -22
  287. package/src/common/CommonTypes.ts +20 -22
  288. package/src/common/EventEmitter.ts +0 -19
  289. package/src/common/IAnimationController.ts +0 -18
  290. package/src/common/IEventEmitter.ts +0 -17
  291. package/src/core/Autosizer.ts +205 -0
  292. package/src/core/CoreNode.test.ts +376 -45
  293. package/src/core/CoreNode.ts +1015 -656
  294. package/src/core/CoreShaderManager.ts +3 -21
  295. package/src/core/CoreTextNode.ts +457 -314
  296. package/src/core/CoreTextureManager.ts +110 -167
  297. package/src/core/Stage.ts +526 -236
  298. package/src/core/TextureError.ts +46 -0
  299. package/src/core/TextureMemoryManager.ts +150 -167
  300. package/src/core/animations/AnimationManager.ts +0 -19
  301. package/src/core/animations/CoreAnimation.ts +15 -32
  302. package/src/core/animations/CoreAnimationController.ts +13 -23
  303. package/src/core/lib/ContextSpy.ts +0 -19
  304. package/src/core/lib/ImageWorker.ts +45 -32
  305. package/src/core/lib/Matrix3d.ts +7 -20
  306. package/src/core/lib/RenderCoords.ts +36 -67
  307. package/src/core/lib/WebGlContextWrapper.ts +196 -72
  308. package/src/core/lib/collectionUtils.ts +99 -0
  309. package/src/core/lib/colorCache.ts +20 -0
  310. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -21
  311. package/src/core/lib/textureCompression.ts +433 -93
  312. package/src/core/lib/textureSvg.ts +0 -19
  313. package/src/core/lib/utils.ts +58 -19
  314. package/src/core/lib/validateImageBitmap.ts +17 -6
  315. package/src/core/platforms/Platform.ts +64 -0
  316. package/src/core/platforms/web/WebPlatform.ts +132 -0
  317. package/src/core/renderers/CoreContextTexture.ts +2 -20
  318. package/src/core/renderers/CoreRenderOp.ts +0 -19
  319. package/src/core/renderers/CoreRenderer.ts +16 -23
  320. package/src/core/renderers/CoreShaderNode.ts +37 -6
  321. package/src/core/renderers/CoreShaderProgram.ts +0 -19
  322. package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
  323. package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
  324. package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
  325. package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
  326. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
  327. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
  328. package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
  329. package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
  330. package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
  331. package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
  332. package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
  333. package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
  334. package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -19
  335. package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
  336. package/src/core/shaders/canvas/Border.ts +91 -50
  337. package/src/core/shaders/canvas/HolePunch.ts +4 -28
  338. package/src/core/shaders/canvas/LinearGradient.ts +10 -25
  339. package/src/core/shaders/canvas/RadialGradient.ts +23 -54
  340. package/src/core/shaders/canvas/Rounded.ts +2 -19
  341. package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
  342. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
  343. package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
  344. package/src/core/shaders/canvas/Shadow.ts +0 -17
  345. package/src/core/shaders/canvas/utils/render.ts +45 -53
  346. package/src/core/shaders/templates/BorderTemplate.ts +42 -29
  347. package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
  348. package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
  349. package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
  350. package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
  351. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
  352. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
  353. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
  354. package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
  355. package/src/core/shaders/utils.ts +30 -0
  356. package/src/core/shaders/webgl/Border.ts +118 -55
  357. package/src/core/shaders/webgl/Default.ts +6 -43
  358. package/src/core/shaders/webgl/HolePunch.ts +4 -24
  359. package/src/core/shaders/webgl/LinearGradient.ts +73 -35
  360. package/src/core/shaders/webgl/RadialGradient.ts +58 -51
  361. package/src/core/shaders/webgl/Rounded.ts +25 -45
  362. package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
  363. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
  364. package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
  365. package/src/core/shaders/webgl/SdfShader.ts +8 -41
  366. package/src/core/shaders/webgl/Shadow.ts +39 -35
  367. package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
  368. package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
  369. package/src/core/text-rendering/SdfFontHandler.ts +566 -0
  370. package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
  371. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  372. package/src/core/text-rendering/TextRenderer.ts +426 -0
  373. package/src/core/text-rendering/Utils.ts +80 -0
  374. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
  375. package/src/core/textures/ColorTexture.ts +7 -24
  376. package/src/core/textures/ImageTexture.ts +110 -92
  377. package/src/core/textures/NoiseTexture.ts +14 -31
  378. package/src/core/textures/RenderTexture.ts +18 -35
  379. package/src/core/textures/SubTexture.ts +25 -65
  380. package/src/core/textures/Texture.ts +214 -46
  381. package/src/core/utils.ts +9 -26
  382. package/src/main-api/INode.ts +0 -18
  383. package/src/main-api/Inspector.ts +794 -38
  384. package/src/main-api/Renderer.ts +519 -159
  385. package/src/utils.ts +64 -29
  386. package/dist/src/core/platform.d.ts +0 -10
  387. package/dist/src/core/platform.js +0 -56
  388. package/dist/src/core/platform.js.map +0 -1
  389. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
  390. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
  391. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  392. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  393. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -36
  394. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
  395. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  396. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  397. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  398. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  399. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  400. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  401. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  402. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  403. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  404. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  405. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  406. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  407. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  408. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  409. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  410. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  411. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  412. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  413. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  414. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  415. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  416. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  417. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  418. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  419. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  420. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  421. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  422. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  423. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  424. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  425. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  426. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  427. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  428. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -126
  429. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  430. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  431. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -91
  432. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
  433. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  434. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  435. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  436. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  437. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  438. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  439. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  440. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  441. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  442. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  443. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  444. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  445. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  446. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  447. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  448. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  449. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  450. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  451. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  452. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  453. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  454. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  455. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  456. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  457. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  458. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  459. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  460. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  461. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -370
  462. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  463. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  464. package/scripts/please-use-pnpm.js +0 -13
  465. package/src/core/platform.ts +0 -64
  466. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  467. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -145
  468. package/src/core/shaders/templates/shaderUtils.ts +0 -47
  469. package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
  470. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  471. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  472. package/src/core/text-rendering/TrFontManager.ts +0 -183
  473. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  474. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  475. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  476. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  477. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  478. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  479. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  480. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  481. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  482. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
  483. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  484. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  485. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  486. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  489. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  490. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  491. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  492. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  493. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  494. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  495. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  496. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
  497. /package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
@@ -1,21 +1,3 @@
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 { valuesAreEqual } from '../../lib/utils.js';
19
1
  import {
20
2
  BorderTemplate,
21
3
  type BorderProps,
@@ -25,14 +7,93 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
25
7
 
26
8
  export const Border: WebGlShaderType<BorderProps> = {
27
9
  props: BorderTemplate.props,
28
- update() {
29
- this.uniform4fa('u_width', this.props!.width as Vec4);
30
- this.uniform1i(
31
- 'u_asymWidth',
32
- valuesAreEqual(this.props!.width as number[]) ? 0 : 1,
33
- );
34
- this.uniformRGBA('u_color', this.props!.color);
10
+ update(node) {
11
+ this.uniform4fa('u_borderWidth', this.props!.w as Vec4);
12
+ this.uniformRGBA('u_borderColor', this.props!.color);
13
+ this.uniform1f('u_borderGap', this.props!.gap as number);
14
+ this.uniform1f('u_borderAlign', this.props!.align as number);
35
15
  },
16
+ vertex: `
17
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
18
+ precision highp float;
19
+ # else
20
+ precision mediump float;
21
+ # endif
22
+
23
+ attribute vec2 a_position;
24
+ attribute vec2 a_textureCoords;
25
+ attribute vec4 a_color;
26
+ attribute vec2 a_nodeCoords;
27
+
28
+ uniform vec2 u_resolution;
29
+ uniform float u_pixelRatio;
30
+ uniform vec2 u_dimensions;
31
+
32
+ uniform vec4 u_radius;
33
+ uniform vec4 u_borderWidth;
34
+ uniform float u_borderGap;
35
+ uniform float u_borderAlign;
36
+
37
+ varying vec4 v_color;
38
+ varying vec2 v_textureCoords;
39
+ varying vec2 v_nodeCoords;
40
+
41
+ varying vec2 v_innerSize;
42
+ varying vec2 v_outerSize;
43
+ varying vec2 v_outerBorderUv;
44
+ varying vec2 v_innerBorderUv;
45
+ varying vec2 v_halfDimensions;
46
+ varying float v_edgeWidth;
47
+
48
+ void main() {
49
+ vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
50
+ vec2 edge = clamp(a_nodeCoords * 2.0 - vec2(1.0), -1.0, 1.0);
51
+ v_edgeWidth = 1.0 / u_pixelRatio;
52
+
53
+ float borderTop = u_borderWidth.x;
54
+ float borderRight = u_borderWidth.y;
55
+ float borderBottom = u_borderWidth.z;
56
+ float borderLeft = u_borderWidth.w;
57
+
58
+ v_outerBorderUv = vec2(0.0);
59
+ v_innerBorderUv = vec2(0.0);
60
+
61
+ vec2 borderSize = vec2(borderRight + borderLeft, borderTop + borderBottom);
62
+ vec2 extraSize = borderSize * u_borderAlign;
63
+ float gapLeft = step(0.001, borderLeft) * u_borderGap;
64
+ float gapRight = step(0.001, borderRight) * u_borderGap;
65
+ float gapTop = step(0.001, borderTop) * u_borderGap;
66
+ float gapBottom = step(0.001, borderBottom) * u_borderGap;
67
+ vec2 gapSize = vec2(gapLeft + gapRight, gapTop + gapBottom);
68
+
69
+ v_outerSize = (u_dimensions + gapSize + extraSize) * 0.5;
70
+ v_innerSize = v_outerSize - borderSize * 0.5;
71
+
72
+ // Use sign() to avoid branching
73
+ vec2 borderDiff = vec2(borderRight - borderLeft, borderBottom - borderTop);
74
+ vec2 signDiff = sign(borderDiff);
75
+ borderDiff = abs(borderDiff);
76
+
77
+ vec2 gapDiff = vec2(gapRight - gapLeft, gapBottom - gapTop);
78
+ vec2 signGapDiff = sign(gapDiff);
79
+ gapDiff = abs(gapDiff);
80
+
81
+ v_outerBorderUv = -signDiff * borderDiff * u_borderAlign * 0.5 - signGapDiff * gapDiff * 0.5;
82
+ v_innerBorderUv = v_outerBorderUv + signDiff * borderDiff * 0.5;
83
+
84
+ vec2 edgeOffsetExtra = step(u_dimensions * 0.5, v_outerSize) * edge * (extraSize + u_borderGap);
85
+ vec2 borderEdge = edgeOffsetExtra;
86
+
87
+ vec2 vertexPos = (a_position + edge + borderEdge) * u_pixelRatio;
88
+ gl_Position = vec4(vertexPos.x * screenSpace.x - 1.0, -sign(screenSpace.y) * (vertexPos.y * -abs(screenSpace.y)) + 1.0, 0.0, 1.0);
89
+
90
+ v_color = a_color;
91
+ v_nodeCoords = a_nodeCoords + (screenSpace + borderEdge) / (u_dimensions);
92
+ v_textureCoords = a_textureCoords + (screenSpace + borderEdge) / (u_dimensions);
93
+
94
+ v_halfDimensions = u_dimensions * 0.5;
95
+ }
96
+ `,
36
97
  fragment: `
37
98
  # ifdef GL_FRAGMENT_PRECISION_HIGH
38
99
  precision highp float;
@@ -47,50 +108,52 @@ export const Border: WebGlShaderType<BorderProps> = {
47
108
  uniform vec2 u_dimensions;
48
109
  uniform sampler2D u_texture;
49
110
 
50
- uniform vec4 u_width;
51
- uniform vec4 u_color;
52
-
53
- uniform int u_asymWidth;
111
+ uniform vec4 u_borderWidth;
112
+ uniform vec4 u_borderColor;
113
+ uniform float u_borderGap;
54
114
 
55
115
  varying vec4 v_color;
56
- varying vec2 v_position;
116
+ varying vec2 v_nodeCoords;
57
117
  varying vec2 v_textureCoords;
58
118
 
119
+ varying vec2 v_innerSize;
120
+ varying vec2 v_outerSize;
121
+ varying vec2 v_outerBorderUv;
122
+ varying vec2 v_innerBorderUv;
123
+ varying vec2 v_halfDimensions;
124
+ varying float v_edgeWidth;
125
+
59
126
  float box(vec2 p, vec2 s) {
60
- vec2 q = abs(p) - (s - (4.0 - u_pixelRatio));
127
+ vec2 q = abs(p) - s;
61
128
  return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0)));
62
129
  }
63
130
 
64
- float asymBorderWidth(vec2 p, float d, vec4 w) {
65
- p.x += w.y > w.w ? (w.y - w.w) * 0.5 : -(w.w - w.y) * 0.5;
66
- p.y += w.z > w.x ? (w.z - w.x) * 0.5 : -(w.x - w.z) * 0.5;
67
-
68
- vec2 size = vec2(u_dimensions.x - (w[3] + w[1]), u_dimensions.y - (w[0] + w[2])) * 0.5;
69
- float borderDist = box(p, size + 2.0);
70
- return 1.0 - smoothstep(0.0, u_pixelRatio, max(-borderDist, d));
71
- }
72
-
73
131
  void main() {
74
132
  vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
75
- vec2 halfDimensions = (u_dimensions * 0.5);
133
+ vec4 resultColor = vec4(0.0);
134
+ vec2 boxUv = v_nodeCoords.xy * u_dimensions - v_halfDimensions;
76
135
 
77
- vec2 boxUv = v_textureCoords.xy * u_dimensions - halfDimensions;
78
- float boxDist = box(boxUv, halfDimensions);
136
+ float outerDist = box(boxUv + v_outerBorderUv, v_outerSize - v_edgeWidth);
137
+ float innerDist = box(boxUv + v_innerBorderUv, v_innerSize - v_edgeWidth);
79
138
 
80
- float boxAlpha = 1.0 - smoothstep(0.0, u_pixelRatio, boxDist);
81
- float borderAlpha = 0.0;
82
-
83
- if(u_asymWidth == 1) {
84
- borderAlpha = asymBorderWidth(boxUv, boxDist, u_width);
85
- }
86
- else {
87
- borderAlpha = 1.0 - smoothstep(u_width[0], u_width[0], abs(boxDist));
139
+ if(u_borderGap == 0.0) {
140
+ float outerAlpha = 1.0 - smoothstep(-0.5 * v_edgeWidth, 0.5 * v_edgeWidth, outerDist);
141
+ float innerAlpha = 1.0 - smoothstep(-0.5 * v_edgeWidth, 0.5 * v_edgeWidth, innerDist);
142
+ resultColor = mix(resultColor, u_borderColor, outerAlpha * u_borderColor.a);
143
+ resultColor = mix(resultColor, color, innerAlpha);
144
+ gl_FragColor = resultColor * u_alpha;
145
+ return;
88
146
  }
89
147
 
90
- vec4 resColor = vec4(0.0);
91
- resColor = mix(resColor, color, min(color.a, boxAlpha));
92
- resColor = mix(resColor, u_color, min(u_color.a, min(borderAlpha, boxAlpha)));
93
- gl_FragColor = resColor * u_alpha;
148
+ float nodeDist = box(boxUv, v_halfDimensions - v_edgeWidth);
149
+ float nodeAlpha = 1.0 - smoothstep(-0.5 * v_edgeWidth, 0.5 * v_edgeWidth, nodeDist);
150
+
151
+ float borderDist = max(-innerDist, outerDist);
152
+ float borderAlpha = 1.0 - smoothstep(-0.5 * v_edgeWidth, 0.5 * v_edgeWidth, borderDist);
153
+ resultColor = mix(resultColor, color, nodeAlpha);
154
+ resultColor = mix(resultColor, u_borderColor, borderAlpha * u_borderColor.a);
155
+
156
+ gl_FragColor = resultColor * u_alpha;
94
157
  }
95
158
  `,
96
159
  };
@@ -1,41 +1,5 @@
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
1
  import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
19
2
 
20
- /*
21
- * If not stated otherwise in this file or this component's LICENSE file the
22
- * following copyright and licenses apply:
23
- *
24
- * Copyright 2023 Comcast Cable Communications Management, LLC.
25
- *
26
- * Licensed under the Apache License, Version 2.0 (the License);
27
- * you may not use this file except in compliance with the License.
28
- * You may obtain a copy of the License at
29
- *
30
- * http://www.apache.org/licenses/LICENSE-2.0
31
- *
32
- * Unless required by applicable law or agreed to in writing, software
33
- * distributed under the License is distributed on an "AS IS" BASIS,
34
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
35
- * See the License for the specific language governing permissions and
36
- * limitations under the License.
37
- */
38
-
39
3
  export const Default: WebGlShaderType = {
40
4
  vertex: `
41
5
  # ifdef GL_FRAGMENT_PRECISION_HIGH
@@ -57,15 +21,15 @@ export const Default: WebGlShaderType = {
57
21
  varying vec2 v_nodeCoords;
58
22
 
59
23
  void main() {
60
- vec2 normalized = a_position * u_pixelRatio;
61
- vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
24
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
25
+ vec2 zero_two = normalized * 2.0;
26
+ vec2 clip_space = zero_two - 1.0;
62
27
 
63
28
  v_color = a_color;
64
- v_nodeCoords = a_nodeCoords;
65
29
  v_textureCoords = a_textureCoords;
30
+ v_nodeCoords = a_nodeCoords;
66
31
 
67
- gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
68
- gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
32
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
69
33
  }
70
34
  `,
71
35
  fragment: `
@@ -82,8 +46,7 @@ export const Default: WebGlShaderType = {
82
46
  varying vec2 v_textureCoords;
83
47
 
84
48
  void main() {
85
- vec4 color = texture2D(u_texture, v_textureCoords);
86
- gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoords);
49
+ gl_FragColor = v_color * texture2D(u_texture, v_textureCoords);
87
50
  }
88
51
  `,
89
52
  };
@@ -1,20 +1,3 @@
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
1
  import { calcFactoredRadiusArray } from '../../lib/utils.js';
19
2
  import {
20
3
  HolePunchTemplate,
@@ -26,17 +9,14 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
26
9
  export const HolePunch: WebGlShaderType<HolePunchProps> = {
27
10
  props: HolePunchTemplate.props,
28
11
  update() {
29
- this.uniform2f('u_pos', this.props!.x, this.props!.y);
12
+ const props = this.props!;
13
+ this.uniform2f('u_pos', props.x, props.y);
30
14
  //precalculate to halfSize once instead of for every pixel
31
- this.uniform2f('u_size', this.props!.width * 0.5, this.props!.height * 0.5);
15
+ this.uniform2f('u_size', props.w * 0.5, props.h * 0.5);
32
16
 
33
17
  this.uniform4fa(
34
18
  'u_radius',
35
- calcFactoredRadiusArray(
36
- this.props!.radius as Vec4,
37
- this.props!.width,
38
- this.props!.height,
39
- ),
19
+ calcFactoredRadiusArray(props.radius as Vec4, props.w, props.h),
40
20
  );
41
21
  },
42
22
  getCacheMarkers(props: HolePunchProps) {
@@ -1,37 +1,20 @@
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
1
  import { getNormalizedRgbaComponents } from '../../lib/utils.js';
19
2
  import {
20
3
  LinearGradientTemplate,
21
4
  type LinearGradientProps,
22
5
  } from '../templates/LinearGradientTemplate.js';
23
- import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
24
6
  import type { WebGlRenderer } from '../../renderers/webgl/WebGlRenderer.js';
25
7
  import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
26
8
 
27
9
  export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
28
10
  props: LinearGradientTemplate.props,
29
11
  update() {
30
- this.uniform1f('u_angle', this.props!.angle - (Math.PI / 180) * 90);
31
- this.uniform1fv('u_stops', new Float32Array(this.props!.stops));
12
+ const props = this.props!;
13
+ this.uniform1f('u_angle', props.angle - (Math.PI / 180) * 90);
14
+ this.uniform1fv('u_stops', new Float32Array(props.stops));
32
15
  const colors: number[] = [];
33
- for (let i = 0; i < this.props!.colors.length; i++) {
34
- const norm = getNormalizedRgbaComponents(this.props!.colors[i]!);
16
+ for (let i = 0; i < props.colors.length; i++) {
17
+ const norm = getNormalizedRgbaComponents(props.colors[i]!);
35
18
  colors.push(norm[0], norm[1], norm[2], norm[3]);
36
19
  }
37
20
  this.uniform4fv('u_colors', new Float32Array(colors));
@@ -39,42 +22,97 @@ export const LinearGradient: WebGlShaderType<LinearGradientProps> = {
39
22
  getCacheMarkers(props: LinearGradientProps) {
40
23
  return `colors:${props.colors.length}`;
41
24
  },
42
- fragment(renderer: WebGlRenderer, props: LinearGradientProps) {
43
- return `
25
+ vertex: `
44
26
  # ifdef GL_FRAGMENT_PRECISION_HIGH
45
27
  precision highp float;
46
28
  # else
47
29
  precision mediump float;
48
30
  # endif
49
31
 
50
- #define PI 3.14159265359
32
+ attribute vec2 a_position;
33
+ attribute vec2 a_textureCoords;
34
+ attribute vec4 a_color;
51
35
 
52
- uniform float u_alpha;
36
+ uniform vec2 u_resolution;
37
+ uniform float u_pixelRatio;
53
38
  uniform vec2 u_dimensions;
54
-
55
- uniform sampler2D u_texture;
56
-
57
39
  uniform float u_angle;
58
- uniform float u_stops[${props.stops.length}];
59
- uniform vec4 u_colors[${props.colors.length}];
60
40
 
61
41
  varying vec4 v_color;
62
42
  varying vec2 v_textureCoords;
43
+ varying float v_dist;
44
+
45
+ const float PI = 3.14159265359;
63
46
 
64
47
  vec2 calcPoint(float d, float angle) {
65
48
  return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
66
49
  }
67
50
 
68
51
  void main() {
69
- vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
52
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
53
+ vec2 zero_two = normalized * 2.0;
54
+ vec2 clip_space = zero_two - 1.0;
55
+
56
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
57
+
58
+ v_color = a_color;
59
+ v_textureCoords = a_textureCoords;
60
+
70
61
  float a = u_angle;
71
62
  float lineDist = abs(u_dimensions.x * cos(a)) + abs(u_dimensions.y * sin(a));
72
63
  vec2 f = calcPoint(lineDist * 0.5, a);
73
64
  vec2 t = calcPoint(lineDist * 0.5, a + PI);
74
65
  vec2 gradVec = t - f;
75
- float dist = dot(v_textureCoords.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
76
- ${genGradientColors(props.stops.length)}
77
- gl_FragColor = mix(color, colorOut, clamp(colorOut.a, 0.0, 1.0));
66
+ float dist = dot(a_textureCoords * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
67
+ v_dist = dist;
68
+ }
69
+ `,
70
+ fragment(renderer: WebGlRenderer, props: LinearGradientProps) {
71
+ return `
72
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
73
+ precision highp float;
74
+ # else
75
+ precision mediump float;
76
+ # endif
77
+
78
+ #define MAX_STOPS ${props.colors.length}
79
+ #define LAST_STOP ${props.colors.length - 1}
80
+
81
+ uniform sampler2D u_texture;
82
+ uniform float u_stops[MAX_STOPS];
83
+ uniform vec4 u_colors[MAX_STOPS];
84
+
85
+ varying vec4 v_color;
86
+ varying vec2 v_textureCoords;
87
+ varying float v_dist;
88
+
89
+ vec4 getGradientColor(float dist) {
90
+ dist = clamp(dist, 0.0, 1.0);
91
+
92
+ if(dist <= u_stops[0]) {
93
+ return u_colors[0];
94
+ }
95
+
96
+ if(dist >= u_stops[LAST_STOP]) {
97
+ return u_colors[LAST_STOP];
98
+ }
99
+
100
+ for(int i = 0; i < LAST_STOP; i++) {
101
+ float left = u_stops[i];
102
+ float right = u_stops[i + 1];
103
+ if(dist >= left && dist <= right) {
104
+ float lDist = smoothstep(left, right, dist);
105
+ return mix(u_colors[i], u_colors[i + 1], lDist);
106
+ }
107
+ }
108
+ return u_colors[LAST_STOP];
109
+ }
110
+
111
+ void main() {
112
+ vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
113
+ vec4 colorOut = getGradientColor(v_dist);
114
+ vec3 blendedRGB = mix(color.rgb, colorOut.rgb, clamp(colorOut.a, 0.0, 1.0));
115
+ gl_FragColor = vec4(blendedRGB, color.a);
78
116
  }
79
117
  `;
80
118
  },
@@ -1,43 +1,26 @@
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
1
  import type { CoreNode } from '../../CoreNode.js';
19
2
  import { getNormalizedRgbaComponents } from '../../lib/utils.js';
20
3
  import {
21
4
  RadialGradientTemplate,
22
5
  type RadialGradientProps,
23
6
  } from '../templates/RadialGradientTemplate.js';
24
- import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
25
- import type { WebGlRenderer } from '../../renderers/webgl/WebGlRenderer.js';
26
7
  import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
8
+ import type { WebGlRenderer } from '../../renderers/webgl/WebGlRenderer.js';
27
9
 
28
10
  export const RadialGradient: WebGlShaderType<RadialGradientProps> = {
29
11
  props: RadialGradientTemplate.props,
30
12
  update(node: CoreNode) {
13
+ const props = this.props!;
31
14
  this.uniform2f(
32
15
  'u_projection',
33
- this.props!.pivot[0] * node.width,
34
- this.props!.pivot[1] * node.height,
16
+ props.pivot[0] * node.w,
17
+ props.pivot[1] * node.h,
35
18
  );
36
- this.uniform2f('u_size', this.props!.width * 0.5, this.props!.height * 0.5);
37
- this.uniform1fv('u_stops', new Float32Array(this.props!.stops));
19
+ this.uniform2f('u_size', props.w, props.h);
20
+ this.uniform1fv('u_stops', new Float32Array(props.stops));
38
21
  const colors: number[] = [];
39
- for (let i = 0; i < this.props!.colors.length; i++) {
40
- const norm = getNormalizedRgbaComponents(this.props!.colors[i]!);
22
+ for (let i = 0; i < props.colors.length; i++) {
23
+ const norm = getNormalizedRgbaComponents(props.colors[i]!);
41
24
  colors.push(norm[0], norm[1], norm[2], norm[3]);
42
25
  }
43
26
  this.uniform4fv('u_colors', new Float32Array(colors));
@@ -47,38 +30,62 @@ export const RadialGradient: WebGlShaderType<RadialGradientProps> = {
47
30
  },
48
31
  fragment(renderer: WebGlRenderer, props: RadialGradientProps) {
49
32
  return `
50
- # ifdef GL_FRAGMENT_PRECISION_HIGH
51
- precision highp float;
52
- # else
53
- precision mediump float;
54
- # endif
33
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
34
+ precision highp float;
35
+ # else
36
+ precision mediump float;
37
+ # endif
55
38
 
56
- #define PI 3.14159265359
39
+ #define MAX_STOPS ${props.colors.length}
40
+ #define LAST_STOP ${props.colors.length - 1}
57
41
 
58
- uniform float u_alpha;
59
- uniform vec2 u_dimensions;
42
+ uniform float u_alpha;
43
+ uniform vec2 u_dimensions;
60
44
 
61
- uniform sampler2D u_texture;
45
+ uniform sampler2D u_texture;
62
46
 
63
- uniform vec2 u_projection;
64
- uniform vec2 u_size;
65
- uniform float u_stops[${props.stops.length}];
66
- uniform vec4 u_colors[${props.colors.length}];
47
+ uniform vec2 u_projection;
48
+ uniform vec2 u_size;
67
49
 
68
- varying vec4 v_color;
69
- varying vec2 v_textureCoords;
50
+ uniform float u_stops[MAX_STOPS];
51
+ uniform vec4 u_colors[MAX_STOPS];
70
52
 
71
- vec2 calcPoint(float d, float angle) {
72
- return d * vec2(cos(angle), sin(angle)) + (u_dimensions * 0.5);
73
- }
53
+ varying vec4 v_color;
54
+ varying vec2 v_textureCoords;
55
+ varying vec2 v_nodeCoords;
74
56
 
75
- void main() {
76
- vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
77
- vec2 point = v_textureCoords.xy * u_dimensions;
78
- float dist = length((point - u_projection) / u_size);
79
- ${genGradientColors(props.stops.length)}
80
- gl_FragColor = mix(color, colorOut, clamp(colorOut.a, 0.0, 1.0));
81
- }
82
- `;
57
+ vec4 getGradientColor(float dist) {
58
+ dist = clamp(dist, 0.0, 1.0);
59
+
60
+ if(dist <= u_stops[0]) {
61
+ return u_colors[0];
62
+ }
63
+
64
+ if(dist >= u_stops[LAST_STOP]) {
65
+ return u_colors[LAST_STOP];
66
+ }
67
+
68
+ for(int i = 0; i < LAST_STOP; i++) {
69
+ float left = u_stops[i];
70
+ float right = u_stops[i + 1];
71
+ if(dist >= left && dist <= right) {
72
+ float lDist = smoothstep(left, right, dist);
73
+ return mix(u_colors[i], u_colors[i + 1], lDist);
74
+ }
75
+ }
76
+
77
+ return u_colors[LAST_STOP];
78
+ }
79
+
80
+ void main() {
81
+ vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
82
+ vec2 point = v_nodeCoords.xy * u_dimensions;
83
+ float dist = length((point - u_projection) / u_size);
84
+
85
+ vec4 colorOut = getGradientColor(dist);
86
+ vec3 blendedRGB = mix(color.rgb, colorOut.rgb, clamp(colorOut.a, 0.0, 1.0));
87
+ gl_FragColor = vec4(blendedRGB, color.a);
88
+ }
89
+ `;
83
90
  },
84
91
  };