@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta20

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 (551) hide show
  1. package/README.md +16 -26
  2. package/dist/exports/canvas.d.ts +1 -1
  3. package/dist/exports/canvas.js +1 -1
  4. package/dist/exports/canvas.js.map +1 -1
  5. package/dist/exports/index.d.ts +2 -5
  6. package/dist/exports/index.js +1 -5
  7. package/dist/exports/index.js.map +1 -1
  8. package/dist/exports/utils.d.ts +2 -1
  9. package/dist/exports/utils.js +2 -1
  10. package/dist/exports/utils.js.map +1 -1
  11. package/dist/exports/webgl.d.ts +2 -1
  12. package/dist/exports/webgl.js +2 -1
  13. package/dist/exports/webgl.js.map +1 -1
  14. package/dist/src/common/CommonTypes.d.ts +13 -2
  15. package/dist/src/core/Autosizer.d.ts +35 -0
  16. package/dist/src/core/Autosizer.js +196 -0
  17. package/dist/src/core/Autosizer.js.map +1 -0
  18. package/dist/src/core/CoreNode.d.ts +73 -95
  19. package/dist/src/core/CoreNode.js +599 -461
  20. package/dist/src/core/CoreNode.js.map +1 -1
  21. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  22. package/dist/src/core/CoreShaderManager.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +74 -87
  24. package/dist/src/core/CoreTextNode.js +357 -232
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +25 -13
  27. package/dist/src/core/CoreTextureManager.js +80 -104
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +92 -33
  30. package/dist/src/core/Stage.js +313 -151
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureError.d.ts +11 -0
  33. package/dist/src/core/TextureError.js +37 -0
  34. package/dist/src/core/TextureError.js.map +1 -0
  35. package/dist/src/core/TextureMemoryManager.d.ts +11 -4
  36. package/dist/src/core/TextureMemoryManager.js +128 -109
  37. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  38. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  39. package/dist/src/core/animations/CoreAnimation.js +8 -3
  40. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  41. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  42. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  43. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  44. package/dist/src/core/lib/ImageWorker.js +1 -1
  45. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  46. package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
  47. package/dist/src/core/lib/WebGlContextWrapper.js +104 -27
  48. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  49. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  50. package/dist/src/core/lib/collectionUtils.js +100 -0
  51. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  52. package/dist/src/core/lib/colorCache.d.ts +1 -0
  53. package/dist/src/core/lib/colorCache.js +19 -0
  54. package/dist/src/core/lib/colorCache.js.map +1 -0
  55. package/dist/src/core/lib/colorParser.d.ts +21 -0
  56. package/dist/src/core/lib/colorParser.js +72 -0
  57. package/dist/src/core/lib/colorParser.js.map +1 -0
  58. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  59. package/dist/src/core/lib/textureCompression.js +320 -67
  60. package/dist/src/core/lib/textureCompression.js.map +1 -1
  61. package/dist/src/core/lib/utils.d.ts +2 -0
  62. package/dist/src/core/lib/utils.js +22 -0
  63. package/dist/src/core/lib/utils.js.map +1 -1
  64. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  65. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  66. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  67. package/dist/src/core/platform.js +30 -5
  68. package/dist/src/core/platform.js.map +1 -1
  69. package/dist/src/core/platforms/Platform.d.ts +42 -0
  70. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  71. package/dist/src/core/platforms/Platform.js.map +1 -0
  72. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  73. package/dist/src/core/platforms/web/WebPlatform.js +87 -0
  74. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  75. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  76. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  77. package/dist/src/core/renderers/CoreRenderer.d.ts +7 -2
  78. package/dist/src/core/renderers/CoreRenderer.js +1 -0
  79. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  80. package/dist/src/core/renderers/CoreShaderNode.d.ts +8 -1
  81. package/dist/src/core/renderers/CoreShaderNode.js +11 -0
  82. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  83. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
  84. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
  85. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  86. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  87. package/dist/src/core/renderers/canvas/CanvasRenderer.js +32 -59
  88. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  89. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  90. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  91. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  92. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  93. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  94. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  95. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  96. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  97. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  98. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  99. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  100. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  101. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  102. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
  103. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +86 -41
  104. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  105. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  106. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
  107. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  108. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  109. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
  110. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  111. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  112. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  113. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  114. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  115. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  116. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  117. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  118. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +95 -49
  119. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
  121. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
  122. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  124. package/dist/src/core/renderers/webgl/WebGlRenderer.js +141 -112
  125. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  126. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  127. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  128. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +6 -3
  129. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +47 -18
  130. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  131. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  132. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  133. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  134. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  135. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  136. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  138. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  139. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  140. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  141. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  142. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  143. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  144. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  145. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  146. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  147. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
  148. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  149. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  150. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
  151. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  152. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  153. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  154. package/dist/src/core/shaders/canvas/Border.js +5 -5
  155. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  156. package/dist/src/core/shaders/canvas/HolePunch.js +3 -3
  157. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  158. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
  159. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  160. package/dist/src/core/shaders/canvas/RadialGradient.js +14 -12
  161. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  162. package/dist/src/core/shaders/canvas/Rounded.js +1 -1
  163. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  164. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  165. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  166. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  167. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  168. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  169. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  170. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +2 -2
  171. package/dist/src/core/shaders/templates/BorderTemplate.js +11 -11
  172. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  173. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  174. package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
  175. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  176. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  177. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  178. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  179. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  180. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  181. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  182. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  183. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  184. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  185. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  186. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  187. package/dist/src/core/shaders/utils.js.map +1 -0
  188. package/dist/src/core/shaders/webgl/Border.js +57 -34
  189. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  190. package/dist/src/core/shaders/webgl/Default.js +6 -7
  191. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  192. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  193. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  194. package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
  195. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  196. package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
  197. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  198. package/dist/src/core/shaders/webgl/Rounded.js +4 -2
  199. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  200. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +81 -37
  201. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  202. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +93 -42
  203. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  204. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +3 -2
  205. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  206. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  207. package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
  208. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  209. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  210. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  211. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  212. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  213. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  214. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  215. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  216. package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
  217. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  218. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  219. package/dist/src/core/text-rendering/SdfTextRenderer.js +311 -0
  220. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  221. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  222. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  223. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  224. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  225. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  226. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  227. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  228. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  229. package/dist/src/core/text-rendering/Utils.js +84 -0
  230. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  231. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  232. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  233. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  234. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  235. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  236. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
  237. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  238. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  239. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  240. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  241. package/dist/src/core/textures/ColorTexture.js +3 -4
  242. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  243. package/dist/src/core/textures/ImageTexture.d.ts +11 -4
  244. package/dist/src/core/textures/ImageTexture.js +31 -40
  245. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  246. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  247. package/dist/src/core/textures/NoiseTexture.js +8 -8
  248. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  249. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  250. package/dist/src/core/textures/RenderTexture.js +12 -12
  251. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  252. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  253. package/dist/src/core/textures/SubTexture.js +19 -37
  254. package/dist/src/core/textures/SubTexture.js.map +1 -1
  255. package/dist/src/core/textures/Texture.d.ts +87 -10
  256. package/dist/src/core/textures/Texture.js +160 -17
  257. package/dist/src/core/textures/Texture.js.map +1 -1
  258. package/dist/src/core/utils.d.ts +3 -2
  259. package/dist/src/core/utils.js +1 -1
  260. package/dist/src/core/utils.js.map +1 -1
  261. package/dist/src/main-api/INode.d.ts +2 -2
  262. package/dist/src/main-api/Inspector.d.ts +130 -1
  263. package/dist/src/main-api/Inspector.js +341 -27
  264. package/dist/src/main-api/Inspector.js.map +1 -1
  265. package/dist/src/main-api/Renderer.d.ts +285 -82
  266. package/dist/src/main-api/Renderer.js +221 -76
  267. package/dist/src/main-api/Renderer.js.map +1 -1
  268. package/dist/src/utils.d.ts +1 -6
  269. package/dist/src/utils.js +2 -9
  270. package/dist/src/utils.js.map +1 -1
  271. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  272. package/dist/tsconfig.tsbuildinfo +1 -0
  273. package/exports/canvas.ts +1 -1
  274. package/exports/index.ts +2 -8
  275. package/exports/utils.ts +7 -1
  276. package/exports/webgl.ts +3 -1
  277. package/package.json +15 -17
  278. package/src/common/CommonTypes.ts +18 -2
  279. package/src/core/CoreNode.test.ts +63 -15
  280. package/src/core/CoreNode.ts +709 -582
  281. package/src/core/CoreShaderManager.ts +5 -10
  282. package/src/core/CoreTextNode.ts +424 -286
  283. package/src/core/CoreTextureManager.ts +110 -130
  284. package/src/core/Stage.ts +394 -195
  285. package/src/core/TextureError.ts +46 -0
  286. package/src/core/TextureMemoryManager.ts +164 -141
  287. package/src/core/animations/CoreAnimation.ts +15 -9
  288. package/src/core/animations/CoreAnimationController.ts +13 -4
  289. package/src/core/lib/ImageWorker.ts +7 -1
  290. package/src/core/lib/WebGlContextWrapper.ts +126 -78
  291. package/src/core/lib/collectionUtils.ts +118 -0
  292. package/src/core/lib/colorCache.ts +20 -0
  293. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  294. package/src/core/lib/textureCompression.ts +433 -75
  295. package/src/core/lib/utils.ts +26 -0
  296. package/src/core/lib/validateImageBitmap.ts +17 -6
  297. package/src/core/platforms/Platform.ts +83 -0
  298. package/src/core/platforms/web/WebPlatform.ts +132 -0
  299. package/src/core/renderers/CoreContextTexture.ts +2 -1
  300. package/src/core/renderers/CoreRenderer.ts +7 -3
  301. package/src/core/renderers/CoreShaderNode.ts +18 -3
  302. package/src/core/renderers/canvas/CanvasRenderer.ts +48 -82
  303. package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
  304. package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
  305. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
  306. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
  307. package/src/core/renderers/webgl/WebGlCtxTexture.ts +124 -81
  308. package/src/core/renderers/webgl/WebGlRenderOp.ts +21 -12
  309. package/src/core/renderers/webgl/WebGlRenderer.ts +172 -137
  310. package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
  311. package/src/core/renderers/webgl/WebGlShaderProgram.ts +58 -20
  312. package/src/core/shaders/canvas/Border.ts +5 -8
  313. package/src/core/shaders/canvas/HolePunch.ts +4 -11
  314. package/src/core/shaders/canvas/LinearGradient.ts +10 -8
  315. package/src/core/shaders/canvas/RadialGradient.ts +23 -37
  316. package/src/core/shaders/canvas/Rounded.ts +2 -2
  317. package/src/core/shaders/canvas/RoundedWithBorder.ts +20 -16
  318. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +17 -17
  319. package/src/core/shaders/canvas/RoundedWithShadow.ts +10 -9
  320. package/src/core/shaders/templates/BorderTemplate.ts +12 -12
  321. package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
  322. package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
  323. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  324. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  325. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  326. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  327. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  328. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  329. package/src/core/shaders/webgl/Border.ts +57 -37
  330. package/src/core/shaders/webgl/Default.ts +6 -7
  331. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  332. package/src/core/shaders/webgl/LinearGradient.ts +33 -8
  333. package/src/core/shaders/webgl/RadialGradient.ts +58 -34
  334. package/src/core/shaders/webgl/Rounded.ts +4 -6
  335. package/src/core/shaders/webgl/RoundedWithBorder.ts +82 -44
  336. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +93 -50
  337. package/src/core/shaders/webgl/RoundedWithShadow.ts +3 -6
  338. package/src/core/shaders/webgl/SdfShader.ts +7 -19
  339. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  340. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  341. package/src/core/text-rendering/SdfFontHandler.ts +591 -0
  342. package/src/core/text-rendering/SdfTextRenderer.ts +411 -0
  343. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  344. package/src/core/text-rendering/TextRenderer.ts +444 -0
  345. package/src/core/text-rendering/Utils.ts +99 -0
  346. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  347. package/src/core/textures/ColorTexture.ts +7 -5
  348. package/src/core/textures/ImageTexture.ts +78 -66
  349. package/src/core/textures/NoiseTexture.ts +14 -12
  350. package/src/core/textures/RenderTexture.ts +18 -16
  351. package/src/core/textures/SubTexture.ts +25 -46
  352. package/src/core/textures/Texture.ts +207 -24
  353. package/src/core/utils.ts +9 -7
  354. package/src/main-api/INode.ts +4 -3
  355. package/src/main-api/Inspector.ts +571 -33
  356. package/src/main-api/Renderer.ts +505 -139
  357. package/src/utils.ts +10 -10
  358. package/dist/exports/core-api.d.ts +0 -74
  359. package/dist/exports/core-api.js +0 -96
  360. package/dist/exports/core-api.js.map +0 -1
  361. package/dist/exports/main-api.d.ts +0 -30
  362. package/dist/exports/main-api.js +0 -45
  363. package/dist/exports/main-api.js.map +0 -1
  364. package/dist/src/core/CoreExtension.d.ts +0 -12
  365. package/dist/src/core/CoreExtension.js +0 -29
  366. package/dist/src/core/CoreExtension.js.map +0 -1
  367. package/dist/src/core/CoreStuff.d.ts +0 -1
  368. package/dist/src/core/CoreStuff.js +0 -138
  369. package/dist/src/core/CoreStuff.js.map +0 -1
  370. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  371. package/dist/src/core/CoreTexturizer.js +0 -47
  372. package/dist/src/core/CoreTexturizer.js.map +0 -1
  373. package/dist/src/core/LngNode.d.ts +0 -736
  374. package/dist/src/core/LngNode.js +0 -1174
  375. package/dist/src/core/LngNode.js.map +0 -1
  376. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  377. package/dist/src/core/Matrix2DContext.js +0 -45
  378. package/dist/src/core/Matrix2DContext.js.map +0 -1
  379. package/dist/src/core/ShaderNode.d.ts +0 -10
  380. package/dist/src/core/ShaderNode.js +0 -30
  381. package/dist/src/core/ShaderNode.js.map +0 -1
  382. package/dist/src/core/TextNode.d.ts +0 -103
  383. package/dist/src/core/TextNode.js +0 -331
  384. package/dist/src/core/TextNode.js.map +0 -1
  385. package/dist/src/core/lib/Coords.d.ts +0 -14
  386. package/dist/src/core/lib/Coords.js +0 -55
  387. package/dist/src/core/lib/Coords.js.map +0 -1
  388. package/dist/src/core/lib/glm/common.d.ts +0 -162
  389. package/dist/src/core/lib/glm/common.js +0 -81
  390. package/dist/src/core/lib/glm/common.js.map +0 -1
  391. package/dist/src/core/lib/glm/index.d.ts +0 -11
  392. package/dist/src/core/lib/glm/index.js +0 -30
  393. package/dist/src/core/lib/glm/index.js.map +0 -1
  394. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  395. package/dist/src/core/lib/glm/mat2.js +0 -396
  396. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  397. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  398. package/dist/src/core/lib/glm/mat2d.js +0 -442
  399. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  400. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  401. package/dist/src/core/lib/glm/mat3.js +0 -680
  402. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  403. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  404. package/dist/src/core/lib/glm/mat4.js +0 -1802
  405. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  406. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  407. package/dist/src/core/lib/glm/quat.js +0 -693
  408. package/dist/src/core/lib/glm/quat.js.map +0 -1
  409. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  410. package/dist/src/core/lib/glm/quat2.js +0 -754
  411. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  412. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  413. package/dist/src/core/lib/glm/vec2.js +0 -569
  414. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  415. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  416. package/dist/src/core/lib/glm/vec3.js +0 -720
  417. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  418. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  419. package/dist/src/core/lib/glm/vec4.js +0 -608
  420. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  421. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  422. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  423. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  424. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  425. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  426. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  427. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  428. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  429. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  430. package/dist/src/core/scene/Scene.d.ts +0 -59
  431. package/dist/src/core/scene/Scene.js +0 -106
  432. package/dist/src/core/scene/Scene.js.map +0 -1
  433. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  434. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  435. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  436. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  437. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  438. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  439. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  440. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  441. package/dist/src/main-api/IShaderController.d.ts +0 -14
  442. package/dist/src/main-api/IShaderController.js +0 -30
  443. package/dist/src/main-api/IShaderController.js.map +0 -1
  444. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  445. package/dist/src/main-api/IShaderNode.js +0 -19
  446. package/dist/src/main-api/IShaderNode.js.map +0 -1
  447. package/dist/src/main-api/RendererMain.d.ts +0 -375
  448. package/dist/src/main-api/RendererMain.js +0 -365
  449. package/dist/src/main-api/RendererMain.js.map +0 -1
  450. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  451. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  452. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  453. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  454. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  455. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  456. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  457. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  458. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  459. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  460. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  461. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  462. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  463. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  464. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  465. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  466. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  467. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  468. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  469. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  470. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  471. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  472. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  473. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  474. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  475. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  476. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  477. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  478. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  479. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  480. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  481. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  482. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  483. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  484. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  485. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  486. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  487. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  488. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  489. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  490. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  491. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  492. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  493. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  494. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  495. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  496. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  497. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  498. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  499. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  500. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  501. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  502. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  503. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  504. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  505. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  506. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  507. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  508. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  509. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  510. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  511. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  512. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  513. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  514. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  515. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  516. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  517. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  518. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  519. package/dist/src/render-drivers/utils.d.ts +0 -12
  520. package/dist/src/render-drivers/utils.js +0 -69
  521. package/dist/src/render-drivers/utils.js.map +0 -1
  522. package/scripts/please-use-pnpm.js +0 -13
  523. package/src/core/platform.ts +0 -64
  524. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  525. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  526. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  527. package/src/core/text-rendering/TrFontManager.ts +0 -183
  528. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  529. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  530. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  531. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  532. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  533. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  534. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  535. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  536. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  537. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
  538. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  539. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  540. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  541. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  542. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  543. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  544. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  545. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  546. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  547. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  548. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  549. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  550. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  551. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
 
