@lightningjs/renderer 0.7.6 → 0.8.1

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 (110) hide show
  1. package/README.md +4 -0
  2. package/dist/src/common/CommonTypes.d.ts +6 -0
  3. package/dist/src/core/CoreNode.d.ts +65 -8
  4. package/dist/src/core/CoreNode.js +104 -28
  5. package/dist/src/core/CoreNode.js.map +1 -1
  6. package/dist/src/core/CoreShaderManager.d.ts +2 -0
  7. package/dist/src/core/CoreShaderManager.js +2 -0
  8. package/dist/src/core/CoreShaderManager.js.map +1 -1
  9. package/dist/src/core/CoreTextNode.d.ts +5 -0
  10. package/dist/src/core/CoreTextNode.js +15 -10
  11. package/dist/src/core/CoreTextNode.js.map +1 -1
  12. package/dist/src/core/CoreTextureManager.js +2 -0
  13. package/dist/src/core/CoreTextureManager.js.map +1 -1
  14. package/dist/src/core/Stage.d.ts +4 -0
  15. package/dist/src/core/Stage.js +8 -1
  16. package/dist/src/core/Stage.js.map +1 -1
  17. package/dist/src/core/TextureMemoryManager.d.ts +12 -0
  18. package/dist/src/core/TextureMemoryManager.js +42 -0
  19. package/dist/src/core/TextureMemoryManager.js.map +1 -0
  20. package/dist/src/core/platform.js +8 -0
  21. package/dist/src/core/platform.js.map +1 -1
  22. package/dist/src/core/renderers/CoreContextTexture.d.ts +5 -1
  23. package/dist/src/core/renderers/CoreContextTexture.js +3 -1
  24. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  25. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +2 -1
  26. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +2 -2
  27. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -1
  28. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +3 -1
  29. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +22 -5
  30. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  31. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +3 -0
  32. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +4 -2
  33. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  34. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  35. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +112 -0
  36. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  37. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +17 -30
  38. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  39. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  40. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +24 -30
  41. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  42. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +2 -0
  43. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +18 -0
  44. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  45. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +8 -0
  46. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +26 -4
  47. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  48. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +4 -3
  49. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  50. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +19 -0
  51. package/dist/src/core/text-rendering/renderers/TextRenderer.js +26 -0
  52. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  53. package/dist/src/core/textures/Texture.d.ts +26 -1
  54. package/dist/src/core/textures/Texture.js +30 -1
  55. package/dist/src/core/textures/Texture.js.map +1 -1
  56. package/dist/src/main-api/ICoreDriver.d.ts +1 -0
  57. package/dist/src/main-api/Inspector.js +2 -1
  58. package/dist/src/main-api/Inspector.js.map +1 -1
  59. package/dist/src/main-api/RendererMain.d.ts +10 -1
  60. package/dist/src/main-api/RendererMain.js +6 -1
  61. package/dist/src/main-api/RendererMain.js.map +1 -1
  62. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +1 -0
  63. package/dist/src/render-drivers/main/MainCoreDriver.js +7 -0
  64. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  65. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +1 -0
  66. package/dist/src/render-drivers/main/MainOnlyNode.js +10 -6
  67. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  68. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +1 -0
  69. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  70. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +1 -0
  71. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
  72. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +3 -0
  73. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
  74. package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
  75. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  76. package/dist/src/utils.d.ts +6 -0
  77. package/dist/src/utils.js +9 -1
  78. package/dist/src/utils.js.map +1 -1
  79. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  80. package/package.json +1 -1
  81. package/src/common/CommonTypes.ts +7 -0
  82. package/src/core/CoreNode.ts +118 -34
  83. package/src/core/CoreShaderManager.ts +3 -0
  84. package/src/core/CoreTextNode.ts +44 -43
  85. package/src/core/CoreTextureManager.ts +2 -0
  86. package/src/core/Stage.ts +10 -0
  87. package/src/core/TextureMemoryManager.ts +66 -0
  88. package/src/core/platform.ts +8 -0
  89. package/src/core/renderers/CoreContextTexture.ts +6 -1
  90. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +7 -2
  91. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +34 -6
  92. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +10 -2
  93. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +166 -0
  94. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +16 -32
  95. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +26 -32
  96. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +23 -0
  97. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +32 -4
  98. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +4 -3
  99. package/src/core/text-rendering/renderers/TextRenderer.ts +32 -0
  100. package/src/core/textures/Texture.ts +39 -2
  101. package/src/main-api/ICoreDriver.ts +2 -0
  102. package/src/main-api/Inspector.ts +2 -1
  103. package/src/main-api/RendererMain.ts +19 -2
  104. package/src/render-drivers/main/MainCoreDriver.ts +9 -0
  105. package/src/render-drivers/main/MainOnlyNode.ts +12 -6
  106. package/src/render-drivers/threadx/ThreadXCoreDriver.ts +1 -0
  107. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +1 -0
  108. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +7 -0
  109. package/src/render-drivers/threadx/worker/renderer.ts +1 -0
  110. package/src/utils.ts +10 -1
