@lightningjs/renderer 0.8.3 → 0.9.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.
- package/dist/src/core/CoreNode.d.ts +27 -1
- package/dist/src/core/CoreNode.js +130 -5
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js +3 -2
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.js +20 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +2 -0
- package/dist/src/core/CoreTextureManager.js +2 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.js +25 -9
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +1 -0
- package/dist/src/core/TextureMemoryManager.js +3 -1
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -1
- package/dist/src/core/lib/ImageWorker.js +10 -6
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +38 -24
- package/dist/src/core/lib/Matrix3d.js +143 -166
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +26 -1
- package/dist/src/core/lib/WebGlContextWrapper.js +37 -1
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +11 -0
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +10 -4
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +18 -7
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +8 -6
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +4 -4
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +1 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +2 -2
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +51 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +11 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +22 -11
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +4 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +7 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +16 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +119 -27
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +19 -4
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +4 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +6 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +19 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +61 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +8 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +24 -3
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +2 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +72 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +11 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +5 -2
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +4 -3
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +8 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +42 -16
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +7 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +42 -11
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +6 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +27 -9
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +2 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +32 -5
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +2 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +2 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +10 -5
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +6 -5
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +28 -0
- package/dist/src/core/textures/RenderTexture.js +52 -0
- package/dist/src/core/textures/RenderTexture.js.map +1 -0
- package/dist/src/core/utils.d.ts +6 -1
- package/dist/src/core/utils.js +74 -82
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -0
- package/dist/src/main-api/RendererMain.js +4 -3
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +3 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +29 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +2 -3
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +3 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +9 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +3 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +2 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +3 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +7 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/core/CoreNode.ts +164 -8
- package/src/core/CoreShaderManager.ts +6 -3
- package/src/core/CoreTextNode.ts +25 -0
- package/src/core/CoreTextureManager.ts +3 -0
- package/src/core/Stage.ts +32 -11
- package/src/core/TextureMemoryManager.ts +3 -1
- package/src/core/lib/ImageWorker.ts +12 -7
- package/src/core/lib/Matrix3d.ts +144 -190
- package/src/core/lib/WebGlContextWrapper.ts +51 -1
- package/src/core/renderers/CoreRenderer.ts +15 -1
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +59 -14
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +24 -18
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +6 -3
- package/src/core/renderers/canvas/internal/ColorUtils.ts +6 -6
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +2 -3
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +79 -0
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +26 -24
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +4 -2
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +166 -33
- package/src/core/renderers/webgl/WebGlCoreShader.ts +29 -4
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +4 -6
- package/src/core/renderers/webgl/shaders/SdfShader.ts +6 -1
- package/src/core/text-rendering/TextRenderingUtils.ts +36 -0
- package/src/core/text-rendering/TextTextureRendererUtils.ts +74 -0
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +41 -12
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +2 -0
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +86 -1
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +13 -7
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +52 -20
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +59 -13
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +36 -8
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +38 -5
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +5 -2
- package/src/core/text-rendering/renderers/TextRenderer.ts +17 -10
- package/src/core/textures/RenderTexture.ts +81 -0
- package/src/core/utils.ts +101 -93
- package/src/main-api/INode.ts +11 -0
- package/src/main-api/RendererMain.ts +4 -3
- package/src/render-drivers/main/MainOnlyNode.ts +44 -0
- package/src/render-drivers/main/MainOnlyTextNode.ts +2 -3
- package/src/render-drivers/threadx/NodeStruct.ts +10 -0
- package/src/render-drivers/threadx/SharedNode.ts +2 -0
- package/src/render-drivers/threadx/TextNodeStruct.ts +3 -1
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +2 -0
- package/src/render-drivers/threadx/ThreadXMainNode.ts +9 -0
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +1 -0
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +1 -0
- package/src/render-drivers/threadx/worker/renderer.ts +1 -0
package/dist/src/core/Stage.js
CHANGED
|
@@ -59,7 +59,7 @@ export class Stage extends EventEmitter {
|
|
|
59
59
|
constructor(options) {
|
|
60
60
|
super();
|
|
61
61
|
this.options = options;
|
|
62
|
-
const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, renderMode } = options;
|
|
62
|
+
const { canvas, clearColor, rootId, debug, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, txMemByteThreshold, renderMode, } = options;
|
|
63
63
|
this.txManager = new CoreTextureManager(numImageWorkers);
|
|
64
64
|
this.txMemManager = new TextureMemoryManager(txMemByteThreshold);
|
|
65
65
|
this.shManager = new CoreShaderManager();
|
|
@@ -100,12 +100,15 @@ export class Stage extends EventEmitter {
|
|
|
100
100
|
setPremultiplyMode(renderMode);
|
|
101
101
|
// Must do this after renderer is created
|
|
102
102
|
this.txManager.renderer = this.renderer;
|
|
103
|
-
this.textRenderers =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
this.textRenderers =
|
|
104
|
+
renderMode === 'webgl'
|
|
105
|
+
? {
|
|
106
|
+
canvas: new CanvasTextRenderer(this),
|
|
107
|
+
sdf: new SdfTextRenderer(this),
|
|
108
|
+
}
|
|
109
|
+
: {
|
|
110
|
+
canvas: new CanvasTextRenderer(this),
|
|
111
|
+
};
|
|
109
112
|
this.fontManager = new TrFontManager(this.textRenderers);
|
|
110
113
|
// create root node
|
|
111
114
|
const rootNode = new CoreNode(this, {
|
|
@@ -142,6 +145,7 @@ export class Stage extends EventEmitter {
|
|
|
142
145
|
textureOptions: null,
|
|
143
146
|
shader: null,
|
|
144
147
|
shaderProps: null,
|
|
148
|
+
rtt: false,
|
|
145
149
|
});
|
|
146
150
|
this.root = rootNode;
|
|
147
151
|
// execute platform start loop
|
|
@@ -180,13 +184,25 @@ export class Stage extends EventEmitter {
|
|
|
180
184
|
*/
|
|
181
185
|
drawFrame() {
|
|
182
186
|
const { renderer, renderRequested } = this;
|
|
187
|
+
assertTruthy(renderer);
|
|
183
188
|
// Update tree if needed
|
|
184
189
|
if (this.root.updateType !== 0) {
|
|
185
190
|
this.root.update(this.deltaTime, this.root.clippingRect);
|
|
186
191
|
}
|
|
187
|
-
//
|
|
188
|
-
renderer
|
|
192
|
+
// Reset render operations and clear the canvas
|
|
193
|
+
renderer.reset();
|
|
194
|
+
// Check if we need to garbage collect
|
|
195
|
+
if (renderer.txMemManager.gcRequested) {
|
|
196
|
+
renderer.txMemManager.gc();
|
|
197
|
+
}
|
|
198
|
+
// If we have RTT nodes draw them first
|
|
199
|
+
// So we can use them as textures in the main scene
|
|
200
|
+
if (renderer.rttNodes.length > 0) {
|
|
201
|
+
renderer.renderRTTNodes();
|
|
202
|
+
}
|
|
203
|
+
// Fill quads buffer
|
|
189
204
|
this.addQuads(this.root);
|
|
205
|
+
// Perform render pass
|
|
190
206
|
renderer?.render();
|
|
191
207
|
this.calculateFps();
|
|
192
208
|
// Reset renderRequested flag if it was set
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../../src/core/Stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export class TextureMemoryManager {
|
|
|
2
2
|
memUsed = 0;
|
|
3
3
|
textures = new Map();
|
|
4
4
|
threshold;
|
|
5
|
+
gcRequested = false;
|
|
5
6
|
/**
|
|
6
7
|
* @param byteThreshold Number of texture bytes to trigger garbage collection
|
|
7
8
|
*/
|
|
@@ -28,10 +29,11 @@ export class TextureMemoryManager {
|
|
|
28
29
|
this.textures.set(ctxTexture, byteSize);
|
|
29
30
|
}
|
|
30
31
|
if (this.memUsed > this.threshold) {
|
|
31
|
-
this.
|
|
32
|
+
this.gcRequested = true;
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
gc() {
|
|
36
|
+
this.gcRequested = false;
|
|
35
37
|
this.textures.forEach((byteSize, ctxTexture) => {
|
|
36
38
|
if (!ctxTexture.renderable) {
|
|
37
39
|
ctxTexture.free();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,oBAAoB;IACvB,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;IACtD,SAAS,CAAS;
|
|
1
|
+
{"version":3,"file":"TextureMemoryManager.js","sourceRoot":"","sources":["../../../src/core/TextureMemoryManager.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,oBAAoB;IACvB,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,GAAoC,IAAI,GAAG,EAAE,CAAC;IACtD,SAAS,CAAS;IACnB,WAAW,GAAG,KAAK,CAAC;IAE3B;;OAEG;IACH,YAAY,aAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAE/B,wEAAwE;QACxE,iDAAiD;QACjD,IAAI,aAAa,KAAK,CAAC,EAAE;YACvB,gEAAgE;YAChE,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;SAClC;IACH,CAAC;IAED,gBAAgB,CAAC,UAA8B,EAAE,QAAgB;QAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACjC,oEAAoE;YACpE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;SAChD;QAED,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO;SACR;aAAM;YACL,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;IACH,CAAC;IAED,EAAE;QACA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC1B,UAAU,CAAC,IAAI,EAAE,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -2,9 +2,10 @@ import { type TextureData } from '../textures/Texture.js';
|
|
|
2
2
|
type MessageCallback = [(value: any) => void, (reason: any) => void];
|
|
3
3
|
export declare class ImageWorkerManager {
|
|
4
4
|
imageWorkersEnabled: boolean;
|
|
5
|
-
messageManager: Record<
|
|
5
|
+
messageManager: Record<number, MessageCallback>;
|
|
6
6
|
workers: Worker[];
|
|
7
7
|
workerIndex: number;
|
|
8
|
+
nextId: number;
|
|
8
9
|
constructor(numImageWorkers: number);
|
|
9
10
|
private handleMessage;
|
|
10
11
|
private createWorkers;
|
|
@@ -22,6 +22,7 @@ export class ImageWorkerManager {
|
|
|
22
22
|
messageManager = {};
|
|
23
23
|
workers = [];
|
|
24
24
|
workerIndex = 0;
|
|
25
|
+
nextId = 0;
|
|
25
26
|
constructor(numImageWorkers) {
|
|
26
27
|
this.workers = this.createWorkers(numImageWorkers);
|
|
27
28
|
this.workers.forEach((worker) => {
|
|
@@ -29,11 +30,11 @@ export class ImageWorkerManager {
|
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
handleMessage(event) {
|
|
32
|
-
const {
|
|
33
|
-
const msg = this.messageManager[
|
|
33
|
+
const { id, data, error } = event.data;
|
|
34
|
+
const msg = this.messageManager[id];
|
|
34
35
|
if (msg) {
|
|
35
36
|
const [resolve, reject] = msg;
|
|
36
|
-
delete this.messageManager[
|
|
37
|
+
delete this.messageManager[id];
|
|
37
38
|
if (error) {
|
|
38
39
|
reject(new Error(error));
|
|
39
40
|
}
|
|
@@ -82,15 +83,16 @@ export class ImageWorkerManager {
|
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
self.onmessage = (event) => {
|
|
86
|
+
var id = event.data.id;
|
|
85
87
|
var src = event.data.src;
|
|
86
88
|
var premultiplyAlpha = event.data.premultiplyAlpha;
|
|
87
89
|
|
|
88
90
|
getImage(src, premultiplyAlpha)
|
|
89
91
|
.then(function(data) {
|
|
90
|
-
self.postMessage({
|
|
92
|
+
self.postMessage({ id: id, data: data }, [data.data]);
|
|
91
93
|
})
|
|
92
94
|
.catch(function(error) {
|
|
93
|
-
self.postMessage({
|
|
95
|
+
self.postMessage({ id: id, error: error.message });
|
|
94
96
|
});
|
|
95
97
|
};
|
|
96
98
|
`;
|
|
@@ -118,8 +120,10 @@ export class ImageWorkerManager {
|
|
|
118
120
|
try {
|
|
119
121
|
if (this.workers) {
|
|
120
122
|
const absoluteSrcUrl = this.convertUrlToAbsolute(src);
|
|
121
|
-
|
|
123
|
+
const id = this.nextId++;
|
|
124
|
+
this.messageManager[id] = [resolve, reject];
|
|
122
125
|
this.getNextWorker().postMessage({
|
|
126
|
+
id,
|
|
123
127
|
src: absoluteSrcUrl,
|
|
124
128
|
premultiplyAlpha,
|
|
125
129
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageWorker.js","sourceRoot":"","sources":["../../../../src/core/lib/ImageWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAoB,MAAM,wBAAwB,CAAC;AAI1D,MAAM,OAAO,kBAAkB;IAC7B,mBAAmB,GAAG,IAAI,CAAC;IAC3B,cAAc,GAAoC,EAAE,CAAC;IACrD,OAAO,GAAa,EAAE,CAAC;IACvB,WAAW,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ImageWorker.js","sourceRoot":"","sources":["../../../../src/core/lib/ImageWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A
|
|
2
|
+
* A 3D matrix representing a 2D graphics transformation
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
* The matrix is stored in column-major order in the `data` property which can
|
|
6
|
-
* be passed directly to a WebGL shader uniform.
|
|
7
|
-
*
|
|
8
|
-
* The matrix is stored in a Float32Array in the following index order:
|
|
9
|
-
* | 0 3 6 |
|
|
10
|
-
* | 1 4 7 |
|
|
11
|
-
* | 2 5 8 |
|
|
12
|
-
*
|
|
13
|
-
* Only the first two rows are really used for the transformation. The last row is
|
|
14
|
-
* generally always `[0, 0, 1]` if you only use the 2D transformation methods
|
|
15
|
-
* provided by this class.
|
|
16
|
-
*
|
|
17
5
|
* For convenience, entries in the first two rows can be accessed by the following
|
|
18
|
-
*
|
|
6
|
+
* properties:
|
|
19
7
|
* | ta tb tx |
|
|
20
8
|
* | tc td ty |
|
|
21
9
|
* | 0 0 1 |
|
|
10
|
+
*
|
|
11
|
+
* This matrix is optimized for 2D transformations and hence the last row will
|
|
12
|
+
* always be considered [0, 0 ,1].
|
|
13
|
+
*
|
|
14
|
+
* To access a column major array for WebGL, use the {@link getFloatArr} method.
|
|
22
15
|
*/
|
|
23
16
|
export declare class Matrix3d {
|
|
24
|
-
|
|
17
|
+
ta: number;
|
|
18
|
+
tb: number;
|
|
19
|
+
tx: number;
|
|
20
|
+
tc: number;
|
|
21
|
+
td: number;
|
|
22
|
+
ty: number;
|
|
23
|
+
private _floatArr;
|
|
24
|
+
/**
|
|
25
|
+
* Potential Mutation Flag
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* This flag is set to true whenever the matrix is potentially modified.
|
|
29
|
+
* We don't waste CPU trying to identify if each operation actually modifies
|
|
30
|
+
* the matrix. Instead, we set this flag to true whenever we think the matrix
|
|
31
|
+
* is modified. This signals that the `floatArr` should to be updated.
|
|
32
|
+
*/
|
|
33
|
+
private mutation;
|
|
25
34
|
/**
|
|
26
35
|
* Creates a new 3x3 matrix.
|
|
27
36
|
*
|
|
28
37
|
* @param entries Row-major 3x3 matrix
|
|
29
38
|
*/
|
|
30
|
-
constructor(
|
|
39
|
+
constructor();
|
|
31
40
|
/**
|
|
32
41
|
* Returns a temporary matrix that can be used for calculations.
|
|
33
42
|
*
|
|
@@ -44,16 +53,21 @@ export declare class Matrix3d {
|
|
|
44
53
|
static translate(x: number, y: number, out?: Matrix3d): Matrix3d;
|
|
45
54
|
static scale(sx: number, sy: number, out?: Matrix3d): Matrix3d;
|
|
46
55
|
static rotate(angle: number, out?: Matrix3d): Matrix3d;
|
|
47
|
-
static copy(src: Matrix3d, dst?: Matrix3d
|
|
56
|
+
static copy(src: Matrix3d, dst?: Matrix3d): Matrix3d;
|
|
48
57
|
translate(x: number, y: number): Matrix3d;
|
|
49
58
|
scale(sx: number, sy: number): Matrix3d;
|
|
50
59
|
rotate(angle: number): Matrix3d;
|
|
51
60
|
multiply(other: Matrix3d): Matrix3d;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Returns the matrix as a Float32Array in column-major order.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* This method is optimized to avoid unnecessary allocations. The same array
|
|
66
|
+
* is returned every time this method is called, and is updated in place.
|
|
67
|
+
*
|
|
68
|
+
* WARNING: Use the array only for passing directly to a WebGL shader uniform
|
|
69
|
+
* during a frame render. Do not modify or hold onto the array for longer than
|
|
70
|
+
* a frame.
|
|
71
|
+
*/
|
|
72
|
+
getFloatArr(): Float32Array;
|
|
59
73
|
}
|