20
- import { assertTruthy, createWebGLContext } from '../../../utils.js';
20
+ import { createWebGLContext } from '../../../utils.js';
21
21
  import {
22
22
  CoreRenderer,
23
23
  type BufferInfo,
@@ -35,7 +35,11 @@ import {
35
35
  type WebGlColor,
36
36
  } from './internal/RendererUtils.js';
37
37
  import { WebGlCtxTexture } from './WebGlCtxTexture.js';
38
- import { Texture, TextureType } from '../../textures/Texture.js';
38
+ import {
39
+ Texture,
40
+ TextureType,
41
+ type TextureCoords,
42
+ } from '../../textures/Texture.js';
39
43
  import { SubTexture } from '../../textures/SubTexture.js';
40
44
  import { WebGlCtxSubTexture } from './WebGlCtxSubTexture.js';
41
45
  import { BufferCollection } from './internal/BufferCollection.js';
@@ -48,10 +52,7 @@ import { WebGlCtxRenderTexture } from './WebGlCtxRenderTexture.js';
48
52
  import { Default } from '../../shaders/webgl/Default.js';
49
53
  import type { WebGlShaderType } from './WebGlShaderNode.js';
50
54
  import { WebGlShaderNode } from './WebGlShaderNode.js';
51
- import type { CoreShaderType } from '../CoreShaderNode.js';
52
-
53
- const WORDS_PER_QUAD = 32;
54
- // const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
55
+ import type { Dimensions } from '../../../common/CommonTypes.js';
55
56
 
56
57
  export type WebGlRendererOptions = CoreRendererOptions;
57
58
 
@@ -77,6 +78,13 @@ export class WebGlRenderer extends CoreRenderer {
77
78
  override rttNodes: CoreNode[] = [];
78
79
  activeRttNode: CoreNode | null = null;
79
80
 
81
+ override defaultTextureCoords: TextureCoords = {
82
+ x1: 0,
83
+ y1: 0,
84
+ x2: 1,
85
+ y2: 1,
86
+ };
87
+
80
88
  //// Default Shader
81
89
  defaultShaderNode: WebGlShaderNode | null = null;
82
90
  quadBufferCollection: BufferCollection;
@@ -126,11 +134,10 @@ export class WebGlRenderer extends CoreRenderer {
126
134
  extensions: getWebGlExtensions(this.glw),
127
135
  };
128
136
  const quadBuffer = glw.createBuffer();
129
- assertTruthy(quadBuffer);
130
137
  const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
131
138
  this.quadBufferCollection = new BufferCollection([
132
139
  {
133
- buffer: quadBuffer,
140
+ buffer: quadBuffer!,
134
141
  attributes: {
135
142
  a_position: {
136
143
  name: 'a_position',
@@ -247,133 +254,72 @@ export class WebGlRenderer extends CoreRenderer {
247
254
  * The function updates the length and number of quads in the current render operation, and updates the current buffer index.
248
255
  */
249
256
  addQuad(params: QuadOptions) {
250
- const { fQuadBuffer, uiQuadBuffer } = this;
251
- let texture = params.texture;
257
+ const f = this.fQuadBuffer;
258
+ const u = this.uiQuadBuffer;
259
+ let i = this.curBufferIdx;
252
260
 
253
- assertTruthy(texture !== null, 'Texture is required');
254
-
255
- let { curBufferIdx: bufferIdx } = this;
256
-
257
- if (this.reuseRenderOp(params) === false) {
258
- this.newRenderOp(params, bufferIdx);
261
+ const reuse = this.reuseRenderOp(params);
262
+ if (reuse === false) {
263
+ this.newRenderOp(params, i);
259
264
  }
260
265
 
261
- let texCoordX1 = 0;
262
- let texCoordY1 = 0;
263
- let texCoordX2 = 1;
264
- let texCoordY2 = 1;
265
-
266
- if (texture.type === TextureType.subTexture) {
267
- const {
268
- x: tx,
269
- y: ty,
270
- width: tw,
271
- height: th,
272
- } = (texture as SubTexture).props;
273
- const { width: parentW = 0, height: parentH = 0 } = (
274
- texture as SubTexture
275
- ).parentTexture.dimensions || { width: 0, height: 0 };
276
- texCoordX1 = tx / parentW;
277
- texCoordX2 = texCoordX1 + tw / parentW;
278
- texCoordY1 = ty / parentH;
279
- texCoordY2 = texCoordY1 + th / parentH;
280
- texture = (texture as SubTexture).parentTexture;
266
+ let tx = params.texture!;
267
+ if (tx.type === TextureType.subTexture) {
268
+ tx = (tx as SubTexture).parentTexture;
281
269
  }
282
270
 
283
- if (
284
- texture.type === TextureType.image &&
285
- params.textureOptions !== null &&
286
- params.textureOptions.resizeMode !== undefined &&
287
- texture.dimensions !== null
288
- ) {
289
- const resizeMode = params.textureOptions.resizeMode;
290
- const { width: tw, height: th } = texture.dimensions;
291
- if (resizeMode.type === 'cover') {
292
- const scaleX = params.width / tw;
293
- const scaleY = params.height / th;
294
- const scale = Math.max(scaleX, scaleY);
295
- const precision = 1 / scale;
296
- // Determine based on width
297
- if (scale && scaleX && scaleX < scale) {
298
- const desiredSize = precision * params.width;
299
- texCoordX1 = (1 - desiredSize / tw) * (resizeMode.clipX ?? 0.5);
300
- texCoordX2 = texCoordX1 + desiredSize / tw;
301
- }
302
- // Determine based on height
303
- if (scale && scaleY && scaleY < scale) {
304
- const desiredSize = precision * params.height;
305
- texCoordY1 = (1 - desiredSize / th) * (resizeMode.clipY ?? 0.5);
306
- texCoordY2 = texCoordY1 + desiredSize / th;
307
- }
308
- }
309
- }
271
+ const tidx = this.addTexture(tx.ctxTexture as WebGlCtxTexture, i);
310
272
 
311
- // Flip texture coordinates if dictated by texture options
312
- let flipY = 0;
313
- if (params.textureOptions !== null) {
314
- if (params.textureOptions.flipX === true) {
315
- [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];
316
- }
317
-
318
- // convert to integer for bitwise operation below
319
- flipY = +(params.textureOptions.flipY || false);
320
- }
273
+ const rc = params.renderCoords!;
274
+ const tc = params.textureCoords!;
321
275
 
322
- // Eitherone should be true
323
- if (flipY ^ +(texture.type === TextureType.renderToTexture)) {
324
- [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
325
- }
326
-
327
- const ctxTexture = texture.ctxTexture as WebGlCtxTexture;
328
- assertTruthy(ctxTexture instanceof WebGlCtxTexture);
329
- const textureIdx = this.addTexture(ctxTexture, bufferIdx);
330
-
331
- assertTruthy(this.curRenderOp !== null);
332
- assertTruthy(params.renderCoords);
276
+ const cTl = params.colorTl;
277
+ const cTr = params.colorTr;
278
+ const cBl = params.colorBl;
279
+ const cBr = params.colorBr;
333
280
 
334
281
  // Upper-Left
335
- fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
336
- fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
337
- fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
338
- fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
339
- uiQuadBuffer[bufferIdx++] = params.colorTl; // color
340
- fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
341
- fQuadBuffer[bufferIdx++] = 0; //node X coord
342
- fQuadBuffer[bufferIdx++] = 0; //node y coord
282
+ f[i] = rc.x1;
283
+ f[i + 1] = rc.y1;
284
+ f[i + 2] = tc.x1;
285
+ f[i + 3] = tc.y1;
286
+ u[i + 4] = cTl;
287
+ f[i + 5] = tidx;
288
+ f[i + 6] = 0;
289
+ f[i + 7] = 0;
343
290
 
344
291
  // Upper-Right
345
- fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
346
- fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
347
- fQuadBuffer[bufferIdx++] = texCoordX2;
348
- fQuadBuffer[bufferIdx++] = texCoordY1;
349
- uiQuadBuffer[bufferIdx++] = params.colorTr;
350
- fQuadBuffer[bufferIdx++] = textureIdx;
351
- fQuadBuffer[bufferIdx++] = 1; //node X coord
352
- fQuadBuffer[bufferIdx++] = 0; //node y coord
292
+ f[i + 8] = rc.x2;
293
+ f[i + 9] = rc.y2;
294
+ f[i + 10] = tc.x2;
295
+ f[i + 11] = tc.y1;
296
+ u[i + 12] = cTr;
297
+ f[i + 13] = tidx;
298
+ f[i + 14] = 1;
299
+ f[i + 15] = 0;
353
300
 
354
301
  // Lower-Left
355
- fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
356
- fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
357
- fQuadBuffer[bufferIdx++] = texCoordX1;
358
- fQuadBuffer[bufferIdx++] = texCoordY2;
359
- uiQuadBuffer[bufferIdx++] = params.colorBl;
360
- fQuadBuffer[bufferIdx++] = textureIdx;
361
- fQuadBuffer[bufferIdx++] = 0; //node X coord
362
- fQuadBuffer[bufferIdx++] = 1; //node y coord
302
+ f[i + 16] = rc.x4;
303
+ f[i + 17] = rc.y4;
304
+ f[i + 18] = tc.x1;
305
+ f[i + 19] = tc.y2;
306
+ u[i + 20] = cBl;
307
+ f[i + 21] = tidx;
308
+ f[i + 22] = 0;
309
+ f[i + 23] = 1;
363
310
 
364
311
  // Lower-Right
365
- fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
366
- fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
367
- fQuadBuffer[bufferIdx++] = texCoordX2;
368
- fQuadBuffer[bufferIdx++] = texCoordY2;
369
- uiQuadBuffer[bufferIdx++] = params.colorBr;
370
- fQuadBuffer[bufferIdx++] = textureIdx;
371
- fQuadBuffer[bufferIdx++] = 1; //node X coord
372
- fQuadBuffer[bufferIdx++] = 1; //node y coord
373
-
374
- // Update the length of the current render op
375
- this.curRenderOp.numQuads++;
376
- this.curBufferIdx = bufferIdx;
312
+ f[i + 24] = rc.x3;
313
+ f[i + 25] = rc.y3;
314
+ f[i + 26] = tc.x2;
315
+ f[i + 27] = tc.y2;
316
+ u[i + 28] = cBr;
317
+ f[i + 29] = tidx;
318
+ f[i + 30] = 1;
319
+ f[i + 31] = 1;
320
+
321
+ this.curRenderOp!.numQuads++;
322
+ this.curBufferIdx = i + 32;
377
323
  }
378
324
 
379
325
  /**
@@ -406,14 +352,13 @@ export class WebGlRenderer extends CoreRenderer {
406
352
  bufferIdx: number,
407
353
  recursive?: boolean,
408
354
  ): number {
409
- assertTruthy(this.curRenderOp);
410
- const textureIdx = this.curRenderOp.addTexture(texture);
355
+ const textureIdx = this.curRenderOp!.addTexture(texture);
411
356
  // TODO: Refactor to be more DRY
412
357
  if (textureIdx === 0xffffffff) {
413
358
  if (recursive) {
414
359
  throw new Error('Unable to add texture to render op');
415
360
  }
416
- this.newRenderOp(this.curRenderOp, bufferIdx);
361
+ this.newRenderOp(this.curRenderOp!, bufferIdx);
417
362
  return this.addTexture(texture, bufferIdx, true);
418
363
  }
419
364
  return textureIdx;
@@ -440,16 +385,30 @@ export class WebGlRenderer extends CoreRenderer {
440
385
  return false;
441
386
  }
442
387
 
443
- // Force new render operation if rendering to texture
444
- // @todo: This needs to be improved, render operations could also be reused
445
- // for rendering to texture
388
+ // Force new render operation if rendering to texture is different
446
389
  if (
447
- params.parentHasRenderTexture !== undefined ||
448
- params.rtt !== undefined
390
+ this.curRenderOp.parentHasRenderTexture !==
391
+ params.parentHasRenderTexture ||
392
+ this.curRenderOp.rtt !== params.rtt
449
393
  ) {
450
394
  return false;
451
395
  }
452
396
 
397
+ if (
398
+ params.parentHasRenderTexture === true &&
399
+ this.curRenderOp.framebufferDimensions !== null &&
400
+ params.framebufferDimensions !== null
401
+ ) {
402
+ if (
403
+ this.curRenderOp.framebufferDimensions.w !==
404
+ params.framebufferDimensions.w ||
405
+ this.curRenderOp.framebufferDimensions.h !==
406
+ params.framebufferDimensions.h
407
+ ) {
408
+ return false;
409
+ }
410
+ }
411
+
453
412
  if (
454
413
  this.curRenderOp.shader.shaderKey === 'default' &&
455
414
  params.shader?.shaderKey === 'default'
@@ -608,8 +567,7 @@ export class WebGlRenderer extends CoreRenderer {
608
567
  // Skip nodes that are not visible
609
568
  if (
610
569
  node.worldAlpha === 0 ||
611
- (node.strictBounds === true &&
612
- node.renderState === CoreNodeRenderState.OutOfBounds)
570
+ node.renderState === CoreNodeRenderState.OutOfBounds
613
571
  ) {
614
572
  continue;
615
573
  }
@@ -622,10 +580,7 @@ export class WebGlRenderer extends CoreRenderer {
622
580
  // Set the active RTT node to the current node
623
581
  // So we can prevent rendering children of nested RTT nodes
624
582
  this.activeRttNode = node;
625
-
626
- assertTruthy(node.texture !== null, 'RTT node missing texture');
627
- const ctxTexture = node.texture.ctxTexture;
628
- assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
583
+ const ctxTexture = node.texture.ctxTexture as WebGlCtxRenderTexture;
629
584
  this.renderToTextureActive = true;
630
585
 
631
586
  // Bind the the texture's framebuffer
@@ -667,6 +622,10 @@ export class WebGlRenderer extends CoreRenderer {
667
622
  this.renderToTextureActive = false;
668
623
  }
669
624
 
625
+ updateViewport(): void {
626
+ this.glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);
627
+ }
628
+
670
629
  removeRTTNode(node: CoreNode) {
671
630
  const index = this.rttNodes.indexOf(node);
672
631
  if (index === -1) {
@@ -694,9 +653,86 @@ export class WebGlRenderer extends CoreRenderer {
694
653
  return this.defaultShaderNode;
695
654
  }
696
655
 
656
+ override getTextureCoords(node: CoreNode): TextureCoords | undefined {
657
+ const texture = node.texture;
658
+ if (texture === null) {
659
+ return undefined;
660
+ }
661
+
662
+ //this stuff needs to be properly moved to CtxSubTexture at some point in the future.
663
+ const ctxTexture =
664
+ (texture as SubTexture).parentTexture !== undefined
665
+ ? (texture as SubTexture).parentTexture.ctxTexture
666
+ : texture.ctxTexture;
667
+ if (ctxTexture === undefined) {
668
+ return undefined;
669
+ }
670
+
671
+ const textureOptions = node.props.textureOptions;
672
+
673
+ //early exit for textures with no options unless its a subtexture
674
+ if (
675
+ texture.type !== TextureType.subTexture &&
676
+ textureOptions === undefined
677
+ ) {
678
+ return (ctxTexture as WebGlCtxTexture).txCoords;
679
+ }
680
+
681
+ let { x1, x2, y1, y2 } = (ctxTexture as WebGlCtxTexture).txCoords;
682
+ if (texture.type === TextureType.subTexture) {
683
+ const { w: parentW, h: parentH } = (texture as SubTexture).parentTexture
684
+ .dimensions!;
685
+ const { x, y, w, h } = (texture as SubTexture).props;
686
+ x1 = x / parentW;
687
+ y1 = y / parentH;
688
+ x2 = x1 + w / parentW;
689
+ y2 = y1 + h / parentH;
690
+ }
691
+
692
+ const resizeMode = textureOptions.resizeMode;
693
+ if (
694
+ resizeMode !== undefined &&
695
+ resizeMode.type === 'cover' &&
696
+ texture.dimensions !== null
697
+ ) {
698
+ const dimensions = texture.dimensions as Dimensions;
699
+ const w = node.props.w;
700
+ const h = node.props.h;
701
+ const scaleX = w / dimensions.w;
702
+ const scaleY = h / dimensions.h;
703
+ const scale = Math.max(scaleX, scaleY);
704
+ const precision = 1 / scale;
705
+
706
+ // Determine based on width
707
+ if (scaleX < scale) {
708
+ const desiredSize = precision * node.props.w;
709
+ x1 = (1 - desiredSize / dimensions.w) * (resizeMode.clipX ?? 0.5);
710
+ x2 = x1 + desiredSize / dimensions.w;
711
+ }
712
+ // Determine based on height
713
+ if (scaleY < scale) {
714
+ const desiredSize = precision * node.props.h;
715
+ y1 = (1 - desiredSize / dimensions.h) * (resizeMode.clipY ?? 0.5);
716
+ y2 = y1 + desiredSize / dimensions.h;
717
+ }
718
+ }
719
+
720
+ if (textureOptions.flipX === true) {
721
+ [x1, x2] = [x2, x1];
722
+ }
723
+ if (textureOptions.flipY === true) {
724
+ [y1, y2] = [y2, y1];
725
+ }
726
+ return {
727
+ x1,
728
+ y1,
729
+ x2,
730
+ y2,
731
+ };
732
+ }
733
+
697
734
  /**
698
- * Updates the WebGL context's clear color and clears the color buffer.
699
- *
735
+ * Sets the glClearColor to the specified color. *
700
736
  * @param color - The color to set as the clear color, represented as a 32-bit integer.
701
737
  */
702
738
  updateClearColor(color: number) {
@@ -715,6 +751,5 @@ export class WebGlRenderer extends CoreRenderer {
715
751
  raw: color,
716
752
  normalized: normalizedColor,
717
753
  };
718
- glw.clear();
719
754
  }
720
755
  }
@@ -90,11 +90,9 @@ export class WebGlShaderNode<
90
90
  this.updater!(this.node as CoreNode, this.props);
91
91
  return;
92
92
  }
93
+
93
94
  const prevKey = this.valueKey;
94
- this.valueKey = '';
95
- for (const key in this.resolvedProps) {
96
- this.valueKey += `${key}:${this.resolvedProps[key]!};`;
97
- }
95
+ this.valueKey = this.createValueKey();
98
96
 
99
97
  if (prevKey === this.valueKey) {
100
98
  return;
@@ -35,8 +35,7 @@ import {
35
35
  } from './internal/ShaderUtils.js';
36
36
 
37
37
  export class WebGlShaderProgram implements CoreShaderProgram {
38
- protected boundBufferCollection: BufferCollection | null = null;
39
- protected program: WebGLProgram;
38
+ protected program: WebGLProgram | null;
40
39
  /**
41
40
  * Vertex Array Object
42
41
  *
@@ -46,10 +45,13 @@ export class WebGlShaderProgram implements CoreShaderProgram {
46
45
  protected vao: WebGLVertexArrayObject | undefined;
47
46
  protected renderer: WebGlRenderer;
48
47
  protected glw: WebGlContextWrapper;
49
- protected attributeLocations: Record<string, number>;
48
+ protected attributeLocations: string[];
49
+ protected uniformLocations: Record<string, WebGLUniformLocation> | null;
50
50
  protected lifecycle: Pick<WebGlShaderType, 'update' | 'canBatch'>;
51
51
  protected useSystemAlpha = false;
52
52
  protected useSystemDimensions = false;
53
+ protected useTimeValue = false;
54
+ public isDestroyed = false;
53
55
  supportsIndexedTextures = false;
54
56
 
55
57
  constructor(
@@ -117,10 +119,14 @@ export class WebGlShaderProgram implements CoreShaderProgram {
117
119
  this.program = program;
118
120
  this.attributeLocations = glw.getAttributeLocations(program);
119
121
 
120
- this.useSystemAlpha =
121
- this.glw.getUniformLocation(program, 'u_alpha') !== null;
122
- this.useSystemDimensions =
123
- this.glw.getUniformLocation(program, 'u_dimensions') !== null;
122
+ const uniLocs = (this.uniformLocations = glw.getUniformLocations(program));
123
+
124
+ this.useSystemAlpha = uniLocs['u_alpha'] !== undefined;
125
+ this.useSystemDimensions = uniLocs['u_dimensions'] !== undefined;
126
+
127
+ this.useTimeValue =
128
+ this.glw.getUniformLocation(program, 'u_dimensions') !== null &&
129
+ config.time !== undefined;
124
130
 
125
131
  this.lifecycle = {
126
132
  update: config.update,
@@ -133,9 +139,8 @@ export class WebGlShaderProgram implements CoreShaderProgram {
133
139
  }
134
140
 
135
141
  disableAttributes() {
136
- const { glw } = this;
137
- const attribs = Object.keys(this.attributeLocations);
138
- const attribLen = attribs.length;
142
+ const glw = this.glw;
143
+ const attribLen = this.attributeLocations.length;
139
144
  for (let i = 0; i < attribLen; i++) {
140
145
  glw.disableVertexAttribArray(i);
141
146
  }
@@ -149,6 +154,12 @@ export class WebGlShaderProgram implements CoreShaderProgram {
149
154
  return this.lifecycle.canBatch(incomingQuad, currentRenderOp);
150
155
  }
151
156
 
157
+ if (this.useTimeValue === true) {
158
+ if (incomingQuad.time !== currentRenderOp.time) {
159
+ return false;
160
+ }
161
+ }
162
+
152
163
  if (this.useSystemAlpha === true) {
153
164
  if (incomingQuad.alpha !== currentRenderOp.alpha) {
154
165
  return false;
@@ -169,6 +180,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
169
180
  if (incomingQuad.shader !== null) {
170
181
  shaderPropsA = incomingQuad.shader.resolvedProps;
171
182
  }
183
+
172
184
  if (currentRenderOp.shader !== null) {
173
185
  shaderPropsB = currentRenderOp.shader.resolvedProps;
174
186
  }
@@ -205,13 +217,13 @@ export class WebGlShaderProgram implements CoreShaderProgram {
205
217
  // Bind render texture framebuffer dimensions as resolution
206
218
  // if the parent has a render texture
207
219
  if (parentHasRenderTexture === true) {
208
- const { width, height } = renderOp.framebufferDimensions!;
220
+ const { w, h } = renderOp.framebufferDimensions!;
209
221
  // Force pixel ratio to 1.0 for render textures since they are always 1:1
210
222
  // the final render texture will be rendered to the screen with the correct pixel ratio
211
223
  this.glw.uniform1f('u_pixelRatio', 1.0);
212
224
 
213
225
  // Set resolution to the framebuffer dimensions
214
- this.glw.uniform2f('u_resolution', width, height);
226
+ this.glw.uniform2f('u_resolution', w, h);
215
227
  } else {
216
228
  this.glw.uniform1f('u_pixelRatio', renderOp.renderer.stage.pixelRatio);
217
229
  this.glw.uniform2f(
@@ -221,13 +233,17 @@ export class WebGlShaderProgram implements CoreShaderProgram {
221
233
  );
222
234
  }
223
235
 
224
- // if (this.useSystemAlpha) {
225
- this.glw.uniform1f('u_alpha', renderOp.alpha);
226
- // }
236
+ if (this.useTimeValue === true) {
237
+ this.glw.uniform1f('u_time', renderOp.time as number);
238
+ }
239
+
240
+ if (this.useSystemAlpha === true) {
241
+ this.glw.uniform1f('u_alpha', renderOp.alpha);
242
+ }
227
243
 
228
- // if (this.useSystemDimensions) {
229
- this.glw.uniform2f('u_dimensions', renderOp.width, renderOp.height);
230
- // }
244
+ if (this.useSystemDimensions === true) {
245
+ this.glw.uniform2f('u_dimensions', renderOp.width, renderOp.height);
246
+ }
231
247
 
232
248
  /**temporary fix to make sdf texts work */
233
249
  if (renderOp.sdfShaderProps !== undefined) {
@@ -277,7 +293,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
277
293
 
278
294
  bindBufferCollection(buffer: BufferCollection) {
279
295
  const { glw } = this;
280
- const attribs = Object.keys(this.attributeLocations);
296
+ const attribs = this.attributeLocations;
281
297
  const attribLen = attribs.length;
282
298
 
283
299
  for (let i = 0; i < attribLen; i++) {
@@ -306,7 +322,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
306
322
  }
307
323
 
308
324
  attach(): void {
309
- this.glw.useProgram(this.program);
325
+ if (this.isDestroyed === true) {
326
+ return;
327
+ }
328
+ this.glw.useProgram(this.program, this.uniformLocations!);
310
329
  if (this.glw.isWebGl2() && this.vao) {
311
330
  this.glw.bindVertexArray(this.vao);
312
331
  }
@@ -315,4 +334,23 @@ export class WebGlShaderProgram implements CoreShaderProgram {
315
334
  detach(): void {
316
335
  this.disableAttributes();
317
336
  }
337
+
338
+ destroy() {
339
+ if (this.isDestroyed === true) {
340
+ return;
341
+ }
342
+ const glw = this.glw;
343
+
344
+ this.detach();
345
+
346
+ glw.deleteProgram(this.program!);
347
+ this.program = null;
348
+ this.uniformLocations = null;
349
+
350
+ const attribs = this.attributeLocations;
351
+ const attribLen = this.attributeLocations.length;
352
+ for (let i = 0; i < attribLen; i++) {
353
+ this.glw.deleteBuffer(attribs[i]!);
354
+ }
355
+ }
318
356
  }
@@ -15,12 +15,9 @@
15
15
  * SPDX-License-Identifier: Apache-2.0
16
16
  */
17
17
 
18
+ import { formatRgba, parseColorRgba } from '../../lib/colorParser.js';
18
19
  import { valuesAreEqual } from '../../lib/utils.js';
19
20
  import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
20
- import {
21
- formatRgba,
22
- parseColorRgba,
23
- } from '../../renderers/canvas/internal/ColorUtils.js';
24
21
  import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
25
22
  import {
26
23
  BorderTemplate,
@@ -38,13 +35,13 @@ export const Border: CanvasShaderType<BorderProps, ComputedBorderValues> = {
38
35
  props: BorderTemplate.props,
39
36
  update() {
40
37
  this.computed.borderColor = formatRgba(parseColorRgba(this.props!.color));
41
- this.computed.borderAsym = !valuesAreEqual(this.props!.width as number[]);
38
+ this.computed.borderAsym = !valuesAreEqual(this.props!.w as number[]);
42
39
  },
43
40
  render(ctx, quad, renderContext) {
44
41
  renderContext();
45
42
  ctx.strokeStyle = this.computed.borderColor!;
46
- if (this.computed.borderAsym === false && this.props!.width[0] > 0) {
47
- const bWidth = this.props!.width[0];
43
+ if (this.computed.borderAsym === false && this.props!.w[0] > 0) {
44
+ const bWidth = this.props!.w[0];
48
45
  const bHalfWidth = bWidth * 0.5;
49
46
  ctx.lineWidth = bWidth;
50
47
  ctx.beginPath();
@@ -57,7 +54,7 @@ export const Border: CanvasShaderType<BorderProps, ComputedBorderValues> = {
57
54
  return;
58
55
  }
59
56
 
60
- const { 0: t, 1: r, 2: b, 3: l } = this.props!.width as Vec4;
57
+ const { 0: t, 1: r, 2: b, 3: l } = this.props!.w as Vec4;
61
58
  if (t > 0) {
62
59
  const y = quad.ty + t * 0.5;
63
60
  strokeLine(ctx, quad.tx, y, quad.tx + quad.width, y, t);
@@ -36,23 +36,16 @@ export const HolePunch: CanvasShaderType<
36
36
  update() {
37
37
  this.computed.radius = calcFactoredRadiusArray(
38
38
  this.props!.radius as Vec4,
39
- this.props!.width,
40
- this.props!.height,
39
+ this.props!.w,
40
+ this.props!.h,
41
41
  );
42
42
  },
43
43
  render(ctx, quad, renderContext) {
44
44
  ctx.save();
45
45
  renderContext();
46
- const { x, y, width, height } = this.props!;
46
+ const { x, y, w, h } = this.props!;
47
47
  ctx.beginPath();
48
- roundRect(
49
- ctx,
50
- quad.tx + x,
51
- quad.ty + y,
52
- width,
53
- height,
54
- this.computed.radius!,
55
- );
48
+ roundRect(ctx, quad.tx + x, quad.ty + y, w, h, this.computed.radius!);
56
49
  ctx.closePath();
57
50
  ctx.fillStyle = 'black';
58
51
  ctx.globalCompositeOperation = 'destination-out';