@@ -50,7 +50,7 @@ export class CoreTextNode extends CoreNode {
50
50
  textBaseline: props.textBaseline,
51
51
  verticalAlign: props.verticalAlign,
52
52
  overflowSuffix: props.overflowSuffix,
53
- }, undefined);
53
+ });
54
54
  this.textRenderer = resolvedTextRenderer;
55
55
  this.trState = textRendererState;
56
56
  }
@@ -131,7 +131,8 @@ export class CoreTextNode extends CoreNode {
131
131
  }
132
132
  set textRendererOverride(value) {
133
133
  this._textRendererOverride = value;
134
- const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props, this.trState);
134
+ this.textRenderer.destroyState(this.trState);
135
+ const { resolvedTextRenderer, textRendererState } = this.resolveTextRendererAndState(this.trState.props);
135
136
  this.textRenderer = resolvedTextRenderer;
136
137
  this.trState = textRendererState;
137
138
  }
@@ -260,25 +261,29 @@ export class CoreTextNode extends CoreNode {
260
261
  }
261
262
  return super.checkRenderProps();
262
263
  }
264
+ onChangeIsRenderable(isRenderable) {
265
+ super.onChangeIsRenderable(isRenderable);
266
+ this.textRenderer.setIsRenderable(this.trState, isRenderable);
267
+ }
263
268
  renderQuads(renderer) {
264
269
  assertTruthy(this.globalTransform);
265
270
  this.textRenderer.renderQuads(this.trState, this.globalTransform, this.clippingRect, this.worldAlpha);
266
271
  }
272
+ /**
273
+ * Destroy the node and cleanup all resources
274
+ */
275
+ destroy() {
276
+ super.destroy();
277
+ this.textRenderer.destroyState(this.trState);
278
+ }
267
279
  /**
268
280
  * Resolve a text renderer and a new state based on the current text renderer props provided
269
281
  * @param props
270
282
  * @returns
271
283
  */
272
- resolveTextRendererAndState(props, prevState) {
284
+ resolveTextRendererAndState(props) {
273
285
  const resolvedTextRenderer = this.stage.resolveTextRenderer(props, this._textRendererOverride);
274
286
  const textRendererState = resolvedTextRenderer.createState(props);
275
- const stateEvents = ['loading', 'loaded', 'failed'];
276
- if (prevState) {
277
- // Remove the old event listeners from previous state obj there was one
278
- stateEvents.forEach((eventName) => {
279
- prevState.emitter.off(eventName);
280
- });
281
- }
282
287
  textRendererState.emitter.on('loaded', this.onTextLoaded);
283
288
  textRendererState.emitter.on('failed', this.onTextFailed);
284
289
  resolvedTextRenderer.scheduleUpdateState(textRendererState);
@@ -1 +1 @@
1
- {"version":3,"file":"CoreTextNode.js","sourceRoot":"","sources":["../../../src/core/CoreTextNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreTextNode.js","sourceRoot":"","sources":["../../../src/core/CoreTextNode.ts"],"names":[],"mappings":"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"}
@@ -156,6 +156,8 @@ export class CoreTextureManager {
156
156
  }
157
157
  }
158
158
  }
159
+ // Free the ctx texture if it exists.
160
+ this.ctxTextureCache.get(texture)?.free();
159
161
  }
