@lightningjs/renderer 2.7.2 → 2.9.0-beta1
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/README.md +7 -4
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +2 -0
- package/dist/src/core/CoreNode.js +27 -8
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +13 -1
- package/dist/src/core/CoreTextureManager.js +163 -7
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +1 -0
- package/dist/src/core/Stage.js +5 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -1
- package/dist/src/core/lib/ImageWorker.js +40 -11
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +10 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +15 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +6 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +11 -3
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +1 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +38 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +9 -3
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +8 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +29 -8
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +6 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +4 -3
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/TrFontManager.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +3 -4
- 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.js.map +1 -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.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.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/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +8 -0
- package/dist/src/core/textures/ImageTexture.js +52 -39
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.js.map +1 -1
- package/dist/src/main-api/ICoreDriver.d.ts +1 -4
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +6 -0
- package/dist/src/main-api/Renderer.js +8 -0
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/RendererMain.d.ts +5 -2
- package/dist/src/main-api/RendererMain.js +6 -4
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/main-api/ShaderController.js.map +1 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -1
- package/dist/src/main-api/utils.js.map +1 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +1 -4
- package/dist/src/render-drivers/main/MainCoreDriver.js +1 -4
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +8 -6
- package/dist/src/render-drivers/main/MainOnlyNode.js +30 -1
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +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.d.ts +1 -4
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +2 -4
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +8 -4
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +53 -24
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +7 -5
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +8 -2
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +7 -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 +2 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
- package/dist/src/render-drivers/utils.js +6 -1
- package/dist/src/render-drivers/utils.js.map +1 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -11
- package/src/core/CoreNode.ts +30 -9
- package/src/core/CoreTextureManager.ts +188 -10
- package/src/core/Stage.ts +5 -0
- package/src/core/lib/ImageWorker.ts +63 -11
- package/src/core/lib/WebGlContextWrapper.ts +16 -0
- package/src/core/renderers/CoreRenderer.ts +1 -0
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +18 -3
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +93 -0
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +12 -5
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +35 -5
- package/src/core/renderers/webgl/WebGlCoreShader.ts +7 -1
- package/src/core/renderers/webgl/internal/RendererUtils.ts +5 -0
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +9 -3
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +6 -4
- package/src/core/textures/ImageTexture.ts +78 -45
- package/src/main-api/Renderer.ts +9 -0
- package/dist/src/core/CoreStuff.d.ts +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
|
@@ -100,8 +100,14 @@ export function createShader(
|
|
|
100
100
|
) {
|
|
101
101
|
const shader = glw.createShader(type);
|
|
102
102
|
if (!shader) {
|
|
103
|
-
|
|
103
|
+
const glError = glw.getError();
|
|
104
|
+
throw new Error(
|
|
105
|
+
`Unable to create the shader: ${
|
|
106
|
+
type === glw.VERTEX_SHADER ? 'VERTEX_SHADER' : 'FRAGMENT_SHADER'
|
|
107
|
+
}.${glError ? ` WebGlContext Error: ${glError}` : ''}`,
|
|
108
|
+
);
|
|
104
109
|
}
|
|
110
|
+
|
|
105
111
|
glw.shaderSource(shader, source);
|
|
106
112
|
glw.compileShader(shader);
|
|
107
113
|
const success = !!glw.getShaderParameter(shader, glw.COMPILE_STATUS);
|
|
@@ -109,7 +115,7 @@ export function createShader(
|
|
|
109
115
|
return shader;
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
console.
|
|
118
|
+
console.error(glw.getShaderInfoLog(shader));
|
|
113
119
|
glw.deleteShader(shader);
|
|
114
120
|
}
|
|
115
121
|
|
|
@@ -131,7 +137,7 @@ export function createProgram(
|
|
|
131
137
|
return program;
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
console.
|
|
140
|
+
console.warn(glw.getProgramInfoLog(program));
|
|
135
141
|
glw.deleteProgram(program);
|
|
136
142
|
return undefined;
|
|
137
143
|
}
|
|
@@ -93,7 +93,9 @@ export class SdfTrFontFace<
|
|
|
93
93
|
});
|
|
94
94
|
|
|
95
95
|
// Pre-load it
|
|
96
|
-
|
|
96
|
+
stage.txManager.once('initialized', () => {
|
|
97
|
+
this.texture.ctxTexture.load();
|
|
98
|
+
});
|
|
97
99
|
|
|
98
100
|
// Set this.data to the fetched data from dataUrl
|
|
99
101
|
fetch(atlasDataUrl)
|
|
@@ -102,7 +104,7 @@ export class SdfTrFontFace<
|
|
|
102
104
|
(this.data as SdfFontData) = await response.json();
|
|
103
105
|
assertTruthy(this.data);
|
|
104
106
|
// Add all the glyphs to the glyph map
|
|
105
|
-
|
|
107
|
+
|
|
106
108
|
let maxCharHeight = 0;
|
|
107
109
|
this.data.chars.forEach((glyph) => {
|
|
108
110
|
this.glyphMap.set(glyph.id, glyph);
|
|
@@ -111,10 +113,10 @@ export class SdfTrFontFace<
|
|
|
111
113
|
maxCharHeight = charHeight;
|
|
112
114
|
}
|
|
113
115
|
});
|
|
114
|
-
|
|
116
|
+
|
|
115
117
|
(this.maxCharHeight as number) = maxCharHeight;
|
|
116
118
|
// We know `data` is defined here, because we just set it
|
|
117
|
-
|
|
119
|
+
|
|
118
120
|
(this.shaper as FontShaper) = new SdfFontShaper(
|
|
119
121
|
this.data,
|
|
120
122
|
this.glyphMap,
|
|
@@ -132,61 +132,94 @@ export class ImageTexture extends Texture {
|
|
|
132
132
|
return mimeType.indexOf('image/png') !== -1;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
async
|
|
136
|
-
const
|
|
135
|
+
async loadImageFallback(src: string, hasAlpha: boolean) {
|
|
136
|
+
const img = new Image();
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
sy,
|
|
144
|
-
sw,
|
|
145
|
-
sh,
|
|
146
|
-
);
|
|
147
|
-
} else if (this.txManager.hasCreateImageBitmap === true) {
|
|
148
|
-
const response = await fetch(src);
|
|
149
|
-
const blob = await response.blob();
|
|
150
|
-
const hasAlphaChannel =
|
|
151
|
-
premultiplyAlpha ?? this.hasAlphaChannel(blob.type);
|
|
138
|
+
return new Promise<{ data: HTMLImageElement; premultiplyAlpha: boolean }>(
|
|
139
|
+
(resolve) => {
|
|
140
|
+
img.onload = () => {
|
|
141
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
142
|
+
};
|
|
152
143
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
data:
|
|
156
|
-
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
157
|
-
colorSpaceConversion: 'none',
|
|
158
|
-
imageOrientation: 'none',
|
|
159
|
-
}),
|
|
160
|
-
premultiplyAlpha: hasAlphaChannel,
|
|
144
|
+
img.onerror = () => {
|
|
145
|
+
console.warn('Image loading failed, returning fallback object.');
|
|
146
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
161
147
|
};
|
|
162
|
-
}
|
|
163
148
|
|
|
149
|
+
img.src = src;
|
|
150
|
+
},
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async createImageBitmap(
|
|
155
|
+
blob: Blob,
|
|
156
|
+
premultiplyAlpha: boolean | null,
|
|
157
|
+
sx: number | null,
|
|
158
|
+
sy: number | null,
|
|
159
|
+
sw: number | null,
|
|
160
|
+
sh: number | null,
|
|
161
|
+
): Promise<{
|
|
162
|
+
data: ImageBitmap | HTMLImageElement;
|
|
163
|
+
premultiplyAlpha: boolean;
|
|
164
|
+
}> {
|
|
165
|
+
const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
|
|
166
|
+
const imageBitmapSupported = this.txManager.imageBitmapSupported;
|
|
167
|
+
|
|
168
|
+
if (
|
|
169
|
+
imageBitmapSupported.full === true &&
|
|
170
|
+
sx !== null &&
|
|
171
|
+
sy !== null &&
|
|
172
|
+
sw !== null &&
|
|
173
|
+
sh !== null
|
|
174
|
+
) {
|
|
175
|
+
// createImageBitmap with crop
|
|
176
|
+
const bitmap = await createImageBitmap(blob, sx, sy, sw, sh, {
|
|
177
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
178
|
+
colorSpaceConversion: 'none',
|
|
179
|
+
imageOrientation: 'none',
|
|
180
|
+
});
|
|
181
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
182
|
+
} else if (imageBitmapSupported.options === true) {
|
|
183
|
+
// createImageBitmap without crop but with options
|
|
184
|
+
const bitmap = await createImageBitmap(blob, {
|
|
185
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
186
|
+
colorSpaceConversion: 'none',
|
|
187
|
+
imageOrientation: 'none',
|
|
188
|
+
});
|
|
189
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
190
|
+
} else {
|
|
191
|
+
// basic createImageBitmap without options or crop
|
|
192
|
+
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
164
193
|
return {
|
|
165
|
-
data: await createImageBitmap(blob,
|
|
166
|
-
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
167
|
-
colorSpaceConversion: 'none',
|
|
168
|
-
imageOrientation: 'none',
|
|
169
|
-
}),
|
|
194
|
+
data: await createImageBitmap(blob),
|
|
170
195
|
premultiplyAlpha: hasAlphaChannel,
|
|
171
196
|
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
async loadImage(src: string) {
|
|
201
|
+
const { premultiplyAlpha, sx, sy, sw, sh } = this.props;
|
|
202
|
+
|
|
203
|
+
if (this.txManager.hasCreateImageBitmap === true) {
|
|
204
|
+
if (
|
|
205
|
+
this.txManager.hasWorker === true &&
|
|
206
|
+
this.txManager.imageWorkerManager !== null
|
|
207
|
+
) {
|
|
208
|
+
return this.txManager.imageWorkerManager.getImage(
|
|
209
|
+
src,
|
|
210
|
+
premultiplyAlpha,
|
|
211
|
+
sx,
|
|
212
|
+
sy,
|
|
213
|
+
sw,
|
|
214
|
+
sh,
|
|
215
|
+
);
|
|
176
216
|
}
|
|
177
|
-
img.src = src;
|
|
178
|
-
await new Promise<void>((resolve, reject) => {
|
|
179
|
-
img.onload = () => resolve();
|
|
180
|
-
img.onerror = () => reject(new Error(`Failed to load image`));
|
|
181
|
-
}).catch((e) => {
|
|
182
|
-
console.error(e);
|
|
183
|
-
});
|
|
184
217
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
premultiplyAlpha: premultiplyAlpha ?? true,
|
|
188
|
-
};
|
|
218
|
+
const blob = await fetch(src).then((response) => response.blob());
|
|
219
|
+
return this.createImageBitmap(blob, premultiplyAlpha, sx, sy, sw, sh);
|
|
189
220
|
}
|
|
221
|
+
|
|
222
|
+
return this.loadImageFallback(src, premultiplyAlpha ?? true);
|
|
190
223
|
}
|
|
191
224
|
|
|
192
225
|
override async getTextureData(): Promise<TextureData> {
|
package/src/main-api/Renderer.ts
CHANGED
|
@@ -658,4 +658,13 @@ export class RendererMain extends EventEmitter {
|
|
|
658
658
|
rerender() {
|
|
659
659
|
throw new Error('Not implemented');
|
|
660
660
|
}
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* Sets the clear color for the stage.
|
|
664
|
+
*
|
|
665
|
+
* @param color - The color to set as the clear color.
|
|
666
|
+
*/
|
|
667
|
+
setClearColor(color: number) {
|
|
668
|
+
this.stage.setClearColor(color);
|
|
669
|
+
}
|
|
661
670
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
/*interface InstanceMap {
|
|
3
|
-
renderer: CoreRenderer;
|
|
4
|
-
effect: CoreEffect;
|
|
5
|
-
program: new () => void;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
type WebGlInstanceMap = InstanceMap & {
|
|
9
|
-
renderer: WebGlCoreRenderer;
|
|
10
|
-
effect: WebGlEffect;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
interface AdvEffectProp {
|
|
14
|
-
default: any;
|
|
15
|
-
isColor?: boolean;
|
|
16
|
-
validator?: (value: any) => any;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface EffectProps {
|
|
20
|
-
[key: string]: any | AdvEffectProp;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
type EffectDescriptor<Effect, Props> = Effect & {
|
|
24
|
-
props?: Props;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
type InferEffectProps<T> = {
|
|
28
|
-
[K in keyof T]: T[K] extends AdvEffectProp ? T[K]['default'] : T[K];
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
interface CoreEffect {
|
|
32
|
-
props?: EffectProps;
|
|
33
|
-
update?: (ctx: unknown) => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
type WebGlEffect = CoreEffect & {
|
|
37
|
-
fragment: string;
|
|
38
|
-
update?: (glw: WebGLRenderingContext) => void;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
type StageOptions<Renderer extends InstanceMap> = {
|
|
42
|
-
renderEngine?: new () => Renderer['renderer'];
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
class Stage<RendererMap extends InstanceMap> {
|
|
46
|
-
fxManager: CoreFxManager<RendererMap>;
|
|
47
|
-
constructor(options: StageOptions<RendererMap>) {
|
|
48
|
-
this.fxManager = new CoreFxManager();
|
|
49
|
-
const renderer = new options.renderEngine();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
createShader<Effect extends RendererMap['effect'], Props>(
|
|
53
|
-
effect: EffectDescriptor<Effect, Props>,
|
|
54
|
-
props?: InferEffectProps<Props>
|
|
55
|
-
): EffectNode<Effect, Props> {
|
|
56
|
-
return this.fxManager.createShader(effect, props);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
class CoreRenderer {
|
|
61
|
-
mode = 'core';
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
class WebGlCoreRenderer extends CoreRenderer {
|
|
65
|
-
override mode = 'webgl';
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
class CanvasCoreRenderer extends CoreRenderer {
|
|
69
|
-
override mode = 'canvas';
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
class CoreFxManager<RendererMap extends InstanceMap> {
|
|
73
|
-
fxCache: Map<string, RendererMap['effect']> = new Map();
|
|
74
|
-
|
|
75
|
-
resolveProps(defaultProps?: EffectProps, props?: EffectProps) {
|
|
76
|
-
if(defaultProps !== undefined) {
|
|
77
|
-
props = props ?? {}
|
|
78
|
-
const keys = Object.keys(defaultProps);
|
|
79
|
-
const l = keys.length;
|
|
80
|
-
for(let i = 0; i < l; i++) {
|
|
81
|
-
if(props[keys[i]] === undefined) {
|
|
82
|
-
props[keys[i]] = defaultProps[keys[i]].default || defaultProps[keys[i]]
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
createShader<Effect extends RendererMap['effect'], Props>(
|
|
89
|
-
effect: EffectDescriptor<Effect, Props>,
|
|
90
|
-
props?: InferEffectProps<Props>
|
|
91
|
-
): EffectNode<Effect, Props> {
|
|
92
|
-
|
|
93
|
-
// const f = JSON.stringify(effect);
|
|
94
|
-
// if (this.fxCache.has(f)) {
|
|
95
|
-
// console.log('already has this effect');
|
|
96
|
-
// } else {
|
|
97
|
-
// console.log('create new effect program');
|
|
98
|
-
// this.fxCache.set(f, effect);
|
|
99
|
-
// }
|
|
100
|
-
|
|
101
|
-
return new EffectNode<Effect, Props>(effect, WebGlCoreRenderer, props);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
class EffectNode<Effect extends CoreEffect, Props extends EffectProps> {
|
|
106
|
-
#data: Record<string, any> | undefined = undefined;
|
|
107
|
-
constructor(
|
|
108
|
-
readonly type: Effect,
|
|
109
|
-
readonly program: new () => void,
|
|
110
|
-
props?: InferEffectProps<Props>
|
|
111
|
-
) {
|
|
112
|
-
this.#data = props;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const stage = new Stage<WebGlInstanceMap>({
|
|
117
|
-
renderEngine: CanvasCoreRenderer,
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
stage.createShader(
|
|
121
|
-
{
|
|
122
|
-
props: {
|
|
123
|
-
radius: 10,
|
|
124
|
-
},
|
|
125
|
-
fragment: '',
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
radius: 30,
|
|
129
|
-
}
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
stage.createShader({
|
|
133
|
-
props: {
|
|
134
|
-
radius: 10,
|
|
135
|
-
},
|
|
136
|
-
fragment: '',
|
|
137
|
-
});*/
|
|
138
|
-
//# sourceMappingURL=CoreStuff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CoreStuff.js","sourceRoot":"","sources":["../../../src/core/CoreStuff.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuIK"}
|