@lightningjs/renderer 1.0.0 → 2.0.0

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 (184) hide show
  1. package/README.md +17 -0
  2. package/dist/exports/canvas.d.ts +18 -0
  3. package/dist/exports/canvas.js +37 -0
  4. package/dist/exports/canvas.js.map +1 -0
  5. package/dist/exports/core-api.d.ts +74 -0
  6. package/dist/exports/core-api.js +96 -0
  7. package/dist/exports/core-api.js.map +1 -0
  8. package/dist/exports/index.d.ts +2 -4
  9. package/dist/exports/index.js +1 -3
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/inspector.d.ts +1 -0
  12. package/dist/exports/inspector.js +20 -0
  13. package/dist/exports/inspector.js.map +1 -0
  14. package/dist/exports/main-api.d.ts +30 -0
  15. package/dist/exports/main-api.js +45 -0
  16. package/dist/exports/main-api.js.map +1 -0
  17. package/dist/exports/webgl.d.ts +19 -0
  18. package/dist/exports/webgl.js +38 -0
  19. package/dist/exports/webgl.js.map +1 -0
  20. package/dist/src/common/EventEmitter.d.ts +1 -1
  21. package/dist/src/common/IAnimationController.d.ts +1 -1
  22. package/dist/src/common/IEventEmitter.d.ts +8 -0
  23. package/dist/src/common/IEventEmitter.js +18 -0
  24. package/dist/src/common/IEventEmitter.js.map +1 -0
  25. package/dist/src/core/CoreExtension.d.ts +12 -0
  26. package/dist/src/core/CoreExtension.js +29 -0
  27. package/dist/src/core/CoreExtension.js.map +1 -0
  28. package/dist/src/core/CoreNode.d.ts +58 -0
  29. package/dist/src/core/CoreNode.js +57 -1
  30. package/dist/src/core/CoreNode.js.map +1 -1
  31. package/dist/src/core/CoreTextNode.d.ts +2 -2
  32. package/dist/src/core/CoreTextNode.js +20 -30
  33. package/dist/src/core/CoreTextNode.js.map +1 -1
  34. package/dist/src/core/Stage.d.ts +11 -5
  35. package/dist/src/core/Stage.js +54 -26
  36. package/dist/src/core/Stage.js.map +1 -1
  37. package/dist/src/core/TextureMemoryManager.js +4 -2
  38. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  39. package/dist/src/core/animations/CoreAnimation.js +1 -1
  40. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  41. package/dist/src/core/animations/CoreAnimationController.js +1 -0
  42. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  43. package/dist/src/core/lib/ImageWorker.d.ts +1 -1
  44. package/dist/src/core/lib/ImageWorker.js +25 -3
  45. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  46. package/dist/src/core/lib/textureSvg.d.ts +16 -0
  47. package/dist/src/core/lib/textureSvg.js +63 -0
  48. package/dist/src/core/lib/textureSvg.js.map +1 -0
  49. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -1
  50. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  51. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +2 -2
  52. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +2 -2
  53. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +2 -2
  54. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +2 -2
  55. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +9 -1
  56. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  57. package/dist/src/core/text-rendering/TrFontManager.js +11 -4
  58. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -1
  59. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +13 -5
  60. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
  61. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +1 -0
  62. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +1 -0
  63. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  64. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +1 -0
  65. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +1 -0
  66. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  67. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -0
  68. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  69. package/dist/src/core/textures/ImageTexture.d.ts +52 -0
  70. package/dist/src/core/textures/ImageTexture.js +78 -31
  71. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  72. package/dist/src/core/textures/Texture.d.ts +1 -0
  73. package/dist/src/core/textures/Texture.js +1 -0
  74. package/dist/src/core/textures/Texture.js.map +1 -1
  75. package/dist/src/main-api/ICoreDriver.d.ts +24 -0
  76. package/dist/src/main-api/ICoreDriver.js +20 -0
  77. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  78. package/dist/src/main-api/Inspector.js +2 -2
  79. package/dist/src/main-api/Inspector.js.map +1 -1
  80. package/dist/src/main-api/Renderer.d.ts +50 -8
  81. package/dist/src/main-api/Renderer.js +8 -7
  82. package/dist/src/main-api/Renderer.js.map +1 -1
  83. package/dist/src/main-api/RendererMain.d.ts +378 -0
  84. package/dist/src/main-api/RendererMain.js +367 -0
  85. package/dist/src/main-api/RendererMain.js.map +1 -0
  86. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  87. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  88. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  89. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  90. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  91. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  92. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  93. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  94. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  95. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +21 -0
  96. package/dist/src/render-drivers/main/MainCoreDriver.js +115 -0
  97. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  98. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +101 -0
  99. package/dist/src/render-drivers/main/MainOnlyNode.js +425 -0
  100. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  101. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  102. package/dist/src/render-drivers/main/MainOnlyTextNode.js +204 -0
  103. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  104. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +93 -0
  105. package/dist/src/render-drivers/threadx/NodeStruct.js +290 -0
  106. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  107. package/dist/src/render-drivers/threadx/SharedNode.d.ts +40 -0
  108. package/dist/src/render-drivers/threadx/SharedNode.js +61 -0
  109. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  110. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  111. package/dist/src/render-drivers/threadx/TextNodeStruct.js +203 -0
  112. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  113. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +25 -0
  114. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +232 -0
  115. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  116. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +24 -0
  117. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +113 -0
  118. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  119. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +46 -0
  120. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +160 -0
  121. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  122. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  123. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  124. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  125. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  126. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  127. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  128. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  129. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +184 -0
  130. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  131. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  132. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +109 -0
  133. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  134. package/dist/src/render-drivers/threadx/worker/renderer.js +147 -0
  135. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  136. package/dist/src/render-drivers/utils.d.ts +12 -0
  137. package/dist/src/render-drivers/utils.js +74 -0
  138. package/dist/src/render-drivers/utils.js.map +1 -0
  139. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  140. package/dist/tsconfig.tsbuildinfo +1 -0
  141. package/exports/canvas.ts +37 -0
  142. package/exports/index.ts +3 -3
  143. package/exports/inspector.ts +20 -0
  144. package/exports/webgl.ts +38 -0
  145. package/package.json +5 -7
  146. package/src/common/EventEmitter.ts +1 -1
  147. package/src/common/IAnimationController.ts +1 -1
  148. package/src/common/IEventEmitter.ts +28 -0
  149. package/src/core/CoreNode.test.ts +1 -0
  150. package/src/core/CoreNode.ts +120 -1
  151. package/src/core/CoreTextNode.ts +58 -65
  152. package/src/core/Stage.ts +88 -36
  153. package/src/core/TextureMemoryManager.ts +4 -2
  154. package/src/core/animations/CoreAnimation.ts +2 -1
  155. package/src/core/animations/CoreAnimationController.ts +1 -0
  156. package/src/core/lib/ImageWorker.ts +44 -7
  157. package/src/core/lib/textureSvg.ts +78 -0
  158. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -1
  159. package/src/core/renderers/webgl/shaders/DefaultShader.ts +2 -2
  160. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +2 -2
  161. package/src/core/renderers/webgl/shaders/DynamicShader.ts +2 -2
  162. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +2 -2
  163. package/src/core/renderers/webgl/shaders/SdfShader.ts +9 -1
  164. package/src/core/text-rendering/TrFontManager.ts +15 -4
  165. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +15 -8
  166. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +2 -0
  167. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -0
  168. package/src/core/text-rendering/renderers/TextRenderer.ts +1 -0
  169. package/src/core/textures/ImageTexture.ts +159 -35
  170. package/src/core/textures/Texture.ts +2 -0
  171. package/src/main-api/Inspector.ts +2 -2
  172. package/src/main-api/Renderer.ts +59 -15
  173. package/dist/src/core/TextureList.js +0 -34
  174. package/dist/src/core/TextureList.js.map +0 -1
  175. package/dist/src/core/renderers/webgl/newShader/abcMock.d.ts +0 -1
  176. package/dist/src/core/renderers/webgl/newShader/abcMock.js +0 -2
  177. package/dist/src/core/renderers/webgl/newShader/abcMock.js.map +0 -1
  178. package/dist/src/effectsMock.d.ts +0 -13
  179. package/dist/src/effectsMock.js +0 -62
  180. package/dist/src/effectsMock.js.map +0 -1
  181. package/dist/src/test.d.ts +0 -1
  182. package/dist/src/test.js +0 -4
  183. package/dist/src/test.js.map +0 -1
  184. /package/dist/src/{core/TextureList.d.ts → render-drivers/threadx/worker/renderer.d.ts} +0 -0
