@lightningjs/renderer 2.12.1 → 3.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/exports/canvas-shaders.d.ts +10 -0
  2. package/dist/exports/canvas-shaders.js +27 -0
  3. package/dist/exports/canvas-shaders.js.map +1 -0
  4. package/dist/exports/canvas.d.ts +7 -1
  5. package/dist/exports/canvas.js +7 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +15 -8
  8. package/dist/exports/index.js +7 -4
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/webgl-shaders.d.ts +11 -0
  11. package/dist/exports/webgl-shaders.js +28 -0
  12. package/dist/exports/webgl-shaders.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +9 -1
  14. package/dist/exports/webgl.js +9 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/core/CoreNode.d.ts +19 -5
  17. package/dist/src/core/CoreNode.js +117 -24
  18. package/dist/src/core/CoreNode.js.map +1 -1
  19. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  20. package/dist/src/core/CoreShaderManager.js +110 -97
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreTextNode.js +1 -1
  23. package/dist/src/core/CoreTextNode.js.map +1 -1
  24. package/dist/src/core/CoreTextureManager.d.ts +13 -7
  25. package/dist/src/core/CoreTextureManager.js +92 -105
  26. package/dist/src/core/CoreTextureManager.js.map +1 -1
  27. package/dist/src/core/Stage.d.ts +15 -16
  28. package/dist/src/core/Stage.js +45 -32
  29. package/dist/src/core/Stage.js.map +1 -1
  30. package/dist/src/core/TextureMemoryManager.d.ts +16 -6
  31. package/dist/src/core/TextureMemoryManager.js +75 -17
  32. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  33. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  34. package/dist/src/core/animations/CoreAnimation.js +6 -52
  35. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  36. package/dist/src/core/lib/ImageWorker.d.ts +1 -1
  37. package/dist/src/core/lib/ImageWorker.js +13 -11
  38. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  39. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  40. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  41. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  42. package/dist/src/core/lib/textureCompression.js +0 -1
  43. package/dist/src/core/lib/textureCompression.js.map +1 -1
  44. package/dist/src/core/lib/utils.d.ts +4 -0
  45. package/dist/src/core/lib/utils.js +26 -0
  46. package/dist/src/core/lib/utils.js.map +1 -1
  47. package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
  48. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  49. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  50. package/dist/src/core/platform.js +4 -3
  51. package/dist/src/core/platform.js.map +1 -1
  52. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  53. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  54. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  55. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  56. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  57. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  58. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  59. package/{src/core/renderers/CoreShader.ts → dist/src/core/renderers/CoreShaderProgram.js} +2 -23
  60. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  61. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  62. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  63. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  64. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  65. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  66. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  67. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  68. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  69. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  70. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  71. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  72. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  74. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  75. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  76. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -12
  77. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  79. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  80. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  82. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  83. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  85. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  86. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  89. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  90. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  91. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  92. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  93. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  94. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  95. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  96. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  97. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  98. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  99. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  100. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  101. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  102. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  103. package/dist/src/core/shaders/canvas/Border.js +57 -0
  104. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  105. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  106. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  107. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  108. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  109. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  110. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  111. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  112. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  113. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  114. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  115. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  116. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  117. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  118. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  119. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  120. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  121. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  122. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  123. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  124. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  125. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  126. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  127. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  128. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  129. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  130. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  131. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  132. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  133. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  134. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  135. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  136. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  137. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  138. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  139. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  140. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  141. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  142. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  143. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  144. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  145. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  146. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  147. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  148. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  149. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  150. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  151. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  152. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  153. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  154. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  155. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  156. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  157. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  158. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  159. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  160. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  161. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  162. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  163. package/dist/src/core/shaders/webgl/Border.js +87 -0
  164. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  165. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  166. package/dist/src/core/shaders/webgl/Default.js +86 -0
  167. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  168. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  169. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  170. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  171. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  172. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  173. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  174. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  175. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  176. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  177. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  178. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  179. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  180. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  181. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  182. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  183. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  184. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  185. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  186. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  187. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  188. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  189. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  190. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  191. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  192. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  193. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  194. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  195. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  196. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  197. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  198. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  199. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  200. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  201. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  202. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  206. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  207. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  208. package/dist/src/core/textures/ImageTexture.js +10 -16
  209. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  210. package/dist/src/core/textures/Texture.d.ts +1 -1
  211. package/dist/src/main-api/INode.d.ts +9 -9
  212. package/dist/src/main-api/Inspector.js +16 -2
  213. package/dist/src/main-api/Inspector.js.map +1 -1
  214. package/dist/src/main-api/Renderer.d.ts +35 -92
  215. package/dist/src/main-api/Renderer.js +11 -57
  216. package/dist/src/main-api/Renderer.js.map +1 -1
  217. package/dist/src/utils.d.ts +6 -0
  218. package/dist/src/utils.js +18 -0
  219. package/dist/src/utils.js.map +1 -1
  220. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  221. package/exports/canvas-shaders.ts +28 -0
  222. package/exports/canvas.ts +7 -1
  223. package/exports/index.ts +17 -17
  224. package/exports/webgl-shaders.ts +28 -0
  225. package/exports/webgl.ts +13 -1
  226. package/package.json +3 -1
  227. package/src/core/CoreNode.test.ts +157 -153
  228. package/src/core/CoreNode.ts +173 -38
  229. package/src/core/CoreShaderManager.ts +127 -226
  230. package/src/core/CoreTextNode.ts +1 -8
  231. package/src/core/CoreTextureManager.ts +127 -126
  232. package/src/core/Stage.ts +62 -44
  233. package/src/core/TextureMemoryManager.ts +108 -27
  234. package/src/core/animations/CoreAnimation.ts +8 -64
  235. package/src/core/lib/ImageWorker.ts +20 -12
  236. package/src/core/lib/WebGlContextWrapper.ts +228 -236
  237. package/src/core/lib/textureCompression.ts +3 -3
  238. package/src/core/lib/utils.ts +51 -0
  239. package/src/core/lib/validateImageBitmap.ts +76 -0
  240. package/src/core/platform.ts +6 -3
  241. package/src/core/renderers/CoreRenderer.ts +19 -27
  242. package/src/core/renderers/CoreShaderNode.ts +171 -0
  243. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
  244. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  245. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  246. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +1 -1
  247. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
  248. package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
  249. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
  250. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
  251. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +12 -14
  252. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +56 -36
  253. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +143 -243
  254. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  255. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  256. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
  257. package/src/core/shaders/canvas/Border.ts +78 -0
  258. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  259. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  260. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  261. package/src/core/shaders/canvas/Rounded.ts +55 -0
  262. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  263. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  264. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  265. package/src/core/shaders/canvas/Shadow.ts +52 -0
  266. package/src/core/shaders/canvas/utils/render.ts +151 -0
  267. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  268. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  269. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  270. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  271. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  272. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  273. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  274. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  275. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  276. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  277. package/src/core/shaders/webgl/Border.ts +96 -0
  278. package/src/core/shaders/webgl/Default.ts +89 -0
  279. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  280. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  281. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  282. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  283. package/src/core/shaders/webgl/Rounded.ts +117 -0
  284. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  285. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  286. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  287. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  288. package/src/core/shaders/webgl/Shadow.ts +115 -0
  289. package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
  290. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
  291. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
  292. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -56
  293. package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
  294. package/src/core/textures/ImageTexture.ts +11 -17
  295. package/src/core/textures/Texture.ts +1 -1
  296. package/src/main-api/INode.ts +11 -13
  297. package/src/main-api/Inspector.ts +19 -2
  298. package/src/main-api/Renderer.ts +59 -130
  299. package/src/utils.ts +19 -0
  300. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  301. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  302. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  303. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  304. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  305. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  306. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  307. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  308. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  309. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  310. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  311. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  312. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  313. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  314. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  315. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  316. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  317. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  318. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  319. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  320. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  321. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  322. package/src/main-api/DynamicShaderController.ts +0 -104
  323. package/src/main-api/ShaderController.ts +0 -80
