@lightningjs/renderer 3.0.0-beta12 → 3.0.0-beta13

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 (211) hide show
  1. package/README.md +4 -0
  2. package/dist/src/core/CoreNode.d.ts +2 -18
  3. package/dist/src/core/CoreNode.js +20 -20
  4. package/dist/src/core/CoreNode.js.map +1 -1
  5. package/dist/src/core/CoreTextNode.js +1 -1
  6. package/dist/src/core/CoreTextNode.js.map +1 -1
  7. package/dist/src/core/Stage.d.ts +0 -1
  8. package/dist/src/core/Stage.js +1 -6
  9. package/dist/src/core/Stage.js.map +1 -1
  10. package/dist/src/core/lib/WebGlContextWrapper.js +1 -1
  11. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  12. package/dist/src/core/renderers/webgl/WebGlRenderer.js +1 -2
  13. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  14. package/dist/src/core/text-rendering/sdf/Utils.js +2 -2
  15. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -1
  16. package/dist/src/main-api/Renderer.d.ts +0 -10
  17. package/dist/src/main-api/Renderer.js +0 -2
  18. package/dist/src/main-api/Renderer.js.map +1 -1
  19. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/src/core/CoreNode.test.ts +3 -2
  22. package/src/core/CoreNode.ts +24 -41
  23. package/src/core/CoreTextNode.ts +1 -1
  24. package/src/core/Stage.ts +1 -6
  25. package/src/core/lib/WebGlContextWrapper.ts +1 -1
  26. package/src/core/renderers/webgl/WebGlRenderer.ts +1 -2
  27. package/src/core/text-rendering/sdf/Utils.ts +2 -2
  28. package/src/main-api/Renderer.ts +0 -13
  29. package/dist/src/core/platform.d.ts +0 -10
  30. package/dist/src/core/platform.js +0 -81
  31. package/dist/src/core/platform.js.map +0 -1
  32. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  33. package/dist/src/core/renderers/CoreShader.js +0 -28
  34. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  35. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  36. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  37. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  38. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  39. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
  40. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  41. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  42. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  43. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  44. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
  45. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
  46. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  47. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  48. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  49. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  50. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  51. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  52. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  53. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  54. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  55. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  56. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
  57. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
  58. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  59. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  60. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  61. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  62. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  63. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  64. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  65. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  66. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  67. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  68. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  69. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  70. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  71. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  72. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  73. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  74. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  75. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  76. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  77. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  78. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  79. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  80. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  81. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  82. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  83. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  84. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  85. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  86. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  87. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  88. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  89. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  90. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  91. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  92. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  93. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  94. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  98. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  99. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  100. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  101. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  102. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  103. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  104. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  105. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  106. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  107. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  108. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  109. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  110. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  111. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  112. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  113. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  114. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  115. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  116. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  117. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  118. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  119. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  120. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  121. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  122. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  123. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  124. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  125. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  126. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  127. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  128. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  129. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  130. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  131. package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
  132. package/dist/src/core/shaders/webgl/Spinner.js +0 -2
  133. package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
  134. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  135. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  136. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  137. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  138. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  139. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  140. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  141. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  142. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  143. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  144. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  145. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  146. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  147. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  148. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  149. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  150. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  151. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  152. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  153. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  154. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  155. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  156. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  157. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  158. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  159. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  160. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  161. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  162. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  163. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  164. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  165. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  166. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  167. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  168. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  169. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  170. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  171. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  172. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  173. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  174. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  175. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  176. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  182. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  183. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  184. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  185. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  186. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  187. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  188. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  189. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  193. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  194. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  195. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  196. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  197. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  198. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  199. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  200. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
  201. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
  202. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
  203. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
  204. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
  205. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +0 -1
  206. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  207. package/dist/src/main-api/DynamicShaderController.js +0 -58
  208. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  209. package/dist/src/main-api/ShaderController.d.ts +0 -31
  210. package/dist/src/main-api/ShaderController.js +0 -37
  211. package/dist/src/main-api/ShaderController.js.map +0 -1
