@codexo/exojs 0.4.0 → 0.6.2

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 (151) hide show
  1. package/CHANGELOG.md +499 -163
  2. package/README.md +156 -141
  3. package/dist/esm/audio/AudioAnalyser.d.ts +0 -1
  4. package/dist/esm/audio/AudioAnalyser.js +0 -2
  5. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  6. package/dist/esm/core/Application.d.ts +4 -4
  7. package/dist/esm/core/Application.js +19 -19
  8. package/dist/esm/core/Application.js.map +1 -1
  9. package/dist/esm/core/Scene.d.ts +59 -24
  10. package/dist/esm/core/Scene.js +60 -18
  11. package/dist/esm/core/Scene.js.map +1 -1
  12. package/dist/esm/core/SceneManager.js +15 -9
  13. package/dist/esm/core/SceneManager.js.map +1 -1
  14. package/dist/esm/core/SceneNode.d.ts +45 -5
  15. package/dist/esm/core/SceneNode.js +136 -7
  16. package/dist/esm/core/SceneNode.js.map +1 -1
  17. package/dist/esm/index.js +6 -4
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/math/index.d.ts +0 -1
  20. package/dist/esm/rendering/CallbackRenderPass.d.ts +3 -3
  21. package/dist/esm/rendering/CallbackRenderPass.js +2 -2
  22. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  23. package/dist/esm/rendering/Container.d.ts +10 -11
  24. package/dist/esm/rendering/Container.js +5 -5
  25. package/dist/esm/rendering/Container.js.map +1 -1
  26. package/dist/esm/rendering/Drawable.d.ts +2 -2
  27. package/dist/esm/rendering/Drawable.js +5 -5
  28. package/dist/esm/rendering/Drawable.js.map +1 -1
  29. package/dist/esm/rendering/{SceneRenderRuntime.d.ts → RenderBackend.d.ts} +21 -3
  30. package/dist/esm/rendering/RenderNode.d.ts +41 -5
  31. package/dist/esm/rendering/RenderNode.js +89 -24
  32. package/dist/esm/rendering/RenderNode.js.map +1 -1
  33. package/dist/esm/rendering/RenderPass.d.ts +2 -2
  34. package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
  35. package/dist/esm/rendering/RenderTargetPass.js +9 -9
  36. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  37. package/dist/esm/rendering/Renderer.d.ts +3 -3
  38. package/dist/esm/rendering/RendererRegistry.d.ts +13 -7
  39. package/dist/esm/rendering/RendererRegistry.js +18 -10
  40. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  41. package/dist/esm/rendering/filters/BlurFilter.d.ts +2 -2
  42. package/dist/esm/rendering/filters/BlurFilter.js +5 -5
  43. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  44. package/dist/esm/rendering/filters/ColorFilter.d.ts +2 -2
  45. package/dist/esm/rendering/filters/ColorFilter.js +3 -3
  46. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  47. package/dist/esm/rendering/filters/Filter.d.ts +2 -2
  48. package/dist/esm/rendering/index.d.ts +9 -6
  49. package/dist/esm/rendering/mesh/Mesh.d.ts +69 -0
  50. package/dist/esm/rendering/mesh/Mesh.js +114 -0
  51. package/dist/esm/rendering/mesh/Mesh.js.map +1 -0
  52. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
  53. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  54. package/dist/esm/rendering/shader/Shader.d.ts +3 -3
  55. package/dist/esm/rendering/shader/Shader.js +10 -10
  56. package/dist/esm/rendering/text/Text.d.ts +2 -2
  57. package/dist/esm/rendering/text/Text.js +2 -2
  58. package/dist/esm/rendering/text/Text.js.map +1 -1
  59. package/dist/esm/rendering/texture/Sampler.d.ts +0 -3
  60. package/dist/esm/rendering/texture/Sampler.js +5 -7
  61. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  62. package/dist/esm/rendering/types.d.ts +4 -0
  63. package/dist/esm/rendering/types.js +4 -0
  64. package/dist/esm/rendering/types.js.map +1 -1
  65. package/dist/esm/rendering/video/Video.d.ts +2 -2
  66. package/dist/esm/rendering/video/Video.js +2 -2
  67. package/dist/esm/rendering/video/Video.js.map +1 -1
  68. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +2 -2
  69. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +35 -11
  70. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  71. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +13 -13
  72. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +20 -20
  73. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
  74. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.d.ts → WebGl2Backend.d.ts} +15 -12
  75. package/dist/esm/rendering/webgl2/{WebGl2RenderManager.js → WebGl2Backend.js} +63 -38
  76. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -0
  77. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +31 -0
  78. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +186 -0
  79. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -0
  80. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +27 -0
  81. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +242 -0
  82. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -0
  83. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +38 -7
  84. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +281 -90
  85. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
  86. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +2 -2
  87. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +15 -10
  88. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -1
  89. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +12 -0
  90. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  91. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts +2 -0
  92. package/dist/esm/rendering/webgl2/{WebGl2ShaderRuntime.js → WebGl2ShaderProgram.js} +58 -18
  93. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -0
  94. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +26 -7
  95. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +260 -62
  96. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  97. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +24 -1
  98. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +6 -2
  99. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
  100. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js +4 -0
  101. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js.map +1 -0
  102. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js +4 -0
  103. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js.map +1 -0
  104. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +4 -0
  105. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js.map +1 -0
  106. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +4 -0
  107. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js.map +1 -0
  108. package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
  109. package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +1 -1
  110. package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
  111. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +9 -9
  112. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +18 -18
  113. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
  114. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.d.ts → WebGpuBackend.d.ts} +17 -14
  115. package/dist/esm/rendering/webgpu/{WebGpuRenderManager.js → WebGpuBackend.js} +77 -40
  116. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -0
  117. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +37 -0
  118. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +279 -0
  119. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -0
  120. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +40 -0
  121. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +439 -0
  122. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -0
  123. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +2 -3
  124. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +65 -82
  125. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  126. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +2 -3
  127. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +24 -25
  128. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  129. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +28 -13
  130. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +410 -382
  131. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  132. package/dist/esm/resources/Loader.js +5 -3
  133. package/dist/esm/resources/Loader.js.map +1 -1
  134. package/dist/exo.esm.js +3574 -1696
  135. package/dist/exo.esm.js.map +1 -1
  136. package/package.json +20 -11
  137. package/dist/esm/math/Transformable.d.ts +0 -47
  138. package/dist/esm/math/Transformable.js +0 -140
  139. package/dist/esm/math/Transformable.js.map +0 -1
  140. package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +0 -1
  141. package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +0 -15
  142. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.d.ts +0 -2
  143. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +0 -1
  144. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +0 -1
  145. package/dist/esm/rendering/webgpu/WebGpuRendererRuntime.d.ts +0 -8
  146. package/dist/exo.esm.min.js +0 -2
  147. package/dist/exo.esm.min.js.map +0 -1
  148. package/dist/exo.global.js +0 -17328
  149. package/dist/exo.global.js.map +0 -1
  150. package/dist/exo.global.min.js +0 -2
  151. package/dist/exo.global.min.js.map +0 -1
