@lightningjs/renderer 0.3.3 → 0.3.4
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.
- package/dist/src/core/CoreTextureManager.d.ts +4 -3
- package/dist/src/core/CoreTextureManager.js +7 -4
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +36 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +2 -2
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +6 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -2
- package/dist/src/main-api/INode.d.ts +5 -5
- package/dist/src/main-api/RendererMain.d.ts +88 -8
- package/dist/src/main-api/RendererMain.js +22 -6
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +7 -7
- package/dist/src/render-drivers/main/MainOnlyNode.js +8 -1
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +8 -7
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +11 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreTextureManager.ts +7 -6
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +42 -2
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +9 -3
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +6 -4
- package/src/core/textures/SubTexture.ts +2 -2
- package/src/main-api/INode.ts +5 -5
- package/src/main-api/RendererMain.ts +125 -23
- package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +45 -0
- package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +154 -0
- package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +54 -0
- package/src/render-drivers/main/MainOnlyNode.ts +16 -9
- package/src/render-drivers/threadx/ThreadXMainNode.ts +20 -9
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +5 -9
|
@@ -30,8 +30,8 @@ import { CoreAnimationController } from '../../core/animations/CoreAnimationCont
|
|
|
30
30
|
import { CoreNode } from '../../core/CoreNode.js';
|
|
31
31
|
import type {
|
|
32
32
|
RendererMain,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
ShaderRef,
|
|
34
|
+
TextureRef,
|
|
35
35
|
} from '../../main-api/RendererMain.js';
|
|
36
36
|
import type { IAnimationSettings } from '../../core/animations/CoreAnimation.js';
|
|
37
37
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
@@ -54,8 +54,8 @@ export class MainOnlyNode extends EventEmitter implements INode {
|
|
|
54
54
|
protected _children: MainOnlyNode[] = [];
|
|
55
55
|
protected _src = '';
|
|
56
56
|
protected _parent: MainOnlyNode | null = null;
|
|
57
|
-
protected _texture:
|
|
58
|
-
protected _shader:
|
|
57
|
+
protected _texture: TextureRef | null = null;
|
|
58
|
+
protected _shader: ShaderRef | null = null;
|
|
59
59
|
|
|
60
60
|
constructor(
|
|
61
61
|
props: INodeWritableProps,
|
|
@@ -357,20 +357,26 @@ export class MainOnlyNode extends EventEmitter implements INode {
|
|
|
357
357
|
this.texture = null;
|
|
358
358
|
return;
|
|
359
359
|
}
|
|
360
|
-
this.texture = this.rendererMain.
|
|
360
|
+
this.texture = this.rendererMain.createTexture('ImageTexture', {
|
|
361
361
|
src: imageUrl,
|
|
362
362
|
});
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
//#region Texture
|
|
366
|
-
get texture():
|
|
366
|
+
get texture(): TextureRef | null {
|
|
367
367
|
return this._texture;
|
|
368
368
|
}
|
|
369
369
|
|
|
370
|
-
set texture(texture:
|
|
370
|
+
set texture(texture: TextureRef | null) {
|
|
371
371
|
if (this._texture === texture) {
|
|
372
372
|
return;
|
|
373
373
|
}
|
|
374
|
+
if (this._texture) {
|
|
375
|
+
this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);
|
|
376
|
+
}
|
|
377
|
+
if (texture) {
|
|
378
|
+
this.rendererMain.textureTracker.incrementTextureRefCount(texture);
|
|
379
|
+
}
|
|
374
380
|
this._texture = texture;
|
|
375
381
|
if (texture) {
|
|
376
382
|
this.coreNode.loadTexture(texture.txType, texture.props, texture.options);
|
|
@@ -388,11 +394,11 @@ export class MainOnlyNode extends EventEmitter implements INode {
|
|
|
388
394
|
};
|
|
389
395
|
//#endregion Texture
|
|
390
396
|
|
|
391
|
-
get shader():
|
|
397
|
+
get shader(): ShaderRef | null {
|
|
392
398
|
return this._shader;
|
|
393
399
|
}
|
|
394
400
|
|
|
395
|
-
set shader(shader:
|
|
401
|
+
set shader(shader: ShaderRef | null) {
|
|
396
402
|
if (this._shader === shader) {
|
|
397
403
|
return;
|
|
398
404
|
}
|
|
@@ -405,6 +411,7 @@ export class MainOnlyNode extends EventEmitter implements INode {
|
|
|
405
411
|
destroy(): void {
|
|
406
412
|
this.emit('beforeDestroy', {});
|
|
407
413
|
this.parent = null;
|
|
414
|
+
this.texture = null;
|
|
408
415
|
this.emit('afterDestroy', {});
|
|
409
416
|
this.removeAllListeners();
|
|
410
417
|
}
|
|
@@ -21,8 +21,8 @@ import type { IAnimationController } from '../../common/IAnimationController.js'
|
|
|
21
21
|
import type { INode, INodeAnimatableProps } from '../../main-api/INode.js';
|
|
22
22
|
import type {
|
|
23
23
|
RendererMain,
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
ShaderRef,
|
|
25
|
+
TextureRef,
|
|
26
26
|
} from '../../main-api/RendererMain.js';
|
|
27
27
|
import { assertTruthy } from '../../utils.js';
|
|
28
28
|
import type { NodeStruct } from './NodeStruct.js';
|
|
@@ -34,8 +34,8 @@ export class ThreadXMainNode extends SharedNode implements INode {
|
|
|
34
34
|
private nextAnimationId = 1;
|
|
35
35
|
protected _parent: ThreadXMainNode | null = null;
|
|
36
36
|
protected _children: ThreadXMainNode[] = [];
|
|
37
|
-
protected _texture:
|
|
38
|
-
protected _shader:
|
|
37
|
+
protected _texture: TextureRef | null = null;
|
|
38
|
+
protected _shader: ShaderRef | null = null;
|
|
39
39
|
private _src = '';
|
|
40
40
|
|
|
41
41
|
/**
|
|
@@ -59,14 +59,20 @@ export class ThreadXMainNode extends SharedNode implements INode {
|
|
|
59
59
|
super(sharedNodeStruct, extendedCurProps);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
get texture():
|
|
62
|
+
get texture(): TextureRef | null {
|
|
63
63
|
return this._texture;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
set texture(texture:
|
|
66
|
+
set texture(texture: TextureRef | null) {
|
|
67
67
|
if (this._texture === texture) {
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
|
+
if (this._texture) {
|
|
71
|
+
this.rendererMain.textureTracker.decrementTextureRefCount(this._texture);
|
|
72
|
+
}
|
|
73
|
+
if (texture) {
|
|
74
|
+
this.rendererMain.textureTracker.incrementTextureRefCount(texture);
|
|
75
|
+
}
|
|
70
76
|
this._texture = texture;
|
|
71
77
|
if (texture) {
|
|
72
78
|
this.emit('loadTexture', texture as unknown as Record<string, unknown>);
|
|
@@ -75,11 +81,11 @@ export class ThreadXMainNode extends SharedNode implements INode {
|
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
|
|
78
|
-
get shader():
|
|
84
|
+
get shader(): ShaderRef | null {
|
|
79
85
|
return this._shader;
|
|
80
86
|
}
|
|
81
87
|
|
|
82
|
-
set shader(shader:
|
|
88
|
+
set shader(shader: ShaderRef | null) {
|
|
83
89
|
if (this._shader === shader) {
|
|
84
90
|
return;
|
|
85
91
|
}
|
|
@@ -113,7 +119,7 @@ export class ThreadXMainNode extends SharedNode implements INode {
|
|
|
113
119
|
this.texture = null;
|
|
114
120
|
return;
|
|
115
121
|
}
|
|
116
|
-
this.texture = this.rendererMain.
|
|
122
|
+
this.texture = this.rendererMain.createTexture('ImageTexture', {
|
|
117
123
|
src: imageUrl,
|
|
118
124
|
});
|
|
119
125
|
}
|
|
@@ -148,4 +154,9 @@ export class ThreadXMainNode extends SharedNode implements INode {
|
|
|
148
154
|
get props() {
|
|
149
155
|
return this.curProps;
|
|
150
156
|
}
|
|
157
|
+
|
|
158
|
+
override destroy() {
|
|
159
|
+
super.destroy();
|
|
160
|
+
this.texture = null;
|
|
161
|
+
}
|
|
151
162
|
}
|
|
@@ -28,10 +28,7 @@ import { CoreAnimation } from '../../../core/animations/CoreAnimation.js';
|
|
|
28
28
|
import { CoreAnimationController } from '../../../core/animations/CoreAnimationController.js';
|
|
29
29
|
import type { Texture } from '../../../core/textures/Texture.js';
|
|
30
30
|
import { CoreNode } from '../../../core/CoreNode.js';
|
|
31
|
-
import type {
|
|
32
|
-
ShaderDesc,
|
|
33
|
-
TextureDesc,
|
|
34
|
-
} from '../../../main-api/RendererMain.js';
|
|
31
|
+
import type { ShaderRef, TextureRef } from '../../../main-api/RendererMain.js';
|
|
35
32
|
import type { IAnimationSettings } from '../../../core/animations/CoreAnimation.js';
|
|
36
33
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
37
34
|
|
|
@@ -112,19 +109,18 @@ export class ThreadXRendererNode extends SharedNode {
|
|
|
112
109
|
});
|
|
113
110
|
this.on(
|
|
114
111
|
'loadTexture',
|
|
115
|
-
(target: ThreadXRendererNode, textureDesc:
|
|
116
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
112
|
+
(target: ThreadXRendererNode, textureDesc: TextureRef) => {
|
|
117
113
|
this.coreNode.loadTexture(
|
|
118
114
|
textureDesc.txType,
|
|
119
|
-
textureDesc.props
|
|
115
|
+
textureDesc.props,
|
|
120
116
|
textureDesc.options,
|
|
121
117
|
);
|
|
122
118
|
},
|
|
123
119
|
);
|
|
124
120
|
this.on(
|
|
125
121
|
'loadShader',
|
|
126
|
-
(target: ThreadXRendererNode, shaderDesc:
|
|
127
|
-
this.coreNode.loadShader(shaderDesc.shType, shaderDesc.props
|
|
122
|
+
(target: ThreadXRendererNode, shaderDesc: ShaderRef) => {
|
|
123
|
+
this.coreNode.loadShader(shaderDesc.shType, shaderDesc.props);
|
|
128
124
|
},
|
|
129
125
|
);
|
|
130
126
|
this.on('unloadTexture', (target: ThreadXRendererNode) => {
|