160
162
  /**
161
163
  * Get an object containing debug information about the texture manager.
@@ -1 +1 @@
1
- {"version":3,"file":"CoreTextureManager.js","sourceRoot":"","sources":["../../../src/core/CoreTextureManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreTextureManager.js","sourceRoot":"","sources":["../../../src/core/CoreTextureManager.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,12 @@ import type { TextRenderer, TextRendererMap, TrProps } from './text-rendering/re
8
8
  import { EventEmitter } from '../common/EventEmitter.js';
9
9
  import { ContextSpy } from './lib/ContextSpy.js';
10
10
  import type { FpsUpdatePayload, FrameTickPayload } from '../common/CommonTypes.js';
11
+ import { TextureMemoryManager } from './TextureMemoryManager.js';
11
12
  export interface StageOptions {
12
13
  rootId: number;
13
14
  appWidth: number;
14
15
  appHeight: number;
16
+ txMemByteThreshold: number;
15
17
  boundsMargin: number | [number, number, number, number];
16
18
  deviceLogicalPixelRatio: number;
17
19
  devicePhysicalPixelRatio: number;
@@ -30,6 +32,7 @@ export declare class Stage extends EventEmitter {
30
32
  readonly options: StageOptions;
31
33
  readonly animationManager: AnimationManager;
32
34
  readonly txManager: CoreTextureManager;
35
+ readonly txMemManager: TextureMemoryManager;
33
36
  readonly fontManager: TrFontManager;
34
37
  readonly textRenderers: Partial<TextRendererMap>;
35
38
  readonly shManager: CoreShaderManager;
@@ -59,6 +62,7 @@ export declare class Stage extends EventEmitter {
59
62
  * Start a new frame draw
60
63
  */
61
64
  drawFrame(): void;
65
+ calculateFps(): void;
62
66
  addQuads(node: CoreNode): void;