@@ -1,12 +1,11 @@
1
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
2
- import type { SceneNode } from '@/core/SceneNode';
1
+ import type { RenderBackend } from './RenderBackend';
3
2
  import { RenderNode } from './RenderNode';
4
3
  export declare class Container extends RenderNode {
5
4
  private readonly _children;
6
5
  private _sortableChildren;
7
6
  private _sortDirty;
8
7
  private _nextChildOrder;
9
- get children(): Array<SceneNode>;
8
+ get children(): Array<RenderNode>;
10
9
  get sortableChildren(): boolean;
11
10
  set sortableChildren(sortableChildren: boolean);
12
11
  get width(): number;
@@ -17,16 +16,16 @@ export declare class Container extends RenderNode {
17
16
  get top(): number;
18
17
  get right(): number;
19
18
  get bottom(): number;
20
- addChild(...children: Array<SceneNode>): this;
21
- addChildAt(child: SceneNode, index: number): this;
22
- swapChildren(firstChild: SceneNode, secondChild: SceneNode): this;
23
- getChildIndex(child: SceneNode): number;
24
- setChildIndex(child: SceneNode, index: number): this;
25
- getChildAt(index: number): SceneNode;
26
- removeChild(child: SceneNode): this;
19
+ addChild(...children: Array<RenderNode>): this;
20
+ addChildAt(child: RenderNode, index: number): this;
21
+ swapChildren(firstChild: RenderNode, secondChild: RenderNode): this;
22
+ getChildIndex(child: RenderNode): number;
23
+ setChildIndex(child: RenderNode, index: number): this;
24
+ getChildAt(index: number): RenderNode;
25
+ removeChild(child: RenderNode): this;
27
26
  removeChildAt(index: number): this;
28
27
  removeChildren(begin?: number, end?: number): this;
29
- render(renderManager: SceneRenderRuntime): this;
28
+ render(backend: RenderBackend): this;
30
29
  contains(x: number, y: number): boolean;
31
30
  updateBounds(): this;
32
31
  destroy(): void;
@@ -132,18 +132,18 @@ class Container extends RenderNode {
132
132
  this.invalidateCache();
133
133
  return this;
134
134
  }
135
- render(renderManager) {
135
+ render(backend) {
136
136
  if (!this.visible || this._children.length === 0) {
137
137
  return this;
138
138
  }
139
- if (!this.inView(renderManager.view)) {
140
- renderManager.stats.culledNodes++;
139
+ if (!this.inView(backend.view)) {
140
+ backend.stats.culledNodes++;
141
141
  return this;
142
142
  }
143
- this.renderVisualContent(renderManager, () => {
143
+ this.renderVisualContent(backend, () => {
144
144
  this._sortChildrenIfNeeded();
145
145
  for (const child of this._children) {
146
- child.render(renderManager);
146
+ child.render(backend);
147
147
  }
148
148
  });
149
149
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Color } from '@/core/Color';
2
2
  import { BlendModes } from '@/rendering/types';
3
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
3
+ import type { RenderBackend } from './RenderBackend';
4
4
  import { RenderNode } from './RenderNode';
5
5
  export declare class Drawable extends RenderNode {
6
6
  private _tint;
@@ -11,6 +11,6 @@ export declare class Drawable extends RenderNode {
11
11
  set blendMode(blendMode: BlendModes);
12
12
  setTint(color: Color): this;
13
13
  setBlendMode(blendMode: BlendModes): this;
14
- render(renderManager: SceneRenderRuntime): this;
14
+ render(backend: RenderBackend): this;
15
15
  destroy(): void;
16
16
  }
@@ -31,16 +31,16 @@ class Drawable extends RenderNode {
31
31
  }
32
32
  return this;
33
33
  }
34
- render(renderManager) {
34
+ render(backend) {
35
35
  if (!this.visible) {
36
36
  return this;
37
37
  }
38
- if (!this.inView(renderManager.view)) {
39
- renderManager.stats.culledNodes++;
38
+ if (!this.inView(backend.view)) {
39
+ backend.stats.culledNodes++;
40
40
  return this;
41
41
  }
42
- this.renderVisualContent(renderManager, () => {
43
- renderManager.draw(this);
42
+ this.renderVisualContent(backend, () => {
43
+ backend.draw(this);
44
44
  }, this._blendMode);
45
45
  return this;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKM,MAAO,QAAS,SAAQ,UAAU,CAAA;AAE5B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;AAElD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACtB;AAEA,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;IAC1B;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAChC;AAEO,IAAA,OAAO,CAAC,KAAY,EAAA;QACvB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,YAAY,CAAC,SAAqB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEgB,IAAA,MAAM,CAAC,aAAiC,EAAA;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAClC,YAAA,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE;AAEjC,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAK;AACzC,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,QAAA,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAEnB,QAAA,OAAO,IAAI;IACf;IAEgB,OAAO,GAAA;QACnB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACxB;AACH;;;;"}
1
+ {"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKM,MAAO,QAAS,SAAQ,UAAU,CAAA;AAE5B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;AAElD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACtB;AAEA,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;IAC1B;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAChC;AAEO,IAAA,OAAO,CAAC,KAAY,EAAA;QACvB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,YAAY,CAAC,SAAqB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,OAAO,IAAI;IACf;AAEgB,IAAA,MAAM,CAAC,OAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAE3B,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAK;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAEnB,QAAA,OAAO,IAAI;IACf;IAEgB,OAAO,GAAA;QACnB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACxB;AACH;;;;"}
@@ -5,9 +5,11 @@ import type { View } from './View';
5
5
  import type { Drawable } from './Drawable';
6
6
  import type { RenderPass } from './RenderPass';
7
7
  import type { Rectangle } from '@/math/Rectangle';
8
+ import type { Texture } from './texture/Texture';
8
9
  import type { RenderTexture } from './texture/RenderTexture';
9
10
  import type { RenderStats } from './RenderStats';
10
- export interface SceneRenderRuntime {
11
+ import type { BlendModes } from './types';
12
+ export interface RenderBackend {
11
13
  readonly backendType: RenderBackendType;
12
14
  readonly view: View;
13
15
  readonly renderTarget: RenderTarget;
@@ -18,10 +20,26 @@ export interface SceneRenderRuntime {
18
20
  resize(width: number, height: number): this;
19
21
  setView(view: View | null): this;
20
22
  setRenderTarget(target: RenderTarget | null): this;
21
- pushMask(maskBounds: Rectangle): this;
22
- popMask(): this;
23
+ /**
24
+ * Push an axis-aligned scissor rectangle. Used internally by the
25
+ * `Rectangle` mask path on `RenderNode.mask`. Nested scissors
26
+ * intersect with the previous scissor on the stack.
27
+ */
28
+ pushScissorRect(bounds: Rectangle): this;
29
+ /**
30
+ * Pop the most recently pushed scissor rectangle.
31
+ */
32
+ popScissorRect(): this;
23
33
  acquireRenderTexture(width: number, height: number): RenderTexture;
24
34
  releaseRenderTexture(texture: RenderTexture): this;
35
+ /**
36
+ * Composite `content` onto the active render target with each output
37
+ * pixel's alpha multiplied by the corresponding sample of
38
+ * `mask.alpha`. The mask is stretched-fit over the target rectangle
39
+ * `(x, y, width, height)` in world-space. Used internally by the
40
+ * non-Rectangle `MaskSource` paths on `RenderNode.mask`.
41
+ */
42
+ composeWithAlphaMask(content: RenderTexture, mask: Texture | RenderTexture, x: number, y: number, width: number, height: number, blendMode: BlendModes): this;
25
43
  draw(drawable: Drawable): this;
26
44
  execute(pass: RenderPass): this;
27
45
  flush(): this;
@@ -1,8 +1,10 @@
1
1
  import { SceneNode } from '@/core/SceneNode';
2
2
  import { Color } from '@/core/Color';
3
+ import { Rectangle } from '@/math/Rectangle';
3
4
  import { BlendModes } from '@/rendering/types';
5
+ import type { Texture } from '@/rendering/texture/Texture';
4
6
  import { RenderTexture } from '@/rendering/texture/RenderTexture';
5
- import type { SceneRenderRuntime } from '@/rendering/SceneRenderRuntime';
7
+ import type { RenderBackend } from '@/rendering/RenderBackend';
6
8
  import type { Filter } from '@/rendering/filters/Filter';
7
9
  interface RenderNodeSpriteLike {
8
10
  width: number;
@@ -13,9 +15,33 @@ interface RenderNodeSpriteLike {
13
15
  setPosition(x: number, y: number): this;
14
16
  setRotation(rotation: number): this;
15
17
  setScale(x: number, y?: number): this;
16
- render(runtime: SceneRenderRuntime): this;
18
+ render(backend: RenderBackend): this;
17
19
  destroy(): void;
18
20
  }
21
+ /**
22
+ * Acceptable mask sources for {@link RenderNode.mask}.
23
+ *
24
+ * - `Rectangle` — solid axis-aligned mask. The fastest path: implemented
25
+ * internally via GPU scissor / clip rect; no intermediate render
26
+ * targets are required.
27
+ * - `Texture` — uses the texture's alpha channel as the mask. Stretched
28
+ * to fit the masked node's local bounds. The texture is sampled with
29
+ * no transform of its own; if you need transform/anchor/scale, use a
30
+ * `Sprite(texture)` as the mask source instead.
31
+ * - `RenderTexture` — same alpha-mask semantics as `Texture` for a
32
+ * dynamic/offscreen source.
33
+ * - `RenderNode` — the mask node's full visual output (after its own
34
+ * transform, filters, cacheAsBitmap, etc.) is rendered into an
35
+ * intermediate render texture and used as the alpha mask. Acceptable
36
+ * sources include `Sprite`, `Graphics`, `Container`, and any other
37
+ * class that extends `RenderNode`. Bare `SceneNode` instances are
38
+ * structural-only and rejected at compile time.
39
+ * - `null` — no mask.
40
+ *
41
+ * Cost summary: `Rectangle` is O(1) GPU state. The other sources require
42
+ * one or two intermediate render textures plus an alpha-composite pass.
43
+ */
44
+ export type MaskSource = Rectangle | Texture | RenderTexture | RenderNode | null;
19
45
  export declare abstract class RenderNode extends SceneNode {
20
46
  private static _spriteFactory;
21
47
  private readonly _filters;
@@ -28,8 +54,17 @@ export declare abstract class RenderNode extends SceneNode {
28
54
  private _cacheTexture;
29
55
  get filters(): Array<Filter>;
30
56
  set filters(filters: ReadonlyArray<Filter>);
31
- get mask(): SceneNode | null;
32
- set mask(mask: SceneNode | null);
57
+ /**
58
+ * The mask source that controls visibility of this node's render
59
+ * output. See {@link MaskSource} for accepted source types and their
60
+ * semantics. Setting to `null` removes any active mask.
61
+ *
62
+ * Setting a `RenderNode` that is `this` is rejected (a node cannot
63
+ * mask itself); other cycles (mask of mask of self) are not detected.
64
+ */
65
+ get mask(): MaskSource;
66
+ set mask(mask: MaskSource);
67
+ abstract render(backend: RenderBackend): this;
33
68
  get cacheAsBitmap(): boolean;
34
69
  set cacheAsBitmap(cacheAsBitmap: boolean);
35
70
  setFilters(filters: ReadonlyArray<Filter>): this;
@@ -39,9 +74,10 @@ export declare abstract class RenderNode extends SceneNode {
39
74
  clearFilters(): this;
40
75
  setCacheAsBitmap(cacheAsBitmap: boolean): this;
41
76
  invalidateCache(): this;
42
- protected renderVisualContent(runtime: SceneRenderRuntime, renderContent: () => void, blendMode?: BlendModes): void;
77
+ protected renderVisualContent(backend: RenderBackend, renderContent: () => void, blendMode?: BlendModes): void;
43
78
  destroy(): void;
44
79
  private _withMask;
80
+ private _resolveMaskTexture;
45
81
  private _renderContentToTexture;
46
82
  private _drawTexture;
47
83
  private _ensureCacheTexture;
@@ -23,10 +23,21 @@ class RenderNode extends SceneNode {
23
23
  set filters(filters) {
24
24
  this.setFilters(filters);
25
25
  }
26
+ /**
27
+ * The mask source that controls visibility of this node's render
28
+ * output. See {@link MaskSource} for accepted source types and their
29
+ * semantics. Setting to `null` removes any active mask.
30
+ *
31
+ * Setting a `RenderNode` that is `this` is rejected (a node cannot
32
+ * mask itself); other cycles (mask of mask of self) are not detected.
33
+ */
26
34
  get mask() {
27
35
  return this._mask;
28
36
  }
29
37
  set mask(mask) {
38
+ if (mask === this) {
39
+ throw new Error('A RenderNode cannot use itself as its own mask source.');
40
+ }
30
41
  if (this._mask !== mask) {
31
42
  this._mask = mask;
32
43
  this.invalidateCache();
@@ -79,11 +90,11 @@ class RenderNode extends SceneNode {
79
90
  this._cacheDirty = true;
80
91
  return this;
81
92
  }
82
- renderVisualContent(runtime, renderContent, blendMode = BlendModes.Normal) {
93
+ renderVisualContent(backend, renderContent, blendMode = BlendModes.Normal) {
83
94
  const hasFilters = this._filters.length > 0;
84
95
  const needsBitmapCache = this._cacheAsBitmap;
85
96
  if (!hasFilters && !needsBitmapCache) {
86
- this._withMask(runtime, renderContent);
97
+ this._withMask(backend, renderContent, blendMode);
87
98
  return;
88
99
  }
89
100
  const rawBounds = this.getBounds();
@@ -99,9 +110,9 @@ class RenderNode extends SceneNode {
99
110
  || this._cacheTexture === null
100
111
  || cacheBoundsChanged);
101
112
  if (needsBitmapCache && !shouldRefreshCache && this._cacheTexture !== null) {
102
- this._withMask(runtime, () => {
103
- this._drawTexture(runtime, this._cacheTexture, left, top, width, height, blendMode);
104
- });
113
+ this._withMask(backend, () => {
114
+ this._drawTexture(backend, this._cacheTexture, left, top, width, height, blendMode);
115
+ }, blendMode);
105
116
  return;
106
117
  }
107
118
  const temporaryTextures = [];
@@ -109,22 +120,22 @@ class RenderNode extends SceneNode {
109
120
  try {
110
121
  const sourceTexture = (needsBitmapCache && !hasFilters)
111
122
  ? cacheTexture
112
- : runtime.acquireRenderTexture(width, height);
123
+ : backend.acquireRenderTexture(width, height);
113
124
  if (sourceTexture !== cacheTexture) {
114
125
  temporaryTextures.push(sourceTexture);
115
126
  }
116
- this._renderContentToTexture(runtime, sourceTexture, left, top, width, height, renderContent);
127
+ this._renderContentToTexture(backend, sourceTexture, left, top, width, height, renderContent);
117
128
  let finalTexture = sourceTexture;
118
129
  if (hasFilters) {
119
130
  for (let index = 0; index < this._filters.length; index++) {
120
131
  const isLast = index === this._filters.length - 1;
121
132
  const output = (isLast && needsBitmapCache)
122
133
  ? cacheTexture
123
- : runtime.acquireRenderTexture(width, height);
134
+ : backend.acquireRenderTexture(width, height);
124
135
  if (output !== cacheTexture) {
125
136
  temporaryTextures.push(output);
126
137
  }
127
- this._filters[index].apply(runtime, finalTexture, output);
138
+ this._filters[index].apply(backend, finalTexture, output);
128
139
  finalTexture = output;
129
140
  }
130
141
  }
@@ -133,13 +144,13 @@ class RenderNode extends SceneNode {
133
144
  this._cacheBounds.set(left, top, width, height);
134
145
  this._cacheDirty = false;
135
146
  }
136
- this._withMask(runtime, () => {
137
- this._drawTexture(runtime, finalTexture, left, top, width, height, blendMode);
138
- });
147
+ this._withMask(backend, () => {
148
+ this._drawTexture(backend, finalTexture, left, top, width, height, blendMode);
149
+ }, blendMode);
139
150
  }
140
151
  finally {
141
152
  for (const texture of temporaryTextures) {
142
- runtime.releaseRenderTexture(texture);
153
+ backend.releaseRenderTexture(texture);
143
154
  }
144
155
  }
145
156
  }
@@ -159,31 +170,85 @@ class RenderNode extends SceneNode {
159
170
  this._filters.length = 0;
160
171
  this._mask = null;
161
172
  }
162
- _withMask(runtime, callback) {
163
- if (this._mask === null) {
173
+ _withMask(backend, callback, blendMode = BlendModes.Normal) {
174
+ const mask = this._mask;
175
+ if (mask === null) {
164
176
  callback();
165
177
  return;
166
178
  }
167
- const maskBounds = this._mask.getBounds();
168
- if (maskBounds.width <= 0 || maskBounds.height <= 0) {
179
+ // Fast path: rectangle mask uses GPU scissor.
180
+ if (mask instanceof Rectangle) {
181
+ if (mask.width <= 0 || mask.height <= 0) {
182
+ return;
183
+ }
184
+ backend.pushScissorRect(mask);
185
+ try {
186
+ callback();
187
+ }
188
+ finally {
189
+ backend.popScissorRect();
190
+ }
169
191
  return;
170
192
  }
171
- runtime.pushMask(maskBounds);
193
+ // Alpha-mask paths: Texture, RenderTexture, or RenderNode source.
194
+ // Strategy:
195
+ // 1. Render `callback` (the masked content) into an intermediate
196
+ // contentTexture.
197
+ // 2. Resolve the mask into a texture: Texture/RenderTexture used
198
+ // directly; RenderNode rendered into a maskTexture first.
199
+ // 3. Compose contentTexture * mask.alpha into the active target at the
200
+ // content's world-space position.
201
+ // 4. Release intermediates.
202
+ const contentBounds = this.getBounds();
203
+ if (contentBounds.width <= 0 || contentBounds.height <= 0) {
204
+ return;
205
+ }
206
+ const left = Math.floor(contentBounds.left);
207
+ const top = Math.floor(contentBounds.top);
208
+ const width = Math.max(1, Math.ceil(contentBounds.width));
209
+ const height = Math.max(1, Math.ceil(contentBounds.height));
210
+ const contentTexture = backend.acquireRenderTexture(width, height);
211
+ const releasePool = [contentTexture];
172
212
  try {
173
- callback();
213
+ this._renderContentToTexture(backend, contentTexture, left, top, width, height, callback);
214
+ const maskTexture = this._resolveMaskTexture(backend, mask, width, height, releasePool);
215
+ backend.composeWithAlphaMask(contentTexture, maskTexture, left, top, width, height, blendMode);
174
216
  }
175
217
  finally {
176
- runtime.popMask();
218
+ for (const texture of releasePool) {
219
+ backend.releaseRenderTexture(texture);
220
+ }
221
+ }
222
+ }
223
+ _resolveMaskTexture(backend, mask, width, height, releasePool) {
224
+ if (mask instanceof RenderNode) {
225
+ // Render the mask node's full visual output into an
226
+ // intermediate render texture sized to match the masked
227
+ // content. The mask node renders with its own transform; the
228
+ // intermediate is positioned over the masked content's
229
+ // world-space bounds so the resulting texture uses the
230
+ // masked content's local UV space.
231
+ const maskTexture = backend.acquireRenderTexture(width, height);
232
+ releasePool.push(maskTexture);
233
+ const contentBounds = this.getBounds();
234
+ const left = Math.floor(contentBounds.left);
235
+ const top = Math.floor(contentBounds.top);
236
+ this._renderContentToTexture(backend, maskTexture, left, top, width, height, () => {
237
+ mask.render(backend);
238
+ });
239
+ return maskTexture;
177
240
  }
241
+ // mask is Texture or RenderTexture — use directly.
242
+ return mask;
178
243
  }
179
- _renderContentToTexture(runtime, target, left, top, width, height, renderContent) {
244
+ _renderContentToTexture(backend, target, left, top, width, height, renderContent) {
180
245
  if (this._captureView === null) {
181
246
  this._captureView = new View(left + (width / 2), top + (height / 2), width, height);
182
247
  }
183
248
  else {
184
249
  this._captureView.reset(left + (width / 2), top + (height / 2), width, height);
185
250
  }
186
- runtime.execute(new RenderTargetPass(() => {
251
+ backend.execute(new RenderTargetPass(() => {
187
252
  renderContent();
188
253
  }, {
189
254
  target,
@@ -191,7 +256,7 @@ class RenderNode extends SceneNode {
191
256
  clearColor: Color.transparentBlack,
192
257
  }));
193
258
  }
194
- _drawTexture(runtime, texture, x, y, width, height, blendMode) {
259
+ _drawTexture(backend, texture, x, y, width, height, blendMode) {
195
260
  const sprite = this._getCacheSprite();
196
261
  sprite
197
262
  .setTexture(texture)
@@ -202,7 +267,7 @@ class RenderNode extends SceneNode {
202
267
  .setScale(1, 1);
203
268
  sprite.width = width;
204
269
  sprite.height = height;
205
- sprite.render(runtime);
270
+ sprite.render(backend);
206
271
  }
207
272
  _ensureCacheTexture(width, height) {
208
273
  if (this._cacheTexture === null) {
@@ -1 +1 @@
1
- {"version":3,"file":"RenderNode.js","sources":["../../../../src/rendering/RenderNode.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderNode.js","sources":["../../../../src/rendering/RenderNode.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
1
+ import type { RenderBackend } from './RenderBackend';
2
2
  export interface RenderPass {
3
- execute(runtime: SceneRenderRuntime): void;
3
+ execute(backend: RenderBackend): void;
4
4
  }
@@ -2,7 +2,7 @@ import type { Color } from '@/core/Color';
2
2
  import type { View } from './View';
3
3
  import type { RenderTarget } from './RenderTarget';
4
4
  import type { RenderPass } from './RenderPass';
5
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
5
+ import type { RenderBackend } from './RenderBackend';
6
6
  export interface RenderTargetPassOptions {
7
7
  readonly target?: RenderTarget | null;
8
8
  readonly view?: View | null;
@@ -13,6 +13,6 @@ export declare class RenderTargetPass implements RenderPass {
13
13
  private readonly _target;
14
14
  private readonly _view;
15
15
  private readonly _clearColor;
16
- constructor(callback: (runtime: SceneRenderRuntime) => void, options?: RenderTargetPassOptions);
17
- execute(runtime: SceneRenderRuntime): void;
16
+ constructor(callback: (backend: RenderBackend) => void, options?: RenderTargetPassOptions);
17
+ execute(backend: RenderBackend): void;
18
18
  }
@@ -9,20 +9,20 @@ class RenderTargetPass {
9
9
  this._view = options.view ?? null;
10
10
  this._clearColor = options.clearColor ?? null;
11
11
  }
12
- execute(runtime) {
13
- const previousTarget = runtime.renderTarget;
14
- const previousView = runtime.view;
15
- runtime.setRenderTarget(this._target);
16
- runtime.setView(this._view);
12
+ execute(backend) {
13
+ const previousTarget = backend.renderTarget;
14
+ const previousView = backend.view;
15
+ backend.setRenderTarget(this._target);
16
+ backend.setView(this._view);
17
17
  if (this._clearColor !== null) {
18
- runtime.clear(this._clearColor);
18
+ backend.clear(this._clearColor);
19
19
  }
20
20
  try {
21
- this._callback(runtime);
21
+ this._callback(backend);
22
22
  }
23
23
  finally {
24
- runtime.setRenderTarget(previousTarget);
25
- runtime.setView(previousView);
24
+ backend.setRenderTarget(previousTarget);
25
+ backend.setView(previousView);
26
26
  }
27
27
  }
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderTargetPass.js","sources":["../../../../src/rendering/RenderTargetPass.ts"],"sourcesContent":[null],"names":[],"mappings":"MAYa,gBAAgB,CAAA;AAER,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,WAAW;IAE5B,WAAA,CACI,QAA+C,EAC/C,OAAA,GAAmC,EAAE,EAAA;AAErC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI;IACjD;AAEO,IAAA,OAAO,CAAC,OAA2B,EAAA;AACtC,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY;AAC3C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;AAEjC,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACnC;AAEA,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC3B;gBAAU;AACN,YAAA,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;AACvC,YAAA,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC;IACJ;AACH;;;;"}
1
+ {"version":3,"file":"RenderTargetPass.js","sources":["../../../../src/rendering/RenderTargetPass.ts"],"sourcesContent":[null],"names":[],"mappings":"MAYa,gBAAgB,CAAA;AAER,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,WAAW;IAE5B,WAAA,CACI,QAA0C,EAC1C,OAAA,GAAmC,EAAE,EAAA;AAErC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI;IACjD;AAEO,IAAA,OAAO,CAAC,OAAsB,EAAA;AACjC,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY;AAC3C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;AAEjC,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACnC;AAEA,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC3B;gBAAU;AACN,YAAA,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;AACvC,YAAA,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC;IACJ;AACH;;;;"}
@@ -1,9 +1,9 @@
1
1
  import type { RenderBackendType } from './RenderBackendType';
2
2
  import type { Drawable } from './Drawable';
3
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
4
- export interface Renderer<Runtime extends SceneRenderRuntime = SceneRenderRuntime, Target extends Drawable = Drawable> {
3
+ import type { RenderBackend } from './RenderBackend';
4
+ export interface Renderer<Runtime extends RenderBackend = RenderBackend, Target extends Drawable = Drawable> {
5
5
  readonly backendType: RenderBackendType;
6
- connect(runtime: Runtime): void;
6
+ connect(backend: Runtime): void;
7
7
  disconnect(): void;
8
8
  render(drawable: Target): void;
9
9
  flush(): void;
@@ -1,5 +1,5 @@
1
1
  import type { Drawable } from './Drawable';
2
- import type { SceneRenderRuntime } from './SceneRenderRuntime';
2
+ import type { RenderBackend } from './RenderBackend';
3
3
  import type { Renderer, DrawableConstructor } from './Renderer';
4
4
  /**
5
5
  * Instance-based renderer registry.
@@ -14,26 +14,32 @@ import type { Renderer, DrawableConstructor } from './Renderer';
14
14
  * Used internally by backend managers. Exposed publicly for advanced
15
15
  * custom renderer registration.
16
16
  */
17
- export declare class RendererRegistry<Runtime extends SceneRenderRuntime> {
17
+ export declare class RendererRegistry<Runtime extends RenderBackend> {
18
18
  private readonly _renderers;
19
- private _runtime;
19
+ private _backend;
20
20
  /**
21
21
  * Register a renderer for a specific drawable type.
22
22
  *
23
- * If the registry is already connected to a runtime, the renderer
23
+ * If the registry is already connected to a backend, the renderer
24
24
  * is connected immediately. Registration must happen before the
25
25
  * first draw call for the given drawable type.
26
26
  *
27
27
  * @throws Error if a renderer is already registered for this drawable type.
28
28
  */
29
29
  registerRenderer<Target extends Drawable>(drawableType: DrawableConstructor<Target>, renderer: Renderer<Runtime, Target>): void;
30
+ /**
31
+ * Iterate all registered renderers. Used by managers to dispatch
32
+ * lifecycle hooks (e.g. WebGPU pipeline pre-warmup) to whichever
33
+ * renderers expose them.
34
+ */
35
+ renderers(): Iterable<Renderer<Runtime, Drawable>>;
30
36
  resolve(drawable: Drawable): Renderer<Runtime, Drawable>;
31
37
  /**
32
- * Connect all registered renderers to the given runtime.
38
+ * Connect all registered renderers to the given backend.
33
39
  */
34
- connect(runtime: Runtime): void;
40
+ connect(backend: Runtime): void;
35
41
  /**
36
- * Disconnect all registered renderers from the current runtime.
42
+ * Disconnect all registered renderers from the current backend.
37
43
  */
38
44
  disconnect(): void;
39
45
  /**