@lightningjs/renderer 2.17.0 → 2.18.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.
- package/dist/src/core/CoreNode.js +7 -5
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +14 -8
- package/dist/src/core/CoreTextureManager.js +33 -59
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +3 -3
- package/dist/src/core/Stage.js +9 -14
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +21 -17
- package/dist/src/core/TextureMemoryManager.js +99 -106
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +10 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +32 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +13 -6
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platform.js +4 -1
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +4 -3
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +59 -29
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +4 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +2 -2
- package/dist/src/core/textures/ColorTexture.js +1 -2
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +7 -1
- package/dist/src/core/textures/ImageTexture.js +55 -39
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.js +1 -1
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.js +1 -1
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +1 -2
- package/dist/src/core/textures/SubTexture.js +11 -29
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +51 -7
- package/dist/src/core/textures/Texture.js +130 -15
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +3 -0
- package/dist/src/main-api/Inspector.js +156 -0
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +1 -3
- package/dist/src/main-api/Renderer.js +2 -4
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +8 -4
- package/src/core/CoreTextureManager.ts +59 -65
- package/src/core/Stage.ts +10 -16
- package/src/core/TextureMemoryManager.ts +118 -131
- package/src/core/lib/WebGlContextWrapper.ts +38 -0
- package/src/core/lib/textureCompression.ts +18 -7
- package/src/core/platform.ts +5 -1
- package/src/core/renderers/CoreContextTexture.ts +1 -0
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +5 -3
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +78 -40
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +10 -4
- package/src/core/textures/ColorTexture.ts +4 -7
- package/src/core/textures/ImageTexture.ts +66 -51
- package/src/core/textures/NoiseTexture.ts +1 -1
- package/src/core/textures/RenderTexture.ts +1 -1
- package/src/core/textures/SubTexture.ts +14 -31
- package/src/core/textures/Texture.ts +154 -21
- package/src/main-api/Inspector.ts +203 -0
- package/src/main-api/Renderer.ts +2 -4
|
@@ -36,11 +36,13 @@ import { fetchJson } from '../text-rendering/font-face-types/utils.js';
|
|
|
36
36
|
* {@link ImageTextureProps.premultiplyAlpha} prop to `false`.
|
|
37
37
|
*/
|
|
38
38
|
export class ImageTexture extends Texture {
|
|
39
|
-
props;
|
|
40
39
|
type = TextureType.image;
|
|
40
|
+
props;
|
|
41
41
|
constructor(txManager, props) {
|
|
42
|
+
const resolvedProps = ImageTexture.resolveDefaults(props);
|
|
42
43
|
super(txManager);
|
|
43
|
-
this.props =
|
|
44
|
+
this.props = resolvedProps;
|
|
45
|
+
this.maxRetryCount = props.maxRetryCount;
|
|
44
46
|
}
|
|
45
47
|
hasAlphaChannel(mimeType) {
|
|
46
48
|
return mimeType.indexOf('image/png') !== -1;
|
|
@@ -50,13 +52,17 @@ export class ImageTexture extends Texture {
|
|
|
50
52
|
if (typeof src === 'string' && isBase64Image(src) === false) {
|
|
51
53
|
img.crossOrigin = 'anonymous';
|
|
52
54
|
}
|
|
53
|
-
return new Promise((resolve) => {
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
54
56
|
img.onload = () => {
|
|
55
57
|
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
56
58
|
};
|
|
57
|
-
img.onerror = () => {
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
img.onerror = (err) => {
|
|
60
|
+
const errorMessage = err instanceof Error
|
|
61
|
+
? err.message
|
|
62
|
+
: err instanceof Event
|
|
63
|
+
? `Image loading failed for ${img.src}`
|
|
64
|
+
: 'Unknown image loading error';
|
|
65
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
60
66
|
};
|
|
61
67
|
if (src instanceof Blob) {
|
|
62
68
|
img.src = URL.createObjectURL(src);
|
|
@@ -71,28 +77,43 @@ export class ImageTexture extends Texture {
|
|
|
71
77
|
const imageBitmapSupported = this.txManager.imageBitmapSupported;
|
|
72
78
|
if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
|
|
73
79
|
// createImageBitmap with crop
|
|
74
|
-
|
|
80
|
+
try {
|
|
81
|
+
const bitmap = await createImageBitmap(blob, sx || 0, sy || 0, sw, sh, {
|
|
82
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
83
|
+
colorSpaceConversion: 'none',
|
|
84
|
+
imageOrientation: 'none',
|
|
85
|
+
});
|
|
86
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new Error(`Failed to create image bitmap with crop: ${error}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (imageBitmapSupported.basic === true) {
|
|
93
|
+
// basic createImageBitmap without options or crop
|
|
94
|
+
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
95
|
+
try {
|
|
96
|
+
return {
|
|
97
|
+
data: await createImageBitmap(blob),
|
|
98
|
+
premultiplyAlpha: hasAlphaChannel,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw new Error(`Failed to create basic image bitmap: ${error}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// default createImageBitmap without crop but with options
|
|
106
|
+
try {
|
|
107
|
+
const bitmap = await createImageBitmap(blob, {
|
|
75
108
|
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
76
109
|
colorSpaceConversion: 'none',
|
|
77
110
|
imageOrientation: 'none',
|
|
78
111
|
});
|
|
79
112
|
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
80
113
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
84
|
-
return {
|
|
85
|
-
data: await createImageBitmap(blob),
|
|
86
|
-
premultiplyAlpha: hasAlphaChannel,
|
|
87
|
-
};
|
|
114
|
+
catch (error) {
|
|
115
|
+
throw new Error(`Failed to create image bitmap with options: ${error}`);
|
|
88
116
|
}
|
|
89
|
-
// default createImageBitmap without crop but with options
|
|
90
|
-
const bitmap = await createImageBitmap(blob, {
|
|
91
|
-
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
92
|
-
colorSpaceConversion: 'none',
|
|
93
|
-
imageOrientation: 'none',
|
|
94
|
-
});
|
|
95
|
-
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
96
117
|
}
|
|
97
118
|
async loadImage(src) {
|
|
98
119
|
const { premultiplyAlpha, sx, sy, sw, sh } = this.props;
|
|
@@ -100,14 +121,24 @@ export class ImageTexture extends Texture {
|
|
|
100
121
|
if (isBase64Image(src) === false &&
|
|
101
122
|
this.txManager.hasWorker === true &&
|
|
102
123
|
this.txManager.imageWorkerManager !== null) {
|
|
103
|
-
|
|
124
|
+
try {
|
|
125
|
+
return this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha, sx, sy, sw, sh);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
throw new Error(`Failed to load image via worker: ${error}`);
|
|
129
|
+
}
|
|
104
130
|
}
|
|
105
131
|
let blob;
|
|
106
132
|
if (isBase64Image(src) === true) {
|
|
107
133
|
blob = dataURIToBlob(src);
|
|
108
134
|
}
|
|
109
135
|
else {
|
|
110
|
-
|
|
136
|
+
try {
|
|
137
|
+
blob = (await fetchJson(src, 'blob'));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
throw new Error(`Failed to fetch image blob from ${src}: ${error}`);
|
|
141
|
+
}
|
|
111
142
|
}
|
|
112
143
|
return this.createImageBitmap(blob, premultiplyAlpha, sx, sy, sw, sh);
|
|
113
144
|
}
|
|
@@ -130,22 +161,6 @@ export class ImageTexture extends Texture {
|
|
|
130
161
|
data: null,
|
|
131
162
|
};
|
|
132
163
|
}
|
|
133
|
-
let width, height;
|
|
134
|
-
// check if resp.data is typeof Uint8ClampedArray else
|
|
135
|
-
// use resp.data.width and resp.data.height
|
|
136
|
-
if (resp.data instanceof Uint8Array) {
|
|
137
|
-
width = this.props.width ?? 0;
|
|
138
|
-
height = this.props.height ?? 0;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
width = resp.data?.width ?? (this.props.width || 0);
|
|
142
|
-
height = resp.data?.height ?? (this.props.height || 0);
|
|
143
|
-
}
|
|
144
|
-
// we're loaded!
|
|
145
|
-
this.setState('fetched', {
|
|
146
|
-
width,
|
|
147
|
-
height,
|
|
148
|
-
});
|
|
149
164
|
return {
|
|
150
165
|
data: resp.data,
|
|
151
166
|
premultiplyAlpha: this.props.premultiplyAlpha ?? true,
|
|
@@ -233,6 +248,7 @@ export class ImageTexture extends Texture {
|
|
|
233
248
|
sy: props.sy ?? null,
|
|
234
249
|
sw: props.sw ?? null,
|
|
235
250
|
sh: props.sh ?? null,
|
|
251
|
+
maxRetryCount: props.maxRetryCount ?? 5,
|
|
236
252
|
};
|
|
237
253
|
}
|
|
238
254
|
static z$__type__Props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AACtE,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ export class NoiseTexture extends Texture {
|
|
|
44
44
|
pixelData8[i + 2] = v;
|
|
45
45
|
pixelData8[i + 3] = 255;
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
// Noise texture data ready - dimensions will be set during upload
|
|
48
48
|
return {
|
|
49
49
|
data: new ImageData(pixelData8, width, height),
|
|
50
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoiseTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/NoiseTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AA0BtE;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,KAAK,CAA8B;IAEnB,IAAI,GAAgB,WAAW,CAAC,KAAK,CAAC;IAEtD,YAAY,SAA6B,EAAE,KAAwB;QACjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"NoiseTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/NoiseTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AA0BtE;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,KAAK,CAA8B;IAEnB,IAAI,GAAgB,WAAW,CAAC,KAAK,CAAC;IAEtD,YAAY,SAA6B,EAAE,KAAwB;QACjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,kEAAkE;QAElE,OAAO;YACL,IAAI,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,YAAY,CAAC,KAAwB;QACnD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,gBAAgB,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;IAChG,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAwB;QAExB,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG;YAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAoB;CAC3C"}
|
|
@@ -37,7 +37,7 @@ export class RenderTexture extends Texture {
|
|
|
37
37
|
this.props.height = value;
|
|
38
38
|
}
|
|
39
39
|
async getTextureSource() {
|
|
40
|
-
|
|
40
|
+
// Render texture data ready - dimensions will be set during upload
|
|
41
41
|
return {
|
|
42
42
|
data: null,
|
|
43
43
|
premultiplyAlpha: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/RenderTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAmBtE,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC,KAAK,CAA+B;IAEpB,IAAI,GAAgB,WAAW,CAAC,eAAe,CAAC;IAEhE,YAAY,SAA6B,EAAE,KAA0B;QACnE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,
|
|
1
|
+
{"version":3,"file":"RenderTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/RenderTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAmBtE,MAAM,OAAO,aAAc,SAAQ,OAAO;IACxC,KAAK,CAA+B;IAEpB,IAAI,GAAgB,WAAW,CAAC,eAAe,CAAC;IAEhE,YAAY,SAA6B,EAAE,KAA0B;QACnE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,mEAAmE;QAEnE,OAAO;YACL,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAyB;QAEzB,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAqB;CAC5C"}
|
|
@@ -47,11 +47,10 @@ export declare class SubTexture extends Texture {
|
|
|
47
47
|
props: Required<SubTextureProps>;
|
|
48
48
|
parentTexture: Texture;
|
|
49
49
|
type: TextureType;
|
|
50
|
+
subtextureId: string;
|
|
50
51
|
constructor(txManager: CoreTextureManager, props: SubTextureProps);
|
|
51
52
|
private onParentTxLoaded;
|
|
52
53
|
private onParentTxFailed;
|
|
53
|
-
private onParentTxFetched;
|
|
54
|
-
private onParentTxFetching;
|
|
55
54
|
private onParentTxLoading;
|
|
56
55
|
private onParentTxFreed;
|
|
57
56
|
private forwardParentTxState;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { assertTruthy } from '../../utils.js';
|
|
20
20
|
import { ImageTexture } from './ImageTexture.js';
|
|
21
21
|
import { Texture, TextureType, } from './Texture.js';
|
|
22
|
+
let subTextureId = 0;
|
|
22
23
|
/**
|
|
23
24
|
* A Texture that is a sub-region of another Texture.
|
|
24
25
|
*
|
|
@@ -33,6 +34,7 @@ export class SubTexture extends Texture {
|
|
|
33
34
|
props;
|
|
34
35
|
parentTexture;
|
|
35
36
|
type = TextureType.subTexture;
|
|
37
|
+
subtextureId = `subtexture-${subTextureId++}`;
|
|
36
38
|
constructor(txManager, props) {
|
|
37
39
|
super(txManager);
|
|
38
40
|
this.props = SubTexture.resolveDefaults(props || {});
|
|
@@ -40,8 +42,8 @@ export class SubTexture extends Texture {
|
|
|
40
42
|
assertTruthy(this.props.texture instanceof ImageTexture, 'SubTexture requires an ImageTexture parent');
|
|
41
43
|
// Resolve parent texture from cache or fallback to provided texture
|
|
42
44
|
this.parentTexture = txManager.resolveParentTexture(this.props.texture);
|
|
43
|
-
if (this.renderableOwners.
|
|
44
|
-
this.parentTexture.setRenderableOwner(this, true);
|
|
45
|
+
if (this.renderableOwners.length > 0) {
|
|
46
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, true);
|
|
45
47
|
}
|
|
46
48
|
// If parent texture is already loaded / failed, trigger loaded event manually
|
|
47
49
|
// so that users get a consistent event experience.
|
|
@@ -49,27 +51,19 @@ export class SubTexture extends Texture {
|
|
|
49
51
|
// synchronous task after calling loadTexture()
|
|
50
52
|
queueMicrotask(() => {
|
|
51
53
|
const parentTx = this.parentTexture;
|
|
52
|
-
if (parentTx.state === 'loaded') {
|
|
54
|
+
if (parentTx.state === 'loaded' && parentTx.dimensions) {
|
|
53
55
|
this.onParentTxLoaded(parentTx, parentTx.dimensions);
|
|
54
56
|
}
|
|
55
|
-
else if (parentTx.state === 'fetching') {
|
|
56
|
-
this.onParentTxFetching();
|
|
57
|
-
}
|
|
58
|
-
else if (parentTx.state === 'fetched') {
|
|
59
|
-
this.onParentTxFetched();
|
|
60
|
-
}
|
|
61
57
|
else if (parentTx.state === 'loading') {
|
|
62
58
|
this.onParentTxLoading();
|
|
63
59
|
}
|
|
64
|
-
else if (parentTx.state === 'failed') {
|
|
60
|
+
else if (parentTx.state === 'failed' && parentTx.error) {
|
|
65
61
|
this.onParentTxFailed(parentTx, parentTx.error);
|
|
66
62
|
}
|
|
67
63
|
else if (parentTx.state === 'freed') {
|
|
68
64
|
this.onParentTxFreed();
|
|
69
65
|
}
|
|
70
|
-
parentTx.on('fetched', this.onParentTxFetched);
|
|
71
66
|
parentTx.on('loading', this.onParentTxLoading);
|
|
72
|
-
parentTx.on('fetching', this.onParentTxFetching);
|
|
73
67
|
parentTx.on('loaded', this.onParentTxLoaded);
|
|
74
68
|
parentTx.on('failed', this.onParentTxFailed);
|
|
75
69
|
parentTx.on('freed', this.onParentTxFreed);
|
|
@@ -86,15 +80,6 @@ export class SubTexture extends Texture {
|
|
|
86
80
|
onParentTxFailed = (target, error) => {
|
|
87
81
|
this.forwardParentTxState('failed', error);
|
|
88
82
|
};
|
|
89
|
-
onParentTxFetched = () => {
|
|
90
|
-
this.forwardParentTxState('fetched', {
|
|
91
|
-
width: this.props.width,
|
|
92
|
-
height: this.props.height,
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
onParentTxFetching = () => {
|
|
96
|
-
this.forwardParentTxState('fetching');
|
|
97
|
-
};
|
|
98
83
|
onParentTxLoading = () => {
|
|
99
84
|
this.forwardParentTxState('loading');
|
|
100
85
|
};
|
|
@@ -106,16 +91,13 @@ export class SubTexture extends Texture {
|
|
|
106
91
|
}
|
|
107
92
|
onChangeIsRenderable(isRenderable) {
|
|
108
93
|
// Propagate the renderable owner change to the parent texture
|
|
109
|
-
this.parentTexture.setRenderableOwner(this, isRenderable);
|
|
94
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, isRenderable);
|
|
110
95
|
}
|
|
111
96
|
async getTextureSource() {
|
|
112
|
-
//
|
|
113
|
-
return
|
|
114
|
-
this.
|
|
115
|
-
|
|
116
|
-
data: this.props,
|
|
117
|
-
});
|
|
118
|
-
});
|
|
97
|
+
// SubTexture data ready - dimensions will be set during upload
|
|
98
|
+
return {
|
|
99
|
+
data: this.props,
|
|
100
|
+
};
|
|
119
101
|
}
|
|
120
102
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
121
103
|
static makeCacheKey(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/SubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,WAAW,GAKZ,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SubTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/SubTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ export interface TextureData {
|
|
|
61
61
|
*/
|
|
62
62
|
premultiplyAlpha?: boolean | null;
|
|
63
63
|
}
|
|
64
|
-
export type TextureState = 'initial' | '
|
|
64
|
+
export type TextureState = 'initial' | 'loading' | 'loaded' | 'failed' | 'freed';
|
|
65
65
|
export declare enum TextureType {
|
|
66
66
|
'generic' = 0,
|
|
67
67
|
'color' = 1,
|
|
@@ -90,20 +90,50 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
90
90
|
*/
|
|
91
91
|
private _dimensions;
|
|
92
92
|
private _error;
|
|
93
|
-
/**
|
|
94
|
-
* Texture states that are considered transitional and should be skipped during cleanup
|
|
95
|
-
*/
|
|
96
|
-
static readonly TRANSITIONAL_TEXTURE_STATES: readonly TextureState[];
|
|
97
93
|
state: TextureState;
|
|
98
|
-
readonly renderableOwners:
|
|
94
|
+
readonly renderableOwners: any[];
|
|
99
95
|
readonly renderable: boolean;
|
|
100
96
|
type: TextureType;
|
|
101
97
|
preventCleanup: boolean;
|
|
102
98
|
ctxTexture: CoreContextTexture | undefined;
|
|
103
99
|
textureData: TextureData | null;
|
|
100
|
+
/**
|
|
101
|
+
* Memory used by this texture in bytes
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* This is tracked by the TextureMemoryManager and updated when the texture
|
|
105
|
+
* is loaded/freed. Set to 0 when texture is not loaded.
|
|
106
|
+
*/
|
|
107
|
+
memUsed: number;
|
|
108
|
+
retryCount: number;
|
|
109
|
+
maxRetryCount: number | null;
|
|
110
|
+
/**
|
|
111
|
+
* Timestamp when texture was created (for startup grace period)
|
|
112
|
+
*/
|
|
113
|
+
private createdAt;
|
|
114
|
+
/**
|
|
115
|
+
* Flag to track if grace period has expired to avoid repeated Date.now() calls
|
|
116
|
+
*/
|
|
117
|
+
private gracePeriodExpired;
|
|
118
|
+
/**
|
|
119
|
+
* Grace period in milliseconds to prevent premature cleanup during app startup
|
|
120
|
+
* This helps prevent race conditions when bounds calculation is delayed
|
|
121
|
+
*/
|
|
122
|
+
private static readonly STARTUP_GRACE_PERIOD;
|
|
104
123
|
constructor(txManager: CoreTextureManager);
|
|
105
124
|
get dimensions(): Dimensions | null;
|
|
106
125
|
get error(): Error | null;
|
|
126
|
+
/**
|
|
127
|
+
* Checks if the texture is within the startup grace period.
|
|
128
|
+
* During this period, textures are protected from cleanup to prevent
|
|
129
|
+
* race conditions during app initialization.
|
|
130
|
+
*/
|
|
131
|
+
isWithinStartupGracePeriod(): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Checks if the texture can be safely cleaned up.
|
|
134
|
+
* Considers the renderable state, startup grace period, and renderable owners.
|
|
135
|
+
*/
|
|
136
|
+
canBeCleanedUp(): boolean;
|
|
107
137
|
/**
|
|
108
138
|
* Add/remove an owner to/from the Texture based on its renderability.
|
|
109
139
|
*
|
|
@@ -118,7 +148,7 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
118
148
|
* @param owner
|
|
119
149
|
* @param renderable
|
|
120
150
|
*/
|
|
121
|
-
setRenderableOwner(owner:
|
|
151
|
+
setRenderableOwner(owner: string | number, renderable: boolean): void;
|
|
122
152
|
load(): void;
|
|
123
153
|
/**
|
|
124
154
|
* Event called when the Texture becomes renderable or unrenderable.
|
|
@@ -144,6 +174,13 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
144
174
|
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
145
175
|
*/
|
|
146
176
|
free(): void;
|
|
177
|
+
/**
|
|
178
|
+
* Release the texture data and core context texture for this Texture without changing state.
|
|
179
|
+
*
|
|
180
|
+
* @remarks
|
|
181
|
+
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
182
|
+
*/
|
|
183
|
+
release(): void;
|
|
147
184
|
/**
|
|
148
185
|
* Destroy the texture.
|
|
149
186
|
*
|
|
@@ -207,5 +244,12 @@ export declare abstract class Texture extends EventEmitter {
|
|
|
207
244
|
* The default values for the texture's properties.
|
|
208
245
|
*/
|
|
209
246
|
static resolveDefaults(props: unknown): Record<string, unknown>;
|
|
247
|
+
/**
|
|
248
|
+
* Retry the texture by resetting retryCount and setting state to 'initial'.
|
|
249
|
+
*
|
|
250
|
+
* @remarks
|
|
251
|
+
* This allows the texture to be loaded again.
|
|
252
|
+
*/
|
|
253
|
+
retry(): void;
|
|
210
254
|
}
|
|
211
255
|
export {};
|