63
67
  /**
64
68
  * Request a render pass without forcing an update
@@ -28,6 +28,7 @@ import { SdfTextRenderer } from './text-rendering/renderers/SdfTextRenderer/SdfT
28
28
  import { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';
29
29
  import { EventEmitter } from '../common/EventEmitter.js';
30
30
  import { ContextSpy } from './lib/ContextSpy.js';
31
+ import { TextureMemoryManager } from './TextureMemoryManager.js';
31
32
  const bufferMemory = 2e6;
32
33
  const autoStart = true;
33
34
  export class Stage extends EventEmitter {
@@ -35,6 +36,7 @@ export class Stage extends EventEmitter {
35
36
  /// Module Instances
36
37
  animationManager;
37
38
  txManager;
39
+ txMemManager;
38
40
  fontManager;
39
41
  textRenderers;
40
42
  shManager;
@@ -56,8 +58,9 @@ export class Stage extends EventEmitter {
56
58
  constructor(options) {
57
59
  super();
58
60
  this.options = options;
59
- const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, } = options;
61
+ const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, } = options;
60
62
  this.txManager = new CoreTextureManager(numImageWorkers);
63
+ this.txMemManager = new TextureMemoryManager(txMemByteThreshold);
61
64
  this.shManager = new CoreShaderManager();
62
65
  this.animationManager = new AnimationManager();
63
66
  this.contextSpy = enableContextSpy ? new ContextSpy() : null;
@@ -83,6 +86,7 @@ export class Stage extends EventEmitter {
83
86
  clearColor: clearColor ?? 0xff000000,
84
87
  bufferMemory,
85
88
  txManager: this.txManager,
89
+ txMemManager: this.txMemManager,
86
90
  shManager: this.shManager,
87
91
  contextSpy: this.contextSpy,
88
92
  });
@@ -173,10 +177,13 @@ export class Stage extends EventEmitter {
173
177
  renderer?.reset();
174
178
  this.addQuads(this.root);
175
179
  renderer?.render();
180
+ this.calculateFps();
176
181
  // Reset renderRequested flag if it was set
177
182
  if (renderRequested) {
178
183
  this.renderRequested = false;
179
184
  }
185
+ }
186
+ calculateFps() {
180
187
  // If there's an FPS update interval, emit the FPS update event
181
188
  // when the specified interval has elapsed.
182
189
  const { fpsUpdateInterval } = this.options;
@@ -1 +1 @@
1
- {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AA+BjE,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,OAAO,KAAM,SAAQ,YAAY;IA0BhB;IAzBrB,oBAAoB;IACJ,gBAAgB,CAAmB;IACnC,SAAS,CAAqB;IAC9B,YAAY,CAAuB;IACnC,WAAW,CAAgB;IAC3B,aAAa,CAA2B;IACxC,SAAS,CAAoB;IAC7B,QAAQ,CAAoB;IAC5B,IAAI,CAAW;IACf,YAAY,CAAmC;IAE/D,SAAS;IACT,SAAS,GAAG,CAAC,CAAC;IACd,aAAa,GAAG,CAAC,CAAC;IAClB,gBAAgB,GAAG,CAAC,CAAC;IACb,YAAY,GAAG,CAAC,CAAC;IACjB,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,KAAK,CAAC;IAEhC,cAAc;IACd,UAAU,GAAsB,IAAI,CAAC;IAErC;;OAEG;IACH,YAAqB,OAAqB;QACxC,KAAK,EAAE,CAAC;QADW,YAAO,GAAP,OAAO,CAAc;QAExC,MAAM,EACJ,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqC,CAAC;QAC1D,IAAI,YAAY,EAAE;YAChB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC9B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,KAAK,EAAE,mBAAmB,EAAE;YAC9B,WAAW,CAAC,GAAG,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;YAClE,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC;YACpC,KAAK,EAAE,IAAI;YACX,MAAM;YACN,UAAU,EACR,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,uBAAuB;YACpE,UAAU,EAAE,UAAU,IAAI,UAAU;YACpC,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;YACpC,GAAG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC;SAC/B,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,mBAAmB;QACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAErB,8BAA8B;QAC9B,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,IAAI,CAAC,CAAC;SACjB;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,YAAY,EAAE,CAAC;QAEvC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa;YAClC,CAAC,CAAC,GAAG,GAAG,CAAC;YACT,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,gBAAgB;YAC3B,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC,CAAC;QACH,iBAAiB;QACjB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAE3C,wBAAwB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1D;QAED,sCAAsC;QACtC,QAAQ,EAAE,KAAK,EAAE,CAAC;QAElB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,QAAQ,EAAE,MAAM,EAAE,CAAC;QAEnB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,2CAA2C;QAC3C,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAED,YAAY;QACV,+DAA+D;QAC/D,2CAA2C;QAC3C,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;YACtC,IAAI,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CACjD,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,GAAG;oBACH,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI;iBACxB,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE;gBACV,SAAS;aACV;YAED,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC,EAAE;gBAC3B,SAAS;aACV;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CACjB,OAAgB,EAChB,uBAAqD,IAAI;QAEzD,IAAI,UAAU,GAAG,oBAAoB,CAAC;QAEtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,sDAAsD;QACtD,IAAI,UAAU,EAAE;YACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,2BAA2B,UAAU,cAAc,CAAC,CAAC;gBAClE,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;iBAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBACnD,OAAO,CAAC,IAAI,CACV,sCAAsC,UAAU,YAAY,EAC5D,OAAO,CACR,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;gBAClB,gBAAgB,GAAG,IAAI,CAAC;aACzB;SACF;QAED,IAAI,CAAC,UAAU,EAAE;YACf,qFAAqF;YACrF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACrB,8BAA8B;oBAC9B,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC7B,UAAU,GAAG,IAA6B,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD,IAAI,CAAC,UAAU,EAAE;gBACf,uDAAuD;gBACvD,UAAU,GAAG,QAAQ,CAAC;aACvB;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACrE;QAED,yEAAyE;QACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5D,YAAY,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;QAErE,kEAAkE;QAClE,wDAAwD;QACxD,OAAO,oBAA+C,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { CoreContextTexture } from './renderers/CoreContextTexture.js';
2
+ export declare class TextureMemoryManager {
3
+ private memUsed;
4
+ private textures;
5
+ private threshold;
6
+ /**
7
+ * @param byteThreshold Number of texture bytes to trigger garbage collection
8
+ */
9
+ constructor(byteThreshold: number);
10
+ setTextureMemUse(ctxTexture: CoreContextTexture, byteSize: number): void;
11
+ gc(): void;
12
+ }
@@ -0,0 +1,42 @@
1
+ export class TextureMemoryManager {
2
+ memUsed = 0;
3
+ textures = new Map();
4
+ threshold;
5
+ /**
6
+ * @param byteThreshold Number of texture bytes to trigger garbage collection
7
+ */
8
+ constructor(byteThreshold) {
9
+ this.threshold = byteThreshold;
10
+ // If the threshold is 0, we disable the memory manager by replacing the
11
+ // setTextureMemUse method with a no-op function.
12
+ if (byteThreshold === 0) {
13
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
14
+ this.setTextureMemUse = () => { };
15
+ }
16
+ }
17
+ setTextureMemUse(ctxTexture, byteSize) {
18
+ if (this.textures.has(ctxTexture)) {
19
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
20
+ this.memUsed -= this.textures.get(ctxTexture);
21
+ }
22
+ if (byteSize === 0) {
23
+ this.textures.delete(ctxTexture);
24
+ return;
25
+ }
26
+ else {
27
+ this.memUsed += byteSize;
28
+ this.textures.set(ctxTexture, byteSize);
29
+ }
30
+ if (this.memUsed > this.threshold) {
31
+ this.gc();
32
+ }
33
+ }
34
+ gc() {
35
+ this.textures.forEach((byteSize, ctxTexture) => {
36
+ if (!ctxTexture.renderable) {
37
+ ctxTexture.free();
38
+ }
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=TextureMemoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,oBAAoB;IACvB,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;IACtD,SAAS,CAAS;IAE1B;;OAEG;IACH,YAAY,aAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAE/B,wEAAwE;QACxE,iDAAiD;QACjD,IAAI,aAAa,KAAK,CAAC,EAAE;YACvB,gEAAgE;YAChE,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SAClC;IACH,CAAC;IAED,gBAAgB,CAAC,UAA8B,EAAE,QAAgB;QAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACjC,oEAAoE;YACpE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;SAChD;QAED,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO;SACR;aAAM;YACL,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,EAAE,EAAE,CAAC;SACX;IACH,CAAC;IAED,EAAE;QACA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC1B,UAAU,CAAC,IAAI,EAAE,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -20,12 +20,20 @@
20
20
  * Platform render loop initiator
21
21
  */
22
22
  export const startLoop = (stage) => {
23
+ let isIdle = false;
23
24
  const runLoop = () => {
24
25
  stage.updateAnimations();
25
26
  if (!stage.hasSceneUpdates()) {
27
+ // We still need to calculate the fps else it looks like the app is frozen
28
+ stage.calculateFps();
26
29
  setTimeout(runLoop, 16.666666666666668);
30
+ if (!isIdle) {
31
+ stage.emit('idle');
32
+ isIdle = true;
33
+ }
27
34
  return;
28
35
  }
36
+ isIdle = false;
29
37
  stage.drawFrame();
30
38
  requestAnimationFrame(runLoop);
31
39
  };
@@ -1 +1 @@
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,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE;YAC5B,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACxC,OAAO;SACR;QAED,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,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
+ {"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,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE;YAC5B,0EAA0E;YAC1E,KAAK,CAAC,YAAY,EAAE,CAAC;YACrB,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE;gBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnB,MAAM,GAAG,IAAI,CAAC;aACf;YACD,OAAO;SACR;QAED,MAAM,GAAG,KAAK,CAAC;QACf,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,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,6 +1,10 @@
1
+ import type { TextureMemoryManager } from '../TextureMemoryManager.js';
1
2
  import type { Texture } from '../textures/Texture.js';
2
3
  export declare abstract class CoreContextTexture {
4
+ readonly memManager: TextureMemoryManager;
3
5
  readonly textureSource: Texture;
4
- constructor(textureSource: Texture);
6
+ constructor(memManager: TextureMemoryManager, textureSource: Texture);
5
7
  abstract load(): void;
8
+ abstract free(): void;
9
+ abstract get renderable(): boolean;
6
10
  }
@@ -17,8 +17,10 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export class CoreContextTexture {
20
+ memManager;
20
21
  textureSource;
21
- constructor(textureSource) {
22
+ constructor(memManager, textureSource) {
23
+ this.memManager = memManager;
22
24
  this.textureSource = textureSource;
23
25
  }
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoreContextTexture.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreContextTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,OAAgB,kBAAkB;IAC7B,aAAa,CAAU;IAEhC,YAAY,aAAsB;QAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CAGF"}
1
+ {"version":3,"file":"CoreContextTexture.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreContextTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,MAAM,OAAgB,kBAAkB;IAC7B,UAAU,CAAuB;IACjC,aAAa,CAAU;IAEhC,YAAY,UAAgC,EAAE,aAAsB;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CAKF"}
@@ -1,8 +1,9 @@
1
1
  import type { Dimensions } from '../../../common/CommonTypes.js';
2
+ import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
2
3
  import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
3
4
  import type { SubTexture } from '../../textures/SubTexture.js';
4
5
  import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
5
6
  export declare class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {
6
- constructor(glw: WebGlContextWrapper, textureSource: SubTexture);
7
+ constructor(glw: WebGlContextWrapper, memManager: TextureMemoryManager, textureSource: SubTexture);
7
8
  onLoadRequest(): Promise<Dimensions>;
8
9
  }
@@ -18,8 +18,8 @@
18
18
  */
19
19
  import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
20
20
  export class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {
21
- constructor(glw, textureSource) {
22
- super(glw, textureSource);
21
+ constructor(glw, memManager, textureSource) {
22
+ super(glw, memManager, textureSource);
23
23
  }
24
24
  async onLoadRequest() {
25
25
  const props = await this.textureSource.getTextureData();
@@ -1 +1 @@
1
- {"version":3,"file":"WebGlCoreCtxSubTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAwB,EAAE,aAAyB;QAC7D,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC5B,CAAC;IAEQ,KAAK,CAAC,aAAa;QAC1B,MAAM,KAAK,GAAG,MAAO,IAAI,CAAC,aAA4B,CAAC,cAAc,EAAE,CAAC;QACxE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"WebGlCoreCtxSubTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YACE,GAAwB,EACxB,UAAgC,EAChC,aAAyB;QAEzB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,aAAa;QAC1B,MAAM,KAAK,GAAG,MAAO,IAAI,CAAC,aAA4B,CAAC,cAAc,EAAE,CAAC;QACxE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import type { Dimensions } from '../../../common/CommonTypes.js';
2
+ import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
2
3
  import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
3
4
  import type { Texture } from '../../textures/Texture.js';
4
5
  import { CoreContextTexture } from '../CoreContextTexture.js';
@@ -19,8 +20,9 @@ export declare class WebGlCoreCtxTexture extends CoreContextTexture {
19
20
  private _state;
20
21
  private _w;
21
22
  private _h;
22
- constructor(glw: WebGlContextWrapper, textureSource: Texture);
23
+ constructor(glw: WebGlContextWrapper, memManager: TextureMemoryManager, textureSource: Texture);
23
24
  get ctxTexture(): WebGLTexture;
25
+ get renderable(): boolean;
24
26
  get w(): number;
25
27
  get h(): number;
26
28
  /**
@@ -38,8 +38,8 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
38
38
  _state = 'freed';
39
39
  _w = 0;
40
40
  _h = 0;
41
- constructor(glw, textureSource) {
42
- super(textureSource);
41
+ constructor(glw, memManager, textureSource) {
42
+ super(memManager, textureSource);
43
43
  this.glw = glw;
44
44
  }
45
45
  get ctxTexture() {
@@ -49,6 +49,9 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
49
49
  assertTruthy(this._nativeCtxTexture);
50
50
  return this._nativeCtxTexture;
51
51
  }
52
+ get renderable() {
53
+ return this.textureSource.renderable;
54
+ }
52
55
  get w() {
53
56
  return this._w;
54
57
  }
@@ -71,8 +74,12 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
71
74
  }
72
75
  this._state = 'loading';
73
76
  this.textureSource.setState('loading');
77
+ this._nativeCtxTexture = this.createNativeCtxTexture();
74
78
  this.onLoadRequest()
75
79
  .then(({ width, height }) => {
80
+ if (this._state === 'freed') {
81
+ return;
82
+ }
76
83
  this._state = 'loaded';
77
84
  this._w = width;
78
85
  this._h = height;
@@ -90,8 +97,7 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
90
97
  * Called when the texture data needs to be loaded and uploaded to a texture
91
98
  */
92
99
  async onLoadRequest() {
93
- this._nativeCtxTexture = this.createNativeCtxTexture();
94
- const { glw } = this;
100
+ const { glw, memManager } = this;
95
101
  // On initial load request, create a 1x1 transparent texture to use until
96
102
  // the texture data is finally loaded.
97
103
  glw.activeTexture(0);
@@ -103,7 +109,13 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
103
109
  glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
104
110
  glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
105
111
  glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);
112
+ memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);
106
113
  const textureData = await this.textureSource?.getTextureData();
114
+ // If the texture has been freed while loading, return early.
115
+ if (!this._nativeCtxTexture) {
116
+ assertTruthy(this._state === 'freed');
117
+ return { width: 0, height: 0 };
118
+ }
107
119
  let width = 0;
108
120
  let height = 0;
109
121
  assertTruthy(this._nativeCtxTexture);
@@ -120,6 +132,7 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
120
132
  glw.bindTexture(this._nativeCtxTexture);
121
133
  glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
122
134
  glw.texImage2D(0, glw.RGBA, glw.RGBA, glw.UNSIGNED_BYTE, data);
135
+ memManager.setTextureMemUse(this, width * height * 4);
123
136
  // generate mipmaps for power-of-2 textures or in WebGL2RenderingContext
124
137
  if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {
125
138
  glw.generateMipmap();
@@ -131,6 +144,7 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
131
144
  // Reset to a 1x1 transparent texture
132
145
  glw.bindTexture(this._nativeCtxTexture);
133
146
  glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);
147
+ memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);
134
148
  }
135
149
  else if ('mipmaps' in textureData.data && textureData.data.mipmaps) {
136
150
  const { mipmaps, width = 0, height = 0, type, glInternalFormat, } = textureData.data;
@@ -143,6 +157,7 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
143
157
  glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
144
158
  glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
145
159
  glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
160
+ memManager.setTextureMemUse(this, view.byteLength);
146
161
  }
147
162
  else {
148
163
  console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);
@@ -162,13 +177,15 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
162
177
  return;
163
178
  }
164
179
  this._state = 'freed';
180
+ this.textureSource.setState('freed');
165
181
  this._w = 0;
166
182
  this._h = 0;
167
183
  if (!this._nativeCtxTexture) {
168
184
  return;
169
185
  }
170
- const { glw } = this;
186
+ const { glw, memManager } = this;
171
187
  glw.deleteTexture(this._nativeCtxTexture);
188
+ memManager.setTextureMemUse(this, 0);
172
189
  this._nativeCtxTexture = null;
173
190
  }
174
191
  createNativeCtxTexture() {
@@ -1 +1 @@
1
- {"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,13 @@ import { BufferCollection } from './internal/BufferCollection.js';
10
10
  import { WebGlCoreShader } from './WebGlCoreShader.js';
11
11
  import { ContextSpy } from '../../lib/ContextSpy.js';
12
12
  import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
13
+ import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
13
14
  export interface WebGlCoreRendererOptions {
14
15
  stage: Stage;
15
16
  canvas: HTMLCanvasElement | OffscreenCanvas;
16
17
  pixelRatio: number;
17
18
  txManager: CoreTextureManager;
19
+ txMemManager: TextureMemoryManager;
18
20
  shManager: CoreShaderManager;
19
21
  clearColor: number;
20
22
  bufferMemory: number;
@@ -28,6 +30,7 @@ export declare class WebGlCoreRenderer extends CoreRenderer {
28
30
  glw: WebGlContextWrapper;
29
31
  system: CoreWebGlSystem;
30
32
  txManager: CoreTextureManager;
33
+ txMemManager: TextureMemoryManager;
31
34
  shManager: CoreShaderManager;
32
35
  options: Required<WebGlCoreRendererOptions>;
33
36
  quadBuffer: ArrayBuffer;
@@ -40,6 +40,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
40
40
  system;
41
41
  //// Core Managers
42
42
  txManager;
43
+ txMemManager;
43
44
  shManager;
44
45
  //// Options
45
46
  options;
@@ -64,6 +65,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
64
65
  const { canvas, clearColor, bufferMemory } = options;
65
66
  this.options = options;
66
67
  this.txManager = options.txManager;
68
+ this.txMemManager = options.txMemManager;
67
69
  this.shManager = options.shManager;
68
70
  this.defaultTexture = new ColorTexture(this.txManager);
69
71
  // When the default texture is loaded, request a render in case the
@@ -141,9 +143,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
141
143
  }
142
144
  createCtxTexture(textureSource) {
143
145
  if (textureSource instanceof SubTexture) {
144
- return new WebGlCoreCtxSubTexture(this.glw, textureSource);
146
+ return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);
145
147
  }
146
- return new WebGlCoreCtxTexture(this.glw, textureSource);
148
+ return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);
147
149
  }
148
150
  /**
149
151
  * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.