@@ -17,9 +17,10 @@
17
17
  * limitations under the License.
18
18
  */
19
19
 
20
- import { describe, expect, it, vi } from 'vitest';
20
+ import { describe, expect, it } from 'vitest';
21
21
  import { CoreNode, type CoreNodeProps, UpdateType } from './CoreNode.js';
22
22
  import { Stage } from './Stage.js';
23
+ import { CoreRenderer } from './renderers/CoreRenderer.js';
23
24
  import { mock } from 'vitest-mock-extended';
24
25
  import { type TextureOptions } from './CoreTextureManager.js';
25
26
  import { createBound } from './lib/utils.js';
@@ -62,7 +63,6 @@ describe('set color()', () => {
62
63
  y: 0,
63
64
  zIndex: 0,
64
65
  zIndexLocked: 0,
65
- strictBounds: false,
66
66
  };
67
67
 
68
68
  const clippingRect = {
@@ -79,6 +79,7 @@ describe('set color()', () => {
79
79
  defaultTexture: {
80
80
  state: 'loaded',
81
81
  },
82
+ renderer: mock<CoreRenderer>() as CoreRenderer,
82
83
  });
83
84
 
84
85
  describe('set color()', () => {
@@ -672,21 +672,6 @@ export interface CoreNodeProps {
672
672
  * @default false
673
673
  */
674
674
  interactive?: boolean;
675
- /**
676
- * By enabling Strict bounds the renderer will not process & render child nodes of a node that is out of the visible area
677
- *
678
- * @remarks
679
- * When enabled out of bound nodes, i.e. nodes that are out of the visible area, will
680
- * **NOT** have their children processed and renderer anymore. This means the children of a out of bound
681
- * node will not receive update processing such as positioning updates and will not be drawn on screen.
682
- * As such the rest of the branch of the update tree that sits below this node will not be processed anymore
683
- *
684
- * This is a big performance gain but may be disabled in cases where the width of the parent node is
685
- * unknown and the render must process the child nodes regardless of the viewport status of the parent node
686
- *
687
- * @default true
688
- */
689
- strictBounds: boolean;
690
675
  }
691
676
 
692
677
  /**
@@ -742,7 +727,8 @@ export class CoreNode extends EventEmitter {
742
727
  valid: false,
743
728
  };
744
729
  public textureCoords?: TextureCoords;
745
- public updateTextureCoords?: boolean = false;
730
+ public updateTextureCoords: boolean = false;
731
+ public updateShaderUniforms: boolean = false;
746
732
  public isRenderable = false;
747
733
  public renderState: CoreNodeRenderState = CoreNodeRenderState.Init;
748
734
 
@@ -795,7 +781,6 @@ export class CoreNode extends EventEmitter {
795
781
  p.mountY = props.mountY;
796
782
  p.mount = props.mount;
797
783
  p.pivot = props.pivot;
798
- p.strictBounds = props.strictBounds;
799
784
 
800
785
  p.zIndex = props.zIndex;
801
786
  p.zIndexLocked = props.zIndexLocked;
@@ -983,6 +968,7 @@ export class CoreNode extends EventEmitter {
983
968
  const mountTranslateY = p.mountY * h;
984
969
 
985
970
  if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
971
+ const scaleRotate = Matrix3d.rotate(p.rotation).scale(p.scaleX, p.scaleY);
986
972
  const pivotTranslateX = p.pivotX * w;
987
973
  const pivotTranslateY = p.pivotY * h;
988
974
 
@@ -991,8 +977,7 @@ export class CoreNode extends EventEmitter {
991
977
  y - mountTranslateY + pivotTranslateY,
992
978
  this.localTransform,
993
979
  )
994
- .rotate(p.rotation)
995
- .scale(p.scaleX, p.scaleY)
980
+ .multiply(scaleRotate)
996
981
  .translate(-pivotTranslateX, -pivotTranslateY);
997
982
  } else {
998
983
  this.localTransform = Matrix3d.translate(
@@ -1148,7 +1133,7 @@ export class CoreNode extends EventEmitter {
1148
1133
  }
1149
1134
 
1150
1135
  if (updateType & UpdateType.WorldAlpha) {
1151
- this.worldAlpha = ((parent && parent.worldAlpha) || 1) * props.alpha;
1136
+ this.worldAlpha = (parent?.worldAlpha ?? 1) * this.props.alpha;
1152
1137
  updateType |=
1153
1138
  UpdateType.PremultipliedColors |
1154
1139
  UpdateType.Children |
@@ -1184,7 +1169,7 @@ export class CoreNode extends EventEmitter {
1184
1169
 
1185
1170
  this.premultipliedColorTl = merged;
1186
1171
 
1187
- if (same) {
1172
+ if (same === true) {
1188
1173
  this.premultipliedColorTr =
1189
1174
  this.premultipliedColorBl =
1190
1175
  this.premultipliedColorBr =
@@ -1218,10 +1203,7 @@ export class CoreNode extends EventEmitter {
1218
1203
  parent.setUpdateType(UpdateType.ZIndexSortedChildren);
1219
1204
  }
1220
1205
 
1221
- if (
1222
- props.strictBounds === true &&
1223
- this.renderState === CoreNodeRenderState.OutOfBounds
1224
- ) {
1206
+ if (this.renderState === CoreNodeRenderState.OutOfBounds) {
1225
1207
  updateType &= ~UpdateType.RenderBounds; // remove render bounds update
1226
1208
  return;
1227
1209
  }
@@ -1230,6 +1212,11 @@ export class CoreNode extends EventEmitter {
1230
1212
  updateType & UpdateType.RecalcUniforms &&
1231
1213
  this.hasShaderUpdater === true
1232
1214
  ) {
1215
+ this.updateShaderUniforms = true;
1216
+ }
1217
+
1218
+ if (this.isRenderable === true && this.updateShaderUniforms === true) {
1219
+ this.updateShaderUniforms = false;
1233
1220
  //this exists because the boolean hasShaderUpdater === true
1234
1221
  this.shader!.update!();
1235
1222
  }
@@ -1707,6 +1694,12 @@ export class CoreNode extends EventEmitter {
1707
1694
  const coords = this.renderCoords;
1708
1695
  const texture = p.texture || this.stage.defaultTexture;
1709
1696
 
1697
+ // There is a race condition where the texture can be null
1698
+ // with RTT nodes. Adding this defensively to avoid errors.
1699
+ if (texture && texture.state !== 'loaded') {
1700
+ return;
1701
+ }
1702
+
1710
1703
  renderer.addQuad({
1711
1704
  width: p.w,
1712
1705
  height: p.h,
@@ -1793,7 +1786,7 @@ export class CoreNode extends EventEmitter {
1793
1786
 
1794
1787
  set w(value: number) {
1795
1788
  if (this.props.w !== value) {
1796
- this.textureCoords = undefined;
1789
+ this.updateTextureCoords = true;
1797
1790
  this.props.w = value;
1798
1791
  this.setUpdateType(UpdateType.Local);
1799
1792
 
@@ -1815,7 +1808,7 @@ export class CoreNode extends EventEmitter {
1815
1808
 
1816
1809
  set h(value: number) {
1817
1810
  if (this.props.h !== value) {
1818
- this.textureCoords = undefined;
1811
+ this.updateTextureCoords = true;
1819
1812
  this.props.h = value;
1820
1813
  this.setUpdateType(UpdateType.Local);
1821
1814
 
@@ -2152,6 +2145,10 @@ export class CoreNode extends EventEmitter {
2152
2145
  }
2153
2146
 
2154
2147
  set zIndex(value: number) {
2148
+ if (this.props.zIndex === value) {
2149
+ return;
2150
+ }
2151
+
2155
2152
  this.props.zIndex = value;
2156
2153
  this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);
2157
2154
  for (let i = 0, length = this.children.length; i < length; i++) {
@@ -2445,20 +2442,6 @@ export class CoreNode extends EventEmitter {
2445
2442
  this.parent?.setRTTUpdates(type);
2446
2443
  }
2447
2444
 
2448
- get strictBounds(): boolean {
2449
- return this.props.strictBounds;
2450
- }
2451
-
2452
- set strictBounds(v) {
2453
- if (v === this.props.strictBounds) {
2454
- return;
2455
- }
2456
-
2457
- this.props.strictBounds = v;
2458
- this.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
2459
- this.childUpdateType |= UpdateType.RenderBounds | UpdateType.Children;
2460
- }
2461
-
2462
2445
  animate(
2463
2446
  props: Partial<CoreNodeAnimateProps>,
2464
2447
  settings: Partial<AnimationSettings>,
@@ -268,7 +268,7 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
268
268
  }
269
269
 
270
270
  override destroy(): void {
271
- if (this._waitingForFont === true) {
271
+ if (this._waitingForFont === true && this.fontHandler) {
272
272
  this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
273
273
  }
274
274
 
package/src/core/Stage.ts CHANGED
@@ -102,7 +102,6 @@ export class Stage {
102
102
  public readonly defShaderNode: CoreShaderNode | null = null;
103
103
  public strictBound: Bound;
104
104
  public preloadBound: Bound;
105
- public readonly strictBounds: boolean;
106
105
  public readonly defaultTexture: Texture | null = null;
107
106
  public pixelRatio: number;
108
107
  public readonly bufferMemory: number = 2e6;
@@ -197,7 +196,6 @@ export class Stage {
197
196
 
198
197
  this.animationManager = new AnimationManager();
199
198
  this.contextSpy = enableContextSpy ? new ContextSpy() : null;
200
- this.strictBounds = options.strictBounds;
201
199
 
202
200
  let bm = [0, 0, 0, 0] as [number, number, number, number];
203
201
  if (boundsMargin) {
@@ -354,7 +352,6 @@ export class Stage {
354
352
  rtt: false,
355
353
  src: null,
356
354
  scale: 1,
357
- strictBounds: this.strictBounds,
358
355
  });
359
356
 
360
357
  this.root = rootNode;
@@ -589,8 +586,7 @@ export class Stage {
589
586
 
590
587
  if (
591
588
  child.worldAlpha === 0 ||
592
- (child.strictBounds === true &&
593
- child.renderState === CoreNodeRenderState.OutOfBounds)
589
+ child.renderState === CoreNodeRenderState.OutOfBounds
594
590
  ) {
595
591
  continue;
596
592
  }
@@ -847,7 +843,6 @@ export class Stage {
847
843
  data,
848
844
  imageType: props.imageType,
849
845
  interactive: props.interactive ?? false,
850
- strictBounds: props.strictBounds ?? this.strictBounds,
851
846
  };
852
847
  }
853
848
 
@@ -725,7 +725,7 @@ export class WebGlContextWrapper {
725
725
  const result = {} as Record<string, number>;
726
726
  for (let i = 0; i < length; i++) {
727
727
  const { name } = gl.getActiveAttrib(program, i) as WebGLActiveInfo;
728
- result[name] = i;
728
+ result[name] = gl.getAttribLocation(program, name);
729
729
  }
730
730
  return result;
731
731
  }
@@ -554,8 +554,7 @@ export class WebGlRenderer extends CoreRenderer {
554
554
  // Skip nodes that are not visible
555
555
  if (
556
556
  node.worldAlpha === 0 ||
557
- (node.strictBounds === true &&
558
- node.renderState === CoreNodeRenderState.OutOfBounds)
557
+ node.renderState === CoreNodeRenderState.OutOfBounds
559
558
  ) {
560
559
  continue;
561
560
  }
@@ -36,13 +36,13 @@ export const measureLines = (
36
36
 
37
37
  while (remainingLines > 0) {
38
38
  const line = lines[i];
39
+ i++;
40
+ remainingLines--;
39
41
  if (line === undefined) {
40
42
  continue;
41
43
  }
42
44
  const width = measureText(line, fontFamily, designLetterSpacing);
43
45
  measuredLines.push([line, width]);
44
- i++;
45
- remainingLines--;
46
46
  }
47
47
 
48
48
  return [
@@ -250,17 +250,6 @@ export type RendererMainSettings = RendererRuntimeSettings & {
250
250
  */
251
251
  forceWebGL2: boolean;
252
252
 
253
- /**
254
- * Enable strictBounds
255
- *
256
- * @remarks
257
- * Enable strict bounds for the renderer. This will ensure that the renderer
258
- * will not render outside the bounds of the canvas.
259
- *
260
- * @defaultValue `true`
261
- */
262
- strictBounds: boolean;
263
-
264
253
  /**
265
254
  * Canvas object to use for rendering
266
255
  *
@@ -400,7 +389,6 @@ export class RendererMain extends EventEmitter {
400
389
  renderEngine: settings.renderEngine,
401
390
  quadBufferSize: settings.quadBufferSize ?? 4 * 1024 * 1024,
402
391
  fontEngines: settings.fontEngines ?? [],
403
- strictBounds: settings.strictBounds ?? true,
404
392
  textureProcessingTimeLimit: settings.textureProcessingTimeLimit || 42,
405
393
  canvas: settings.canvas || document.createElement('canvas'),
406
394
  createImageBitmapSupport: settings.createImageBitmapSupport || 'full',
@@ -457,7 +445,6 @@ export class RendererMain extends EventEmitter {
457
445
  quadBufferSize: settings.quadBufferSize!,
458
446
  fontEngines: settings.fontEngines!,
459
447
  inspector: settings.inspector !== null,
460
- strictBounds: settings.strictBounds!,
461
448
  targetFPS: settings.targetFPS!,
462
449
  textureProcessingTimeLimit: settings.textureProcessingTimeLimit!,
463
450
  createImageBitmapSupport: settings.createImageBitmapSupport!,
@@ -1,10 +0,0 @@
1
- import type { Stage } from './Stage.js';
2
- /**
3
- * Platform render loop initiator
4
- */
5
- export declare const startLoop: (stage: Stage) => void;
6
- /**
7
- * Return unix timestamp
8
- * @return {number}
9
- */
10
- export declare const getTimeStamp: () => number;
@@ -1,81 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- /**
20
- * Platform render loop initiator
21
- */
22
- export const startLoop = (stage) => {
23
- let isIdle = false;
24
- let lastFrameTime = 0;
25
- const runLoop = (currentTime = 0) => {
26
- const targetFrameTime = stage.targetFrameTime;
27
- // Check if we should throttle this frame
28
- if (targetFrameTime > 0 && currentTime - lastFrameTime < targetFrameTime) {
29
- // Too early for next frame, schedule with setTimeout for precise timing
30
- const delay = targetFrameTime - (currentTime - lastFrameTime);
31
- setTimeout(() => requestAnimationFrame(runLoop), delay);
32
- return;
33
- }
34
- lastFrameTime = currentTime;
35
- stage.updateFrameTime();
36
- stage.updateAnimations();
37
- if (!stage.hasSceneUpdates()) {
38
- // We still need to calculate the fps else it looks like the app is frozen
39
- stage.calculateFps();
40
- if (targetFrameTime > 0) {
41
- // Use setTimeout for throttled idle frames
42
- setTimeout(() => requestAnimationFrame(runLoop), Math.max(targetFrameTime, 16.666666666666668));
43
- }
44
- else {
45
- // Use standard idle timeout when not throttling
46
- setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
47
- }
48
- if (!isIdle) {
49
- stage.eventBus.emit('idle');
50
- isIdle = true;
51
- }
52
- if (stage.txMemManager.checkCleanup() === true) {
53
- stage.txMemManager.cleanup(false);
54
- }
55
- stage.flushFrameEvents();
56
- return;
57
- }
58
- isIdle = false;
59
- stage.drawFrame();
60
- stage.flushFrameEvents();
61
- // Schedule next frame
62
- if (targetFrameTime > 0) {
63
- // Use setTimeout + rAF combination for precise FPS control
64
- const nextFrameDelay = Math.max(0, targetFrameTime - (performance.now() - currentTime));
65
- setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
66
- }
67
- else {
68
- // Use standard rAF when not throttling
69
- requestAnimationFrame(runLoop);
70
- }
71
- };
72
- requestAnimationFrame(runLoop);
73
- };
74
- /**
75
- * Return unix timestamp
76
- * @return {number}
77
- */
78
- export const getTimeStamp = () => {
79
- return performance ? performance.now() : Date.now();
80
- };
81
- //# sourceMappingURL=platform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/core/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,CAAC,cAAsB,CAAC,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAE9C,yCAAyC;QACzC,IAAI,eAAe,GAAG,CAAC,IAAI,WAAW,GAAG,aAAa,GAAG,eAAe,EAAE,CAAC;YACzE,wEAAwE;YACxE,MAAM,KAAK,GAAG,eAAe,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;YAC9D,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,aAAa,GAAG,WAAW,CAAC;QAE5B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YAC7B,0EAA0E;YAC1E,KAAK,CAAC,YAAY,EAAE,CAAC;YAErB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,2CAA2C;gBAC3C,UAAU,CACR,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAC9C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,KAAK,CAAC;QACf,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,sBAAsB;QACtB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACxB,2DAA2D;YAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACD,eAAe,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CACpD,CAAC;YACF,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACtD,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { CoreRenderOp } from './CoreRenderOp.js';
2
- export declare abstract class CoreShader {
3
- static makeCacheKey(props: Record<string, unknown>): string | false;
4
- static resolveDefaults(props: Record<string, unknown>): Record<string, unknown>;
5
- abstract bindRenderOp(renderOp: CoreRenderOp, props: Record<string, unknown> | null): void;
6
- protected abstract bindProps(props: Record<string, unknown>): void;
7
- abstract attach(): void;
8
- abstract detach(): void;
9
- }
@@ -1,28 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- export class CoreShader {
20
- // abstract draw(): void;
21
- static makeCacheKey(props) {
22
- return false;
23
- }
24
- static resolveDefaults(props) {
25
- return {};
26
- }
27
- }
28
- //# sourceMappingURL=CoreShader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CoreShader.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,OAAgB,UAAU;IAC9B,yBAAyB;IACzB,MAAM,CAAC,YAAY,CAAC,KAA8B;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,eAAe,CACpB,KAA8B;QAE9B,OAAO,EAAE,CAAC;IACZ,CAAC;CASF"}
@@ -1,33 +0,0 @@
1
- import type { BaseShaderController } from '../../../main-api/ShaderController.js';
2
- import type { CoreNode } from '../../CoreNode.js';
3
- import type { CoreShaderManager } from '../../CoreShaderManager.js';
4
- import { type Texture } from '../../textures/Texture.js';
5
- import type { CoreContextTexture } from '../CoreContextTexture.js';
6
- import { CoreRenderer, type CoreRendererOptions, type QuadOptions } from '../CoreRenderer.js';
7
- export declare class CanvasCoreRenderer extends CoreRenderer {
8
- private context;
9
- private canvas;
10
- private pixelRatio;
11
- private clearColor;
12
- renderToTextureActive: boolean;
13
- activeRttNode: CoreNode | null;
14
- private defShaderCtr;
15
- constructor(options: CoreRendererOptions);
16
- reset(): void;
17
- render(): void;
18
- addQuad(quad: QuadOptions): void;
19
- createCtxTexture(textureSource: Texture): CoreContextTexture;
20
- getShaderManager(): CoreShaderManager;
21
- getDefShaderCtr(): BaseShaderController;
22
- renderRTTNodes(): void;
23
- removeRTTNode(node: CoreNode): void;
24
- renderToTexture(node: CoreNode): void;
25
- getBufferInfo(): null;
26
- getQuadCount(): null;
27
- /**
28
- * Updates the clear color of the canvas renderer.
29
- *
30
- * @param color - The color to set as the clear color.
31
- */
32
- updateClearColor(color: number): void;
33
- }