@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
@@ -0,0 +1,10 @@
1
+ export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
2
+ export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
3
+ export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
4
+ export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
5
+ export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
6
+ export { Border } from '../src/core/shaders/canvas/Border.js';
7
+ export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
8
+ export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
9
+ export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
10
+ export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Copyright 2023 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+ export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
18
+ export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
19
+ export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
20
+ export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
21
+ export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
22
+ export { Border } from '../src/core/shaders/canvas/Border.js';
23
+ export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
24
+ export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
25
+ export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
26
+ export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
27
+ //# sourceMappingURL=canvas-shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-shaders.js","sourceRoot":"","sources":["../../exports/canvas-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,kDAAkD,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC"}
@@ -17,4 +17,10 @@
17
17
  * @packageDocumentation
18
18
  */
19
19
  export { CanvasTextRenderer } from '../src/core/text-rendering/renderers/CanvasTextRenderer.js';
20
- export { CanvasCoreRenderer } from '../src/core/renderers/canvas/CanvasCoreRenderer.js';
20
+ export { CanvasRenderer } from '../src/core/renderers/canvas/CanvasRenderer.js';
21
+ export { CanvasTexture } from '../src/core/renderers/canvas/CanvasTexture.js';
22
+ export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
23
+ /**
24
+ * @deprecated Use CanvasRenderer.
25
+ */
26
+ export { CanvasRenderer as CanvasCoreRenderer } from '../src/core/renderers/canvas/CanvasRenderer.js';
@@ -35,5 +35,11 @@
35
35
  * @packageDocumentation
36
36
  */
37
37
  export { CanvasTextRenderer } from '../src/core/text-rendering/renderers/CanvasTextRenderer.js';
38
- export { CanvasCoreRenderer } from '../src/core/renderers/canvas/CanvasCoreRenderer.js';
38
+ export { CanvasRenderer } from '../src/core/renderers/canvas/CanvasRenderer.js';
39
+ export { CanvasTexture } from '../src/core/renderers/canvas/CanvasTexture.js';
40
+ export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
41
+ /**
42
+ * @deprecated Use CanvasRenderer.
43
+ */
44
+ export { CanvasRenderer as CanvasCoreRenderer } from '../src/core/renderers/canvas/CanvasRenderer.js';
39
45
  //# sourceMappingURL=canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../exports/canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC"}
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../exports/canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,cAAc,kDAAkD,CAAC;AACjE;;GAEG;AACH,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,gDAAgD,CAAC"}
@@ -19,23 +19,22 @@
19
19
  */
20
20
  export * from '../src/main-api/INode.js';
21
21
  export * from '../src/main-api/Renderer.js';
22
- export * from '../src/main-api/ShaderController.js';
23
- export * from '../src/main-api/DynamicShaderController.js';
24
22
  export * from '../src/common/IAnimationController.js';
25
23
  export * from '../src/common/CommonTypes.js';
26
24
  export { CoreTextureManager, type TextureMap, } from '../src/core/CoreTextureManager.js';
27
25
  export type { MemoryInfo } from '../src/core/TextureMemoryManager.js';
28
- export type { ShaderMap, EffectMap } from '../src/core/CoreShaderManager.js';
29
26
  export type { TextRendererMap } from '../src/core/text-rendering/renderers/TextRenderer.js';
30
27
  export type { TrFontFaceMap } from '../src/core/text-rendering/font-face-types/TrFontFace.js';
31
28
  export type { AnimationSettings } from '../src/core/animations/CoreAnimation.js';