@@ -0,0 +1,378 @@
1
+ import type { ShaderMap } from '../core/CoreShaderManager.js';
2
+ import type { ExtractProps, TextureMap, TextureOptions } from '../core/CoreTextureManager.js';
3
+ import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js';
4
+ import type { ICoreDriver } from './ICoreDriver.js';
5
+ import { type ManualCountTextureUsageTrackerOptions } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';
6
+ import type { TextureUsageTracker } from './texture-usage-trackers/TextureUsageTracker.js';
7
+ import { EventEmitter } from '../common/EventEmitter.js';
8
+ /**
9
+ * An immutable reference to a specific Texture type
10
+ *
11
+ * @remarks
12
+ * See {@link TextureRef} for more details.
13
+ */
14
+ export interface SpecificTextureRef<TxType extends keyof TextureMap> {
15
+ readonly descType: 'texture';
16
+ readonly txType: TxType;
17
+ readonly props: ExtractProps<TextureMap[TxType]>;
18
+ readonly options?: Readonly<TextureOptions>;
19
+ }
20
+ type MapTextureRefs<TxType extends keyof TextureMap> = TxType extends keyof TextureMap ? SpecificTextureRef<TxType> : never;
21
+ /**
22
+ * An immutable reference to a Texture
23
+ *
24
+ * @remarks
25
+ * This structure should only be created by the RendererMain's `createTexture`
26
+ * method. The structure is immutable and should not be modified once created.
27
+ *
28
+ * A `TextureRef` exists in the Main API Space and is used to point to an actual
29
+ * `Texture` instance in the Core API Space. The `TextureRef` is used to
30
+ * communicate with the Core API Space to create, load, and destroy the
31
+ * `Texture` instance.
32
+ *
33
+ * This type is technically a discriminated union of all possible texture types.
34
+ * If you'd like to represent a specific texture type, you can use the
35
+ * `SpecificTextureRef` generic type.
36
+ */
37
+ export type TextureRef = MapTextureRefs<keyof TextureMap>;
38
+ /**
39
+ * An immutable reference to a specific Shader type
40
+ *
41
+ * @remarks
42
+ * See {@link ShaderRef} for more details.
43
+ */
44
+ export interface SpecificShaderRef<ShType extends keyof ShaderMap> {
45
+ readonly descType: 'shader';
46
+ readonly shType: ShType;
47
+ readonly props: ExtractProps<ShaderMap[ShType]>;
48
+ }
49
+ type MapShaderRefs<ShType extends keyof ShaderMap> = ShType extends keyof ShaderMap ? SpecificShaderRef<ShType> : never;
50
+ /**
51
+ * An immutable reference to a Shader
52
+ *
53
+ * @remarks
54
+ * This structure should only be created by the RendererMain's `createShader`
55
+ * method. The structure is immutable and should not be modified once created.
56
+ *
57
+ * A `ShaderRef` exists in the Main API Space and is used to point to an actual
58
+ * `Shader` instance in the Core API Space. The `ShaderRef` is used to
59
+ * communicate with the Core API Space to create, load, and destroy the
60
+ * `Shader` instance.
61
+ *
62
+ * This type is technically a discriminated union of all possible shader types.
63
+ * If you'd like to represent a specific shader type, you can use the
64
+ * `SpecificShaderRef` generic type.
65
+ */
66
+ export type ShaderRef = MapShaderRefs<keyof ShaderMap>;
67
+ /**
68
+ * Configuration settings for {@link RendererMain}
69
+ */
70
+ export interface RendererMainSettings {
71
+ /**
72
+ * Authored logical pixel width of the application
73
+ *
74
+ * @defaultValue `1920`
75
+ */
76
+ appWidth?: number;
77
+ /**
78
+ * Authored logical pixel height of the application
79
+ *
80
+ * @defaultValue `1080`
81
+ */
82
+ appHeight?: number;
83
+ /**
84
+ * Texture Memory Byte Threshold
85
+ *
86
+ * @remarks
87
+ * When the amount of GPU VRAM used by textures exceeds this threshold,
88
+ * the Renderer will free up all the textures that are current not visible
89
+ * within the configured `boundsMargin`.
90
+ *
91
+ * When set to `0`, the threshold-based texture memory manager is disabled.
92
+ */
93
+ txMemByteThreshold?: number;
94
+ /**
95
+ * Bounds margin to extend the boundary in which a CoreNode is added as Quad.
96
+ */
97
+ boundsMargin?: number | [number, number, number, number];
98
+ /**
99
+ * Factor to convert app-authored logical coorindates to device logical coordinates
100
+ *
101
+ * @remarks
102
+ * This value allows auto-scaling to support larger/small resolutions than the
103
+ * app was authored for.
104
+ *
105
+ * If the app was authored for 1920x1080 and this value is 2, the app's canvas
106
+ * will be rendered at 3840x2160 logical pixels.
107
+ *
108
+ * Likewise, if the app was authored for 1920x1080 and this value is 0.66667,
109
+ * the app's canvas will be rendered at 1280x720 logical pixels.
110
+ *
111
+ * @defaultValue `1`
112
+ */
113
+ deviceLogicalPixelRatio?: number;
114
+ /**
115
+ * Factor to convert device logical coordinates to device physical coordinates
116
+ *
117
+ * @remarks
118
+ * This value allows auto-scaling to support devices with different pixel densities.
119
+ *
120
+ * This controls the number of physical pixels that are used to render each logical
121
+ * pixel. For example, if the device has a pixel density of 2, each logical pixel
122
+ * will be rendered using 2x2 physical pixels.
123
+ *
124
+ * By default, it will be set to `window.devicePixelRatio` which is the pixel
125
+ * density of the device the app is running on reported by the browser.
126
+ *
127
+ * @defaultValue `window.devicePixelRatio`
128
+ */
129
+ devicePhysicalPixelRatio?: number;
130
+ /**
131
+ * RGBA encoded number of the background to use
132
+ *
133
+ * @defaultValue `0x00000000`
134
+ */
135
+ clearColor?: number;
136
+ /**
137
+ * Path to a custom core module to use
138
+ *
139
+ * @defaultValue `null`
140
+ */
141
+ coreExtensionModule?: string | null;
142
+ /**
143
+ * Enable experimental FinalizationRegistry-based texture usage tracking
144
+ * for texture garbage collection
145
+ *
146
+ * @remarks
147
+ * By default, the Renderer uses a manual reference counting system to track
148
+ * texture usage. Textures are eventually released from the Core Texture
149
+ * Manager's Usage Cache when they are no longer referenced by any Nodes (or
150
+ * SubTextures that are referenced by nodes). This works well enough, but has
151
+ * the consequence of textures being removed from Usage Cache even if their
152
+ * references are still alive in memory. This can require a texture to be
153
+ * reloaded from the source when it is used again after being removed from
154
+ * cache.
155
+ *
156
+ * This is an experimental feature that uses a FinalizationRegistry to track
157
+ * texture usage. This causes textures to be removed from the Usage Cache only
158
+ * when their references are no longer alive in memory. Meaning a loaded texture
159
+ * will remain in the Usage Cache until it's reference is garbage collected.
160
+ *
161
+ * This feature is not enabled by default because browser support for the
162
+ * FinalizationRegistry is limited. It should NOT be enabled in production apps
163
+ * as this behavior is not guaranteed to be supported in the future. Developer
164
+ * feedback on this feature, however, is welcome.
165
+ *
166
+ * @defaultValue `false`
167
+ */
168
+ experimental_FinalizationRegistryTextureUsageTracker?: boolean;
169
+ textureCleanupOptions?: ManualCountTextureUsageTrackerOptions;
170
+ /**
171
+ * Interval in milliseconds to receive FPS updates
172
+ *
173
+ * @remarks
174
+ * If set to `0`, FPS updates will be disabled.
175
+ *
176
+ * @defaultValue `0` (disabled)
177
+ */
178
+ fpsUpdateInterval?: number;
179
+ /**
180
+ * Include context call (i.e. WebGL) information in FPS updates
181
+ *
182
+ * @remarks
183
+ * When enabled the number of calls to each context method over the
184
+ * `fpsUpdateInterval` will be included in the FPS update payload's
185
+ * `contextSpyData` property.
186
+ *
187
+ * Enabling the context spy has a serious impact on performance so only use it
188
+ * when you need to extract context call information.
189
+ *
190
+ * @defaultValue `false` (disabled)
191
+ */
192
+ enableContextSpy?: boolean;
193
+ /**
194
+ * Number or Image Workers to use
195
+ *
196
+ * @remarks
197
+ * On devices with multiple cores, this can be used to improve image loading
198
+ * as well as reduce the impact of image loading on the main thread.
199
+ * Set to 0 to disable image workers.
200
+ *
201
+ * @defaultValue `2`
202
+ */
203
+ numImageWorkers?: number;
204
+ /**
205
+ * Enable inspector
206
+ *
207
+ * @remarks
208
+ * When enabled the renderer will spawn a inspector. The inspector will
209
+ * replicate the state of the Nodes created in the renderer and allow
210
+ * inspection of the state of the nodes.
211
+ *
212
+ * @defaultValue `false` (disabled)
213
+ */
214
+ enableInspector?: boolean;
215
+ /**
216
+ * Renderer mode
217
+ */
218
+ renderMode?: 'webgl' | 'canvas';
219
+ }
220
+ /**
221
+ * The Renderer Main API
222
+ *
223
+ * @remarks
224
+ * This is the primary class used to configure and operate the Renderer.
225
+ *
226
+ * It is used to create and destroy Nodes, as well as Texture and Shader
227
+ * references.
228
+ *
229
+ * Example:
230
+ * ```ts
231
+ * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';
232
+ *
233
+ * // Initialize the Renderer
234
+ * const renderer = new RendererMain(
235
+ * {
236
+ * appWidth: 1920,
237
+ * appHeight: 1080
238
+ * },
239
+ * 'app',
240
+ * new MainCoreDriver(),
241
+ * );
242
+ * ```
243
+ */
244
+ export declare class RendererMain extends EventEmitter {
245
+ readonly root: INode | null;
246
+ readonly driver: ICoreDriver;
247
+ readonly canvas: HTMLCanvasElement;
248
+ readonly settings: Readonly<Required<RendererMainSettings>>;
249
+ private inspector;
250
+ private nodes;
251
+ private nextTextureId;
252
+ /**
253
+ * Texture Usage Tracker for Usage Based Texture Garbage Collection
254
+ *
255
+ * @remarks
256
+ * For internal use only. DO NOT ACCESS.
257
+ */
258
+ textureTracker: TextureUsageTracker;
259
+ /**
260
+ * Constructs a new Renderer instance
261
+ *
262
+ * @param settings Renderer settings
263
+ * @param target Element ID or HTMLElement to insert the canvas into
264
+ * @param driver Core Driver to use
265
+ */
266
+ constructor(settings: RendererMainSettings, target: string | HTMLElement, driver: ICoreDriver);
267
+ /**
268
+ * Initialize the renderer
269
+ *
270
+ * @remarks
271
+ * This method must be called and resolved asyncronously before any other
272
+ * methods are called.
273
+ */
274
+ init(): Promise<void>;
275
+ /**
276
+ * Create a new scene graph node
277
+ *
278
+ * @remarks
279
+ * A node is the main graphical building block of the Renderer scene graph. It
280
+ * can be a container for other nodes, or it can be a leaf node that renders a
281
+ * solid color, gradient, image, or specific texture, using a specific shader.
282
+ *
283
+ * To create a text node, see {@link createTextNode}.
284
+ *
285
+ * See {@link INode} for more details.
286
+ *
287
+ * @param props
288
+ * @returns
289
+ */
290
+ createNode(props: Partial<INodeWritableProps>): INode;
291
+ /**
292
+ * Create a new scene graph text node
293
+ *
294
+ * @remarks
295
+ * A text node is the second graphical building block of the Renderer scene
296
+ * graph. It renders text using a specific text renderer that is automatically
297
+ * chosen based on the font requested and what type of fonts are installed
298
+ * into an app via a CoreExtension.
299
+ *
300
+ * See {@link ITextNode} for more details.
301
+ *
302
+ * @param props
303
+ * @returns
304
+ */
305
+ createTextNode(props: Partial<ITextNodeWritableProps>): ITextNode;
306
+ /**
307
+ * Resolves the default property values for a Node
308
+ *
309
+ * @remarks
310
+ * This method is used internally by the RendererMain to resolve the default
311
+ * property values for a Node. It is exposed publicly so that it can be used
312
+ * by Core Driver implementations.
313
+ *
314
+ * @param props
315
+ * @returns
316
+ */
317
+ resolveNodeDefaults(props: Partial<INodeWritableProps>): INodeWritableProps;
318
+ /**
319
+ * Destroy a node
320
+ *
321
+ * @remarks
322
+ * This method destroys a node but does not destroy its children.
323
+ *
324
+ * @param node
325
+ * @returns
326
+ */
327
+ destroyNode(node: INode): void;
328
+ /**
329
+ * Create a new texture reference
330
+ *
331
+ * @remarks
332
+ * This method creates a new reference to a texture. The texture is not
333
+ * loaded until it is used on a node.
334
+ *
335
+ * It can be assigned to a node's `texture` property, or it can be used
336
+ * when creating a SubTexture.
337
+ *
338
+ * @param textureType
339
+ * @param props
340
+ * @param options
341
+ * @returns
342
+ */
343
+ createTexture<TxType extends keyof TextureMap>(textureType: TxType, props: SpecificTextureRef<TxType>['props'], options?: TextureOptions): SpecificTextureRef<TxType>;
344
+ /**
345
+ * Create a new shader reference
346
+ *
347
+ * @remarks
348
+ * This method creates a new reference to a shader. The shader is not
349
+ * loaded until it is used on a Node.
350
+ *
351
+ * It can be assigned to a Node's `shader` property.
352
+ *
353
+ * @param shaderType
354
+ * @param props
355
+ * @returns
356
+ */
357
+ createShader<ShType extends keyof ShaderMap>(shaderType: ShType, props?: SpecificShaderRef<ShType>['props']): SpecificShaderRef<ShType>;
358
+ /**
359
+ * Get a Node by its ID
360
+ *
361
+ * @param id
362
+ * @returns
363
+ */
364
+ getNodeById(id: number): INode | null;
365
+ toggleFreeze(): void;
366
+ advanceFrame(): void;
367
+ /**
368
+ * Re-render the current frame without advancing any running animations.
369
+ *
370
+ * @remarks
371
+ * Any state changes will be reflected in the re-rendered frame. Useful for
372
+ * debugging.
373
+ *
374
+ * May not do anything if the render loop is running on a separate worker.
375
+ */
376
+ rerender(): void;
377
+ }
378
+ export {};