@@ -55,7 +55,7 @@ import type { AnimationSettings } from './animations/CoreAnimation.js';
55
55
  import type { IAnimationController } from '../common/IAnimationController.js';
56
56
  import { CoreAnimation } from './animations/CoreAnimation.js';
57
57
  import { CoreAnimationController } from './animations/CoreAnimationController.js';
58
- import type { BaseShaderController } from '../main-api/ShaderController.js';
58
+ import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
59
59
 
60
60
  export enum CoreNodeRenderState {
61
61
  Init = 0,
@@ -195,6 +195,11 @@ export enum UpdateType {
195
195
  * All
196
196
  */
197
197
  All = 14335,
198
+
199
+ /**
200
+ * RecalcUniforms
201
+ */
202
+ RecalcUniforms = 16384,
198
203
  }
199
204
 
200
205
  /**
@@ -268,6 +273,12 @@ export interface CoreNodeProps {
268
273
  * @default `false`
269
274
  */
270
275
  autosize: boolean;
276
+ /**
277
+ * Margin around the Node's bounds for preloading
278
+ *
279
+ * @default `null`
280
+ */
281
+ boundsMargin: number | [number, number, number, number] | null;
271
282
  /**
272
283
  * Clipping Mode
273
284
  *
@@ -441,7 +452,7 @@ export interface CoreNodeProps {
441
452
  * Note: If this is a Text Node, the Shader will be managed by the Node's
442
453
  * {@link TextRenderer} and should not be set explicitly.
443
454
  */
444
- shader: BaseShaderController;
455
+ shader: CoreShaderNode<any> | null;
445
456
  /**
446
457
  * Image URL
447
458
  *
@@ -725,7 +736,9 @@ export class CoreNode extends EventEmitter {
725
736
  public globalTransform?: Matrix3d;
726
737
  public scaleRotateTransform?: Matrix3d;
727
738
  public localTransform?: Matrix3d;
739
+ public sceneGlobalTransform?: Matrix3d;
728
740
  public renderCoords?: RenderCoords;
741
+ public sceneRenderCoords?: RenderCoords;
729
742
  public renderBound?: Bound;
730
743
  public strictBound?: Bound;
731
744
  public preloadBound?: Bound;
@@ -752,20 +765,32 @@ export class CoreNode extends EventEmitter {
752
765
  constructor(readonly stage: Stage, props: CoreNodeProps) {
753
766
  super();
754
767
 
755
- this.props = {
756
- ...props,
768
+ this.props = Object.assign({}, props, {
757
769
  parent: null,
758
770
  texture: null,
771
+ shader: null,
759
772
  src: null,
760
773
  rtt: false,
761
- };
774
+ });
762
775
 
763
776
  // Assign props to instance
764
777
  this.parent = props.parent;
765
778
  this.texture = props.texture;
779
+ this.shader = props.shader;
766
780
  this.src = props.src;
767
781
  this.rtt = props.rtt;
768
782
 
783
+ if (props.boundsMargin) {
784
+ this.boundsMargin = Array.isArray(props.boundsMargin)
785
+ ? props.boundsMargin
786
+ : [
787
+ props.boundsMargin,
788
+ props.boundsMargin,
789
+ props.boundsMargin,
790
+ props.boundsMargin,
791
+ ];
792
+ }
793
+
769
794
  this.setUpdateType(
770
795
  UpdateType.ScaleRotate |
771
796
  UpdateType.Local |
@@ -1024,7 +1049,7 @@ export class CoreNode extends EventEmitter {
1024
1049
  }
1025
1050
 
1026
1051
  const parent = this.props.parent;
1027
- let renderState = null;
1052
+ let renderState: CoreNodeRenderState | null = null;
1028
1053
 
1029
1054
  // Handle specific RTT updates at this node level
1030
1055
  if (this.updateType & UpdateType.RenderTexture && this.rtt) {
@@ -1034,23 +1059,48 @@ export class CoreNode extends EventEmitter {
1034
1059
  if (this.updateType & UpdateType.Global) {
1035
1060
  assertTruthy(this.localTransform);
1036
1061
 
1037
- this.globalTransform = Matrix3d.copy(
1038
- parent?.globalTransform || this.localTransform,
1039
- this.globalTransform,
1040
- );
1041
-
1042
- if (this.parentHasRenderTexture && this.props.parent?.rtt) {
1062
+ if (this.parentHasRenderTexture === true && parent?.rtt === true) {
1063
+ // we are at the start of the RTT chain, so we need to reset the globalTransform
1064
+ // for correct RTT rendering
1043
1065
  this.globalTransform = Matrix3d.identity();
1066
+
1067
+ // Maintain a full scene global transform for bounds detection
1068
+ this.sceneGlobalTransform = Matrix3d.copy(
1069
+ parent?.globalTransform || Matrix3d.identity(),
1070
+ ).multiply(this.localTransform);
1071
+ } else if (
1072
+ this.parentHasRenderTexture === true &&
1073
+ parent?.rtt === false
1074
+ ) {
1075
+ // we're part of an RTT chain but our parent is not the main RTT node
1076
+ // so we need to propogate the sceneGlobalTransform of the parent
1077
+ // to maintain a full scene global transform for bounds detection
1078
+ this.sceneGlobalTransform = Matrix3d.copy(
1079
+ parent?.sceneGlobalTransform || this.localTransform,
1080
+ ).multiply(this.localTransform);
1081
+
1082
+ this.globalTransform = Matrix3d.copy(
1083
+ parent?.globalTransform || this.localTransform,
1084
+ this.globalTransform,
1085
+ );
1086
+ } else {
1087
+ this.globalTransform = Matrix3d.copy(
1088
+ parent?.globalTransform || this.localTransform,
1089
+ this.globalTransform,
1090
+ );
1044
1091
  }
1045
1092
 
1046
- if (parent) {
1093
+ if (parent !== null) {
1047
1094
  this.globalTransform.multiply(this.localTransform);
1048
1095
  }
1049
-
1050
1096
  this.calculateRenderCoords();
1051
1097
  this.updateBoundingRect();
1052
1098
 
1053
- this.setUpdateType(UpdateType.RenderState | UpdateType.Children);
1099
+ this.setUpdateType(
1100
+ UpdateType.RenderState |
1101
+ UpdateType.Children |
1102
+ UpdateType.RecalcUniforms,
1103
+ );
1054
1104
  this.childUpdateType |= UpdateType.Global;
1055
1105
 
1056
1106
  if (this.clipping === true) {
@@ -1063,6 +1113,8 @@ export class CoreNode extends EventEmitter {
1063
1113
  this.createRenderBounds();
1064
1114
  this.setUpdateType(UpdateType.RenderState);
1065
1115
  this.setUpdateType(UpdateType.Children);
1116
+
1117
+ this.childUpdateType |= UpdateType.RenderBounds;
1066
1118
  }
1067
1119
 
1068
1120
  if (this.updateType & UpdateType.RenderState) {
@@ -1150,9 +1202,18 @@ export class CoreNode extends EventEmitter {
1150
1202
  this.props.strictBounds === true &&
1151
1203
  this.renderState === CoreNodeRenderState.OutOfBounds
1152
1204
  ) {
1205
+ this.updateType &= ~UpdateType.RenderBounds; // remove render bounds update
1153
1206
  return;
1154
1207
  }
1155
1208
 
1209
+ if (
1210
+ this.shader?.update !== undefined &&
1211
+ (this.updateType & UpdateType.Local ||
1212
+ this.updateType & UpdateType.RecalcUniforms)
1213
+ ) {
1214
+ this.shader.update();
1215
+ }
1216
+
1156
1217
  if (this.updateType & UpdateType.Children && this.children.length > 0) {
1157
1218
  for (let i = 0, length = this.children.length; i < length; i++) {
1158
1219
  const child = this.children[i] as CoreNode;
@@ -1266,11 +1327,6 @@ export class CoreNode extends EventEmitter {
1266
1327
  assertTruthy(this.strictBound);
1267
1328
  assertTruthy(this.preloadBound);
1268
1329
 
1269
- // if we are part of a parent render texture, we're always in bounds
1270
- if (this.parentHasRenderTexture === true) {
1271
- return this.getRTTParentRenderState() || CoreNodeRenderState.OutOfBounds;
1272
- }
1273
-
1274
1330
  if (boundInsideBound(this.renderBound, this.strictBound)) {
1275
1331
  return CoreNodeRenderState.InViewport;
1276
1332
  }
@@ -1296,7 +1352,9 @@ export class CoreNode extends EventEmitter {
1296
1352
  }
1297
1353
 
1298
1354
  updateBoundingRect() {
1299
- const { renderCoords, globalTransform: transform } = this;
1355
+ const transform = this.sceneGlobalTransform || this.globalTransform;
1356
+ const renderCoords = this.sceneRenderCoords || this.renderCoords;
1357
+
1300
1358
  assertTruthy(transform);
1301
1359
  assertTruthy(renderCoords);
1302
1360
 
@@ -1331,7 +1389,7 @@ export class CoreNode extends EventEmitter {
1331
1389
 
1332
1390
  this.preloadBound = createPreloadBounds(
1333
1391
  this.strictBound,
1334
- this.stage.boundsMargin,
1392
+ this.boundsMargin as [number, number, number, number],
1335
1393
  );
1336
1394
  } else {
1337
1395
  // no parent or parent does not have a bound, take the stage boundaries
@@ -1357,7 +1415,10 @@ export class CoreNode extends EventEmitter {
1357
1415
 
1358
1416
  // clipping is enabled and we are in bounds create our own bounds
1359
1417
  const { x, y, width, height } = this.props;
1360
- const { tx, ty } = this.globalTransform || {};
1418
+
1419
+ // Pick the global transform if available, otherwise use the local transform
1420
+ // global transform is only available if the node in an RTT chain
1421
+ const { tx, ty } = this.sceneGlobalTransform || this.globalTransform || {};
1361
1422
  const _x = tx ?? x;
1362
1423
  const _y = ty ?? y;
1363
1424
  this.strictBound = createBound(
@@ -1370,7 +1431,7 @@ export class CoreNode extends EventEmitter {
1370
1431
 
1371
1432
  this.preloadBound = createPreloadBounds(
1372
1433
  this.strictBound,
1373
- this.stage.boundsMargin,
1434
+ this.boundsMargin as [number, number, number, number],
1374
1435
  );
1375
1436
  }
1376
1437
 
@@ -1487,13 +1548,11 @@ export class CoreNode extends EventEmitter {
1487
1548
  }
1488
1549
 
1489
1550
  calculateRenderCoords() {
1490
- const { width, height, globalTransform: transform } = this;
1491
- assertTruthy(transform);
1492
- const { tx, ty, ta, tb, tc, td } = transform;
1551
+ const { width, height } = this;
1552
+ const { tx, ty, ta, tb, tc, td } = this.globalTransform!;
1493
1553
  if (tb === 0 && tc === 0) {
1494
1554
  const minX = tx;
1495
1555
  const maxX = tx + width * ta;
1496
-
1497
1556
  const minY = ty;
1498
1557
  const maxY = ty + height * td;
1499
1558
  this.renderCoords = RenderCoords.translate(
@@ -1528,6 +1587,55 @@ export class CoreNode extends EventEmitter {
1528
1587
  this.renderCoords,
1529
1588
  );
1530
1589
  }
1590
+ if (this.sceneGlobalTransform === undefined) {
1591
+ return;
1592
+ }
1593
+
1594
+ const {
1595
+ tx: stx,
1596
+ ty: sty,
1597
+ ta: sta,
1598
+ tb: stb,
1599
+ tc: stc,
1600
+ td: std,
1601
+ } = this.sceneGlobalTransform;
1602
+ if (stb === 0 && stc === 0) {
1603
+ const minX = stx;
1604
+ const maxX = stx + width * sta;
1605
+ const minY = sty;
1606
+ const maxY = sty + height * std;
1607
+ this.sceneRenderCoords = RenderCoords.translate(
1608
+ //top-left
1609
+ minX,
1610
+ minY,
1611
+ //top-right
1612
+ maxX,
1613
+ minY,
1614
+ //bottom-right
1615
+ maxX,
1616
+ maxY,
1617
+ //bottom-left
1618
+ minX,
1619
+ maxY,
1620
+ this.sceneRenderCoords,
1621
+ );
1622
+ } else {
1623
+ this.sceneRenderCoords = RenderCoords.translate(
1624
+ //top-left
1625
+ stx,
1626
+ sty,
1627
+ //top-right
1628
+ stx + width * sta,
1629
+ sty + width * stc,
1630
+ //bottom-right
1631
+ stx + width * sta + height * stb,
1632
+ sty + width * stc + height * std,
1633
+ //bottom-left
1634
+ stx + height * stb,
1635
+ sty + height * std,
1636
+ this.sceneRenderCoords,
1637
+ );
1638
+ }
1531
1639
  }
1532
1640
 
1533
1641
  /**
@@ -1542,7 +1650,6 @@ export class CoreNode extends EventEmitter {
1542
1650
  assertTruthy(this.globalTransform);
1543
1651
  const { clippingRect, props, globalTransform: gt } = this;
1544
1652
  const { clipping } = props;
1545
-
1546
1653
  const isRotated = gt.tb !== 0 || gt.tc !== 0;
1547
1654
 
1548
1655
  if (clipping === true && isRotated === false) {
@@ -1595,7 +1702,7 @@ export class CoreNode extends EventEmitter {
1595
1702
  this.localTransform = undefined;
1596
1703
 
1597
1704
  this.props.texture = null;
1598
- this.props.shader = this.stage.defShaderCtr;
1705
+ this.props.shader = this.stage.defShaderNode;
1599
1706
 
1600
1707
  while (this.children.length > 0) {
1601
1708
  this.children[0]?.destroy();
@@ -1640,8 +1747,7 @@ export class CoreNode extends EventEmitter {
1640
1747
  texture: this.texture || this.stage.defaultTexture,
1641
1748
  textureOptions: this.textureOptions,
1642
1749
  zIndex: this.zIndex,
1643
- shader: this.shader.shader,
1644
- shaderProps: this.shader.getResolvedProps(),
1750
+ shader: this.props.shader as CoreShaderNode<any>,
1645
1751
  alpha: this.worldAlpha,
1646
1752
  clippingRect: this.clippingRect,
1647
1753
  tx: this.globalTransform.tx,
@@ -1887,6 +1993,31 @@ export class CoreNode extends EventEmitter {
1887
1993
  this.props.autosize = value;
1888
1994
  }
1889
1995
 
1996
+ get boundsMargin(): number | [number, number, number, number] | null {
1997
+ return (
1998
+ this.props.boundsMargin ??
1999
+ this.parent?.boundsMargin ??
2000
+ this.stage.boundsMargin
2001
+ );
2002
+ }
2003
+
2004
+ set boundsMargin(value: number | [number, number, number, number] | null) {
2005
+ if (value === this.props.boundsMargin) {
2006
+ return;
2007
+ }
2008
+
2009
+ if (value === null) {
2010
+ this.props.boundsMargin = value;
2011
+ } else {
2012
+ const bm: [number, number, number, number] = Array.isArray(value)
2013
+ ? value
2014
+ : [value, value, value, value];
2015
+
2016
+ this.props.boundsMargin = bm;
2017
+ }
2018
+ this.setUpdateType(UpdateType.RenderBounds);
2019
+ }
2020
+
1890
2021
  get clipping(): boolean {
1891
2022
  return this.props.clipping;
1892
2023
  }
@@ -2160,17 +2291,21 @@ export class CoreNode extends EventEmitter {
2160
2291
  }
2161
2292
  }
2162
2293
 
2163
- get shader(): BaseShaderController {
2294
+ get shader(): CoreShaderNode<any> | null {
2164
2295
  return this.props.shader;
2165
2296
  }
2166
2297
 
2167
- set shader(value: BaseShaderController) {
2168
- if (this.props.shader === value) {
2298
+ set shader(shader: CoreShaderNode<any> | null) {
2299
+ if (this.props.shader === shader) {
2169
2300
  return;
2170
2301
  }
2171
-
2172
- this.props.shader = value;
2173
-
2302
+ if (shader === null) {
2303
+ this.props.shader = this.stage.defShaderNode;
2304
+ this.setUpdateType(UpdateType.IsRenderable);
2305
+ return;
2306
+ }
2307
+ shader.attachNode(this);
2308
+ this.props.shader = shader;
2174
2309
  this.setUpdateType(UpdateType.IsRenderable);
2175
2310
  }
2176
2311