32
- export type { EffectProps, FadeOutEffectProps, LinearGradientEffectProps, RadialGradientEffectProps, GrayscaleEffectProps, GlitchEffectProps, RadialProgressEffectProps, HolePunchEffectProps, } from '../src/core/CoreShaderManager.js';
33
- export type { WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlCoreRenderer.js';
34
- export type { WebGlCoreCtxTexture } from '../src/core/renderers/webgl/WebGlCoreCtxTexture.js';
35
29
  export type { Inspector } from '../src/main-api/Inspector.js';
36
30
  export type { CoreNodeRenderState } from '../src/core/CoreNode.js';
37
- export * from '../src/core/renderers/webgl/WebGlCoreShader.js';
38
- export * from '../src/core/renderers/webgl/shaders/effects/ShaderEffect.js';
31
+ export * from '../src/core/renderers/CoreShaderNode.js';
32
+ export * from '../src/core/shaders/templates/BorderTemplate.js';
33
+ export * from '../src/core/shaders/templates/HolePunchTemplate.js';
34
+ export * from '../src/core/shaders/templates/RoundedTemplate.js';
35
+ export * from '../src/core/shaders/templates/LinearGradientTemplate.js';
36
+ export * from '../src/core/shaders/templates/RadialGradientTemplate.js';
37
+ export * from '../src/core/renderers/webgl/WebGlShaderProgram.js';
39
38
  export type { ShaderProgramSources } from '../src/core/renderers/webgl/internal/ShaderUtils.js';
40
39
  export * from '../src/core/textures/Texture.js';
41
40
  export { ImageTexture } from '../src/core/textures/ImageTexture.js';
@@ -43,3 +42,11 @@ export * from '../src/core/text-rendering/font-face-types/TrFontFace.js';
43
42
  export * from '../src/core/text-rendering/font-face-types/WebTrFontFace.js';
44
43
  export * from '../src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js';
45
44
  export type * from '../src/core/Stage.js';
45
+ /**
46
+ * @deprecated Use `import { WebGlRenderer } @lightningjs/renderer/webgl` instead
47
+ */
48
+ export type { WebGlRenderer as WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlRenderer.js';
49
+ /**
50
+ * @deprecated Use `import { WebGlCtxTexture } @lightningjs/renderer/webgl` instead
51
+ */
52
+ export type { WebGlCtxTexture as WebGlCoreCtxTexture } from '../src/core/renderers/webgl/WebGlCtxTexture.js';
@@ -37,16 +37,19 @@
37
37
  */
38
38
  export * from '../src/main-api/INode.js';
39
39
  export * from '../src/main-api/Renderer.js';
40
- export * from '../src/main-api/ShaderController.js';
41
- export * from '../src/main-api/DynamicShaderController.js';
42
40
  export * from '../src/common/IAnimationController.js';
43
41
  export * from '../src/common/CommonTypes.js';
44
42
  // Selected types exported from the Core Renderer that can be used in the
45
43
  // context of the main API.
46
44
  export { CoreTextureManager, } from '../src/core/CoreTextureManager.js';
45
+ export * from '../src/core/renderers/CoreShaderNode.js';
46
+ export * from '../src/core/shaders/templates/BorderTemplate.js';
47
+ export * from '../src/core/shaders/templates/HolePunchTemplate.js';
48
+ export * from '../src/core/shaders/templates/RoundedTemplate.js';
49
+ export * from '../src/core/shaders/templates/LinearGradientTemplate.js';
50
+ export * from '../src/core/shaders/templates/RadialGradientTemplate.js';
47
51
  // Shaders
48
- export * from '../src/core/renderers/webgl/WebGlCoreShader.js';
49
- export * from '../src/core/renderers/webgl/shaders/effects/ShaderEffect.js';
52
+ export * from '../src/core/renderers/webgl/WebGlShaderProgram.js';
50
53
  // Textures
51
54
  export * from '../src/core/textures/Texture.js';
52
55
  export { ImageTexture } from '../src/core/textures/ImageTexture.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../exports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,GAEnB,MAAM,mCAAmC,CAAC;AAqB3C,UAAU;AACV,cAAc,gDAAgD,CAAC;AAC/D,cAAc,6DAA6D,CAAC;AAG5E,WAAW;AACX,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,yBAAyB;AACzB,wEAAwE;AACxE,cAAc,0DAA0D,CAAC;AACzE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,2EAA2E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../exports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAE7C,yEAAyE;AACzE,2BAA2B;AAC3B,OAAO,EACL,kBAAkB,GAEnB,MAAM,mCAAmC,CAAC;AAQ3C,cAAc,yCAAyC,CAAC;AACxD,cAAc,iDAAiD,CAAC;AAChE,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AACjE,cAAc,yDAAyD,CAAC;AACxE,cAAc,yDAAyD,CAAC;AAExE,UAAU;AACV,cAAc,mDAAmD,CAAC;AAGlE,WAAW;AACX,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,yBAAyB;AACzB,wEAAwE;AACxE,cAAc,0DAA0D,CAAC;AACzE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,2EAA2E,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
2
+ export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
3
+ export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
4
+ export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
5
+ export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
6
+ export { Border } from '../src/core/shaders/webgl/Border.js';
7
+ export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
8
+ export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
9
+ export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
10
+ export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
11
+ export { Default } from '../src/core/shaders/webgl/Default.js';
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright 2023 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+ export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
18
+ export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
19
+ export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
20
+ export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
21
+ export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
22
+ export { Border } from '../src/core/shaders/webgl/Border.js';
23
+ export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
24
+ export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
25
+ export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
26
+ export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
27
+ export { Default } from '../src/core/shaders/webgl/Default.js';
28
+ //# sourceMappingURL=webgl-shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-shaders.js","sourceRoot":"","sources":["../../exports/webgl-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,cAAc,gDAAgD,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC"}
@@ -16,4 +16,12 @@
16
16
  * @packageDocumentation
17
17
  */
18
18
  export { SdfTextRenderer } from '../src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';
19
- export { WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlCoreRenderer.js';
19
+ export { WebGlRenderer } from '../src/core/renderers/webgl/WebGlRenderer.js';
20
+ export { WebGlCtxTexture } from '../src/core/renderers/webgl/WebGlCtxTexture.js';
21
+ export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
22
+ /**
23
+ * @deprecated Use WebGlRenderer.
24
+ */
25
+ export { WebGlRenderer as WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlRenderer.js';
26
+ export { WebGlRenderer as WebGlCoreCtxTexture } from '../src/core/renderers/webgl/WebGlRenderer.js';
27
+ export * as shaders from './webgl-shaders.js';
@@ -34,5 +34,13 @@
34
34
  * @packageDocumentation
35
35
  */
36
36
  export { SdfTextRenderer } from '../src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';
37
- export { WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlCoreRenderer.js';
37
+ export { WebGlRenderer } from '../src/core/renderers/webgl/WebGlRenderer.js';
38
+ export { WebGlCtxTexture } from '../src/core/renderers/webgl/WebGlCtxTexture.js';
39
+ export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
40
+ /**
41
+ * @deprecated Use WebGlRenderer.
42
+ */
43
+ export { WebGlRenderer as WebGlCoreRenderer } from '../src/core/renderers/webgl/WebGlRenderer.js';
44
+ export { WebGlRenderer as WebGlCoreCtxTexture } from '../src/core/renderers/webgl/WebGlRenderer.js';
45
+ export * as shaders from './webgl-shaders.js';
38
46
  //# sourceMappingURL=webgl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl.js","sourceRoot":"","sources":["../../exports/webgl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yEAAyE,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC"}
1
+ {"version":3,"file":"webgl.js","sourceRoot":"","sources":["../../exports/webgl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yEAAyE,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,cAAc,gDAAgD,CAAC;AAE/D;;GAEG;AACH,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEpG,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC"}
@@ -9,7 +9,7 @@ import { Matrix3d } from './lib/Matrix3d.js';
9
9
  import { RenderCoords } from './lib/RenderCoords.js';
10
10
  import type { AnimationSettings } from './animations/CoreAnimation.js';
11
11
  import type { IAnimationController } from '../common/IAnimationController.js';
12
- import type { BaseShaderController } from '../main-api/ShaderController.js';
12
+ import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
13
13
  export declare enum CoreNodeRenderState {
14
14
  Init = 0,
15
15
  OutOfBounds = 2,
@@ -125,7 +125,11 @@ export declare enum UpdateType {
125
125
  /**
126
126
  * All
127
127
  */
128
- All = 14335
128
+ All = 14335,
129
+ /**
130
+ * RecalcUniforms
131
+ */
132
+ RecalcUniforms = 16384
129
133
  }
130
134
  /**
131
135
  * A custom data map which can be stored on an CoreNode
@@ -197,6 +201,12 @@ export interface CoreNodeProps {
197
201
  * @default `false`
198
202
  */
199
203
  autosize: boolean;
204
+ /**
205
+ * Margin around the Node's bounds for preloading
206
+ *
207
+ * @default `null`
208
+ */
209
+ boundsMargin: number | [number, number, number, number] | null;
200
210
  /**
201
211
  * Clipping Mode
202
212
  *
@@ -368,7 +378,7 @@ export interface CoreNodeProps {
368
378
  * Note: If this is a Text Node, the Shader will be managed by the Node's
369
379
  * {@link TextRenderer} and should not be set explicitly.
370
380
  */
371
- shader: BaseShaderController;
381
+ shader: CoreShaderNode<any> | null;
372
382
  /**
373
383
  * Image URL
374
384
  *
@@ -643,7 +653,9 @@ export declare class CoreNode extends EventEmitter {
643
653
  globalTransform?: Matrix3d;
644
654
  scaleRotateTransform?: Matrix3d;
645
655
  localTransform?: Matrix3d;
656
+ sceneGlobalTransform?: Matrix3d;
646
657
  renderCoords?: RenderCoords;
658
+ sceneRenderCoords?: RenderCoords;
647
659
  renderBound?: Bound;
648
660
  strictBound?: Bound;
649
661
  preloadBound?: Bound;
@@ -774,6 +786,8 @@ export declare class CoreNode extends EventEmitter {
774
786
  set alpha(value: number);
775
787
  get autosize(): boolean;
776
788
  set autosize(value: boolean);
789
+ get boundsMargin(): number | [number, number, number, number] | null;
790
+ set boundsMargin(value: number | [number, number, number, number] | null);
777
791
  get clipping(): boolean;
778
792
  set clipping(value: boolean);
779
793
  get color(): number;
@@ -809,8 +823,8 @@ export declare class CoreNode extends EventEmitter {
809
823
  private markChildrenWithRTT;
810
824
  private applyRTTInheritance;
811
825
  private clearRTTInheritance;
812
- get shader(): BaseShaderController;
813
- set shader(value: BaseShaderController);
826
+ get shader(): CoreShaderNode<any> | null;
827
+ set shader(shader: CoreShaderNode<any> | null);
814
828
  get src(): string | null;
815
829
  set src(imageUrl: string | null);
816
830
  set imageType(type: 'regular' | 'compressed' | 'svg' | null);
@@ -147,6 +147,10 @@ export var UpdateType;
147
147
  * All
148
148
  */
149
149
  UpdateType[UpdateType["All"] = 14335] = "All";
150
+ /**
151
+ * RecalcUniforms
152
+ */
153
+ UpdateType[UpdateType["RecalcUniforms"] = 16384] = "RecalcUniforms";
150
154
  })(UpdateType || (UpdateType = {}));
151
155
  /**
152
156
  * A visual Node in the Renderer scene graph.
@@ -166,7 +170,9 @@ export class CoreNode extends EventEmitter {
166
170
  globalTransform;
167
171
  scaleRotateTransform;
168
172
  localTransform;
173
+ sceneGlobalTransform;
169
174
  renderCoords;
175
+ sceneRenderCoords;
170
176
  renderBound;
171
177
  strictBound;
172
178
  preloadBound;
@@ -191,18 +197,29 @@ export class CoreNode extends EventEmitter {
191
197
  constructor(stage, props) {
192
198
  super();
193
199
  this.stage = stage;
194
- this.props = {
195
- ...props,
200
+ this.props = Object.assign({}, props, {
196
201
  parent: null,
197
202
  texture: null,
203
+ shader: null,
198
204
  src: null,
199
205
  rtt: false,
200
- };
206
+ });
201
207
  // Assign props to instance
202
208
  this.parent = props.parent;
203
209
  this.texture = props.texture;
210
+ this.shader = props.shader;
204
211
  this.src = props.src;
205
212
  this.rtt = props.rtt;
213
+ if (props.boundsMargin) {
214
+ this.boundsMargin = Array.isArray(props.boundsMargin)
215
+ ? props.boundsMargin
216
+ : [
217
+ props.boundsMargin,
218
+ props.boundsMargin,
219
+ props.boundsMargin,
220
+ props.boundsMargin,
221
+ ];
222
+ }
206
223
  this.setUpdateType(UpdateType.ScaleRotate |
207
224
  UpdateType.Local |
208
225
  UpdateType.RenderBounds |
@@ -418,16 +435,32 @@ export class CoreNode extends EventEmitter {
418
435
  }
419
436
  if (this.updateType & UpdateType.Global) {
420
437
  assertTruthy(this.localTransform);
421
- this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);
422
- if (this.parentHasRenderTexture && this.props.parent?.rtt) {
438
+ if (this.parentHasRenderTexture === true && parent?.rtt === true) {
439
+ // we are at the start of the RTT chain, so we need to reset the globalTransform
440
+ // for correct RTT rendering
423
441
  this.globalTransform = Matrix3d.identity();
442
+ // Maintain a full scene global transform for bounds detection
443
+ this.sceneGlobalTransform = Matrix3d.copy(parent?.globalTransform || Matrix3d.identity()).multiply(this.localTransform);
424
444
  }
425
- if (parent) {
445
+ else if (this.parentHasRenderTexture === true &&
446
+ parent?.rtt === false) {
447
+ // we're part of an RTT chain but our parent is not the main RTT node
448
+ // so we need to propogate the sceneGlobalTransform of the parent
449
+ // to maintain a full scene global transform for bounds detection
450
+ this.sceneGlobalTransform = Matrix3d.copy(parent?.sceneGlobalTransform || this.localTransform).multiply(this.localTransform);
451
+ this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);
452
+ }
453
+ else {
454
+ this.globalTransform = Matrix3d.copy(parent?.globalTransform || this.localTransform, this.globalTransform);
455
+ }
456
+ if (parent !== null) {
426
457
  this.globalTransform.multiply(this.localTransform);
427
458
  }
428
459
  this.calculateRenderCoords();
429
460
  this.updateBoundingRect();
430
- this.setUpdateType(UpdateType.RenderState | UpdateType.Children);
461
+ this.setUpdateType(UpdateType.RenderState |
462
+ UpdateType.Children |
463
+ UpdateType.RecalcUniforms);
431
464
  this.childUpdateType |= UpdateType.Global;
432
465
  if (this.clipping === true) {
433
466
  this.setUpdateType(UpdateType.Clipping | UpdateType.RenderBounds);
@@ -438,6 +471,7 @@ export class CoreNode extends EventEmitter {
438
471
  this.createRenderBounds();
439
472
  this.setUpdateType(UpdateType.RenderState);
440
473
  this.setUpdateType(UpdateType.Children);
474
+ this.childUpdateType |= UpdateType.RenderBounds;
441
475
  }
442
476
  if (this.updateType & UpdateType.RenderState) {
443
477
  renderState = this.checkRenderBounds();
@@ -495,8 +529,14 @@ export class CoreNode extends EventEmitter {
495
529
  }
496
530
  if (this.props.strictBounds === true &&
497
531
  this.renderState === CoreNodeRenderState.OutOfBounds) {
532
+ this.updateType &= ~UpdateType.RenderBounds; // remove render bounds update
498
533
  return;
499
534
  }
535
+ if (this.shader?.update !== undefined &&
536
+ (this.updateType & UpdateType.Local ||
537
+ this.updateType & UpdateType.RecalcUniforms)) {
538
+ this.shader.update();
539
+ }
500
540
  if (this.updateType & UpdateType.Children && this.children.length > 0) {
501
541
  for (let i = 0, length = this.children.length; i < length; i++) {
502
542
  const child = this.children[i];
@@ -589,10 +629,6 @@ export class CoreNode extends EventEmitter {
589
629
  assertTruthy(this.renderBound);
590
630
  assertTruthy(this.strictBound);
591
631
  assertTruthy(this.preloadBound);
592
- // if we are part of a parent render texture, we're always in bounds
593
- if (this.parentHasRenderTexture === true) {
594
- return this.getRTTParentRenderState() || CoreNodeRenderState.OutOfBounds;
595
- }
596
632
  if (boundInsideBound(this.renderBound, this.strictBound)) {
597
633
  return CoreNodeRenderState.InViewport;
598
634
  }
@@ -611,7 +647,8 @@ export class CoreNode extends EventEmitter {
611
647
  return CoreNodeRenderState.OutOfBounds;
612
648
  }
613
649
  updateBoundingRect() {
614
- const { renderCoords, globalTransform: transform } = this;
650
+ const transform = this.sceneGlobalTransform || this.globalTransform;
651
+ const renderCoords = this.sceneRenderCoords || this.renderCoords;
615
652
  assertTruthy(transform);
616
653
  assertTruthy(renderCoords);
617
654
  const { tb, tc } = transform;
@@ -630,7 +667,7 @@ export class CoreNode extends EventEmitter {
630
667
  // we have a parent with a valid bound, copy it
631
668
  const parentBound = this.parent.strictBound;
632
669
  this.strictBound = createBound(parentBound.x1, parentBound.y1, parentBound.x2, parentBound.y2);
633
- this.preloadBound = createPreloadBounds(this.strictBound, this.stage.boundsMargin);
670
+ this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
634
671
  }
635
672
  else {
636
673
  // no parent or parent does not have a bound, take the stage boundaries
@@ -652,11 +689,13 @@ export class CoreNode extends EventEmitter {
652
689
  }
653
690
  // clipping is enabled and we are in bounds create our own bounds
654
691
  const { x, y, width, height } = this.props;
655
- const { tx, ty } = this.globalTransform || {};
692
+ // Pick the global transform if available, otherwise use the local transform
693
+ // global transform is only available if the node in an RTT chain
694
+ const { tx, ty } = this.sceneGlobalTransform || this.globalTransform || {};
656
695
  const _x = tx ?? x;
657
696
  const _y = ty ?? y;
658
697
  this.strictBound = createBound(_x, _y, _x + width, _y + height, this.strictBound);
659
- this.preloadBound = createPreloadBounds(this.strictBound, this.stage.boundsMargin);
698
+ this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
660
699
  }
661
700
  updateRenderState(renderState) {
662
701
  if (renderState === this.renderState) {
@@ -753,9 +792,8 @@ export class CoreNode extends EventEmitter {
753
792
  return this.props.shader !== null;
754
793
  }
755
794
  calculateRenderCoords() {
756
- const { width, height, globalTransform: transform } = this;
757
- assertTruthy(transform);
758
- const { tx, ty, ta, tb, tc, td } = transform;
795
+ const { width, height } = this;
796
+ const { tx, ty, ta, tb, tc, td } = this.globalTransform;
759
797
  if (tb === 0 && tc === 0) {
760
798
  const minX = tx;
761
799
  const maxX = tx + width * ta;
@@ -782,6 +820,36 @@ export class CoreNode extends EventEmitter {
782
820
  //bottom-left
783
821
  tx + height * tb, ty + height * td, this.renderCoords);
784
822
  }
823
+ if (this.sceneGlobalTransform === undefined) {
824
+ return;
825
+ }
826
+ const { tx: stx, ty: sty, ta: sta, tb: stb, tc: stc, td: std, } = this.sceneGlobalTransform;
827
+ if (stb === 0 && stc === 0) {
828
+ const minX = stx;
829
+ const maxX = stx + width * sta;
830
+ const minY = sty;
831
+ const maxY = sty + height * std;
832
+ this.sceneRenderCoords = RenderCoords.translate(
833
+ //top-left
834
+ minX, minY,
835
+ //top-right
836
+ maxX, minY,
837
+ //bottom-right
838
+ maxX, maxY,
839
+ //bottom-left
840
+ minX, maxY, this.sceneRenderCoords);
841
+ }
842
+ else {
843
+ this.sceneRenderCoords = RenderCoords.translate(
844
+ //top-left
845
+ stx, sty,
846
+ //top-right
847
+ stx + width * sta, sty + width * stc,
848
+ //bottom-right
849
+ stx + width * sta + height * stb, sty + width * stc + height * std,
850
+ //bottom-left
851
+ stx + height * stb, sty + height * std, this.sceneRenderCoords);
852
+ }
785
853
  }
786
854
  /**
787
855
  * This function calculates the clipping rectangle for a node.
@@ -841,7 +909,7 @@ export class CoreNode extends EventEmitter {
841
909
  this.scaleRotateTransform = undefined;
842
910
  this.localTransform = undefined;
843
911
  this.props.texture = null;
844
- this.props.shader = this.stage.defShaderCtr;
912
+ this.props.shader = this.stage.defShaderNode;
845
913
  while (this.children.length > 0) {
846
914
  this.children[0]?.destroy();
847
915
  }
@@ -879,8 +947,7 @@ export class CoreNode extends EventEmitter {
879
947
  texture: this.texture || this.stage.defaultTexture,
880
948
  textureOptions: this.textureOptions,
881
949
  zIndex: this.zIndex,
882
- shader: this.shader.shader,
883
- shaderProps: this.shader.getResolvedProps(),
950
+ shader: this.props.shader,
884
951
  alpha: this.worldAlpha,
885
952
  clippingRect: this.clippingRect,
886
953
  tx: this.globalTransform.tx,
@@ -1078,6 +1145,26 @@ export class CoreNode extends EventEmitter {
1078
1145
  set autosize(value) {
1079
1146
  this.props.autosize = value;
1080
1147
  }
1148
+ get boundsMargin() {
1149
+ return (this.props.boundsMargin ??
1150
+ this.parent?.boundsMargin ??
1151
+ this.stage.boundsMargin);
1152
+ }
1153
+ set boundsMargin(value) {
1154
+ if (value === this.props.boundsMargin) {
1155
+ return;
1156
+ }
1157
+ if (value === null) {
1158
+ this.props.boundsMargin = value;
1159
+ }
1160
+ else {
1161
+ const bm = Array.isArray(value)
1162
+ ? value
1163
+ : [value, value, value, value];
1164
+ this.props.boundsMargin = bm;
1165
+ }
1166
+ this.setUpdateType(UpdateType.RenderBounds);
1167
+ }
1081
1168
  get clipping() {
1082
1169
  return this.props.clipping;
1083
1170
  }
@@ -1298,11 +1385,17 @@ export class CoreNode extends EventEmitter {
1298
1385
  get shader() {
1299
1386
  return this.props.shader;
1300
1387
  }
1301
- set shader(value) {
1302
- if (this.props.shader === value) {
1388
+ set shader(shader) {
1389
+ if (this.props.shader === shader) {
1390
+ return;
1391
+ }
1392
+ if (shader === null) {
1393
+ this.props.shader = this.stage.defShaderNode;
1394
+ this.setUpdateType(UpdateType.IsRenderable);
1303
1395
  return;
1304
1396
  }
1305
- this.props.shader = value;
1397
+ shader.attachNode(this);
1398
+ this.props.shader = shader;
1306
1399
  this.setUpdateType(UpdateType.IsRenderable);
1307
1400
  }
1308
1401
  get src() {