@lightningjs/renderer 2.9.0-beta1 → 2.9.0-beta3
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/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +147 -147
- package/dist/src/core/CoreNode.d.ts +2 -1
- package/dist/src/core/CoreNode.js +54 -43
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +61 -15
- package/dist/src/core/CoreTextureManager.js +179 -104
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +7 -0
- package/dist/src/core/Stage.js +33 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.js +2 -5
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +31 -28
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +1 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +2 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +20 -7
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +3 -3
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +8 -10
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +3 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +1 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +36 -35
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +7 -17
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +5 -3
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +3 -5
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +3 -3
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +2 -1
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +8 -1
- package/dist/src/core/textures/ImageTexture.js +42 -1
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +2 -1
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +1 -1
- package/dist/src/core/textures/RenderTexture.js +2 -1
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +1 -1
- package/dist/src/core/textures/SubTexture.js +21 -4
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +43 -21
- package/dist/src/core/textures/Texture.js +105 -33
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Inspector.js +1 -1
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +18 -0
- package/dist/src/main-api/Renderer.js +6 -4
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas.ts +39 -39
- package/exports/index.ts +89 -89
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +44 -44
- package/exports/webgl.ts +38 -38
- package/package.json +1 -1
- package/scripts/please-use-pnpm.js +13 -13
- package/src/common/CommonTypes.ts +139 -139
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/CoreNode.test.ts +95 -95
- package/src/core/CoreNode.ts +2282 -2258
- package/src/core/CoreShaderManager.ts +292 -292
- package/src/core/CoreTextNode.ts +450 -450
- package/src/core/CoreTextureManager.ts +522 -432
- package/src/core/Stage.ts +699 -652
- package/src/core/TextureMemoryManager.ts +277 -279
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +340 -340
- package/src/core/animations/CoreAnimationController.ts +157 -157
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +270 -267
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +86 -86
- package/src/core/lib/WebGlContextWrapper.ts +1322 -1320
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +306 -306
- package/src/core/platform.ts +61 -61
- package/src/core/renderers/CoreContextTexture.ts +43 -42
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +114 -114
- package/src/core/renderers/CoreShader.ts +41 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +364 -349
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +150 -143
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +231 -231
- package/src/core/renderers/canvas/internal/ColorUtils.ts +69 -69
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +48 -48
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +79 -79
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +50 -48
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +298 -297
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +125 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +805 -817
- package/src/core/renderers/webgl/WebGlCoreShader.ts +362 -362
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +5 -3
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -143
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +93 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +580 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +167 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +204 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +87 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +159 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +127 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +148 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +157 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +171 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +168 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +187 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +110 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +196 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
- package/src/core/text-rendering/TrFontManager.ts +183 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +169 -171
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +89 -89
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -508
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +798 -798
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +853 -853
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +403 -403
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +557 -557
- package/src/core/textures/ColorTexture.ts +102 -100
- package/src/core/textures/ImageTexture.ts +378 -333
- package/src/core/textures/NoiseTexture.ts +104 -101
- package/src/core/textures/RenderTexture.ts +85 -83
- package/src/core/textures/SubTexture.ts +171 -146
- package/src/core/textures/Texture.ts +407 -318
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/DynamicShaderController.ts +104 -104
- package/src/main-api/INode.ts +101 -101
- package/src/main-api/Inspector.ts +505 -505
- package/src/main-api/Renderer.ts +693 -670
- package/src/main-api/ShaderController.ts +80 -80
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +248 -248
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -24
- package/dist/src/main-api/ICoreDriver.js +0 -20
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -378
- package/dist/src/main-api/RendererMain.js +0 -367
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -21
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -115
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -101
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -425
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -204
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -93
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -290
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -40
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -61
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -203
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -25
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -232
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -24
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -113
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -46
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -160
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -184
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -109
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -147
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -74
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { getRgbaComponents } from '../../lib/utils.js';
|
|
20
20
|
import { SubTexture } from '../../textures/SubTexture.js';
|
|
21
|
+
import { TextureType } from '../../textures/Texture.js';
|
|
21
22
|
import { CoreRenderer, } from '../CoreRenderer.js';
|
|
22
23
|
import { CanvasCoreTexture } from './CanvasCoreTexture.js';
|
|
23
24
|
import { getBorder, getRadius, roundRect, strokeLine, } from './internal/C2DShaderUtils.js';
|
|
24
25
|
import { formatRgba, parseColorRgba, parseColor, } from './internal/ColorUtils.js';
|
|
25
26
|
import { UnsupportedShader } from './shaders/UnsupportedShader.js';
|
|
27
|
+
import { assertTruthy } from '../../../utils.js';
|
|
26
28
|
export class CanvasCoreRenderer extends CoreRenderer {
|
|
27
29
|
context;
|
|
28
30
|
canvas;
|
|
@@ -52,7 +54,6 @@ export class CanvasCoreRenderer extends CoreRenderer {
|
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
reset() {
|
|
55
|
-
// eslint-disable-next-line no-self-assign
|
|
56
57
|
this.canvas.width = this.canvas.width; // quick reset canvas
|
|
57
58
|
const ctx = this.context;
|
|
58
59
|
if (this.clearColor) {
|
|
@@ -71,6 +72,13 @@ export class CanvasCoreRenderer extends CoreRenderer {
|
|
|
71
72
|
let texture = quad.texture;
|
|
72
73
|
let ctxTexture = undefined;
|
|
73
74
|
let frame;
|
|
75
|
+
const textureType = texture?.type;
|
|
76
|
+
assertTruthy(textureType, 'Texture type is not defined');
|
|
77
|
+
// The Canvas2D renderer only supports image and color textures
|
|
78
|
+
if (textureType !== TextureType.image &&
|
|
79
|
+
textureType !== TextureType.color) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
74
82
|
if (texture) {
|
|
75
83
|
if (texture instanceof SubTexture) {
|
|
76
84
|
frame = texture.props;
|
|
@@ -78,10 +86,9 @@ export class CanvasCoreRenderer extends CoreRenderer {
|
|
|
78
86
|
}
|
|
79
87
|
ctxTexture = texture.ctxTexture;
|
|
80
88
|
if (texture.state === 'freed') {
|
|
81
|
-
ctxTexture.load();
|
|
82
89
|
return;
|
|
83
90
|
}
|
|
84
|
-
if (texture.state !== 'loaded'
|
|
91
|
+
if (texture.state !== 'loaded') {
|
|
85
92
|
return;
|
|
86
93
|
}
|
|
87
94
|
}
|
|
@@ -120,18 +127,24 @@ export class CanvasCoreRenderer extends CoreRenderer {
|
|
|
120
127
|
roundRect.call(path, tx, ty, width, height, radius);
|
|
121
128
|
ctx.clip(path);
|
|
122
129
|
}
|
|
123
|
-
if (ctxTexture) {
|
|
130
|
+
if (textureType === TextureType.image && ctxTexture) {
|
|
124
131
|
const image = ctxTexture.getImage(color);
|
|
125
132
|
ctx.globalAlpha = color.a ?? alpha;
|
|
126
133
|
if (frame) {
|
|
127
134
|
ctx.drawImage(image, frame.x, frame.y, frame.width, frame.height, tx, ty, width, height);
|
|
128
135
|
}
|
|
129
136
|
else {
|
|
130
|
-
|
|
137
|
+
try {
|
|
138
|
+
ctx.drawImage(image, tx, ty, width, height);
|
|
139
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
// noop
|
|
143
|
+
}
|
|
131
144
|
}
|
|
132
145
|
ctx.globalAlpha = 1;
|
|
133
146
|
}
|
|
134
|
-
else if (hasGradient) {
|
|
147
|
+
else if (textureType === TextureType.color && hasGradient) {
|
|
135
148
|
let endX = tx;
|
|
136
149
|
let endY = ty;
|
|
137
150
|
let endColor;
|
|
@@ -153,7 +166,7 @@ export class CanvasCoreRenderer extends CoreRenderer {
|
|
|
153
166
|
ctx.fillStyle = gradient;
|
|
154
167
|
ctx.fillRect(tx, ty, width, height);
|
|
155
168
|
}
|
|
156
|
-
else {
|
|
169
|
+
else if (textureType === TextureType.color) {
|
|
157
170
|
ctx.fillStyle = formatRgba(color);
|
|
158
171
|
ctx.fillRect(tx, ty, width, height);
|
|
159
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasCoreRenderer.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,iBAAiB,EAAa,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"CanvasCoreRenderer.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
2
2
|
import { type IParsedColor } from './internal/ColorUtils.js';
|
|
3
3
|
export declare class CanvasCoreTexture extends CoreContextTexture {
|
|
4
|
-
protected image: ImageBitmap | HTMLCanvasElement | undefined;
|
|
4
|
+
protected image: ImageBitmap | HTMLCanvasElement | HTMLImageElement | undefined;
|
|
5
5
|
protected tintCache: {
|
|
6
6
|
key: string;
|
|
7
7
|
image: HTMLCanvasElement;
|
|
@@ -10,7 +10,7 @@ export declare class CanvasCoreTexture extends CoreContextTexture {
|
|
|
10
10
|
free(): void;
|
|
11
11
|
updateMemSize(): void;
|
|
12
12
|
hasImage(): boolean;
|
|
13
|
-
getImage(color: IParsedColor): ImageBitmap | HTMLCanvasElement;
|
|
14
|
-
protected tintTexture(source: ImageBitmap | HTMLCanvasElement, color: string): HTMLCanvasElement;
|
|
13
|
+
getImage(color: IParsedColor): ImageBitmap | HTMLCanvasElement | HTMLImageElement;
|
|
14
|
+
protected tintTexture(source: ImageBitmap | HTMLCanvasElement | HTMLImageElement, color: string): HTMLCanvasElement;
|
|
15
15
|
private onLoadRequest;
|
|
16
16
|
}
|
|
@@ -23,23 +23,20 @@ export class CanvasCoreTexture extends CoreContextTexture {
|
|
|
23
23
|
image;
|
|
24
24
|
tintCache;
|
|
25
25
|
load() {
|
|
26
|
-
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.textureSource.setState('loading');
|
|
26
|
+
this.textureSource.setCoreCtxState('loading');
|
|
30
27
|
this.onLoadRequest()
|
|
31
28
|
.then((size) => {
|
|
32
|
-
this.textureSource.
|
|
29
|
+
this.textureSource.setCoreCtxState('loaded', size);
|
|
33
30
|
this.updateMemSize();
|
|
34
31
|
})
|
|
35
32
|
.catch((err) => {
|
|
36
|
-
this.textureSource.
|
|
33
|
+
this.textureSource.setCoreCtxState('failed', err);
|
|
37
34
|
});
|
|
38
35
|
}
|
|
39
36
|
free() {
|
|
40
37
|
this.image = undefined;
|
|
41
38
|
this.tintCache = undefined;
|
|
42
|
-
this.textureSource.
|
|
39
|
+
this.textureSource.setCoreCtxState('freed');
|
|
43
40
|
this.setTextureMemUse(0);
|
|
44
41
|
}
|
|
45
42
|
updateMemSize() {
|
|
@@ -98,7 +95,8 @@ export class CanvasCoreTexture extends CoreContextTexture {
|
|
|
98
95
|
return canvas;
|
|
99
96
|
}
|
|
100
97
|
async onLoadRequest() {
|
|
101
|
-
|
|
98
|
+
assertTruthy(this.textureSource?.textureData?.data, 'Texture data is null');
|
|
99
|
+
const { data } = this.textureSource.textureData;
|
|
102
100
|
// TODO: canvas from text renderer should be able to provide the canvas directly
|
|
103
101
|
// instead of having to re-draw it into a new canvas...
|
|
104
102
|
if (data instanceof ImageData) {
|
|
@@ -111,8 +109,8 @@ export class CanvasCoreTexture extends CoreContextTexture {
|
|
|
111
109
|
this.image = canvas;
|
|
112
110
|
return { width: data.width, height: data.height };
|
|
113
111
|
}
|
|
114
|
-
else if (typeof ImageBitmap !== 'undefined' &&
|
|
115
|
-
data instanceof
|
|
112
|
+
else if ((typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) ||
|
|
113
|
+
data instanceof HTMLImageElement) {
|
|
116
114
|
this.image = data;
|
|
117
115
|
return { width: data.width, height: data.height };
|
|
118
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasCoreTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AAEzE,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAC7C,KAAK,
|
|
1
|
+
{"version":3,"file":"CanvasCoreTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,13 +16,15 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
+
import { assertTruthy } from '../../../utils.js';
|
|
19
20
|
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
20
21
|
export class WebGlCoreCtxSubTexture extends WebGlCoreCtxTexture {
|
|
21
22
|
constructor(glw, memManager, textureSource) {
|
|
22
23
|
super(glw, memManager, textureSource);
|
|
23
24
|
}
|
|
24
25
|
async onLoadRequest() {
|
|
25
|
-
const props =
|
|
26
|
+
const props = this.textureSource.textureData;
|
|
27
|
+
assertTruthy(props, 'SubTexture must have texture data');
|
|
26
28
|
if (props.data instanceof Uint8Array) {
|
|
27
29
|
// its a 1x1 Color Texture
|
|
28
30
|
return { width: 1, height: 1 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGlCoreCtxSubTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"WebGlCoreCtxSubTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YACE,GAAwB,EACxB,UAAgC,EAChC,aAAyB;QAEzB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,aAAa;QAC1B,MAAM,KAAK,GAAI,IAAI,CAAC,aAA4B,CAAC,WAAW,CAAC;QAC7D,YAAY,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;YACrC,0BAA0B;YAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -17,11 +17,10 @@ import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
|
17
17
|
export declare class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
18
18
|
protected glw: WebGlContextWrapper;
|
|
19
19
|
protected _nativeCtxTexture: WebGLTexture | null;
|
|
20
|
-
private _state;
|
|
21
20
|
private _w;
|
|
22
21
|
private _h;
|
|
23
22
|
constructor(glw: WebGlContextWrapper, memManager: TextureMemoryManager, textureSource: Texture);
|
|
24
|
-
get ctxTexture(): WebGLTexture;
|
|
23
|
+
get ctxTexture(): WebGLTexture | null;
|
|
25
24
|
get w(): number;
|
|
26
25
|
get h(): number;
|
|
27
26
|
/**
|
|
@@ -35,7 +35,6 @@ const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);
|
|
|
35
35
|
export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
36
36
|
glw;
|
|
37
37
|
_nativeCtxTexture = null;
|
|
38
|
-
_state = 'freed';
|
|
39
38
|
_w = 0;
|
|
40
39
|
_h = 0;
|
|
41
40
|
constructor(glw, memManager, textureSource) {
|
|
@@ -43,8 +42,9 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
43
42
|
this.glw = glw;
|
|
44
43
|
}
|
|
45
44
|
get ctxTexture() {
|
|
46
|
-
if (this.
|
|
45
|
+
if (this.state === 'freed') {
|
|
47
46
|
this.load();
|
|
47
|
+
return null;
|
|
48
48
|
}
|
|
49
49
|
assertTruthy(this._nativeCtxTexture);
|
|
50
50
|
return this._nativeCtxTexture;
|
|
@@ -66,38 +66,38 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
66
66
|
*/
|
|
67
67
|
load() {
|
|
68
68
|
// If the texture is already loading or loaded, don't load it again.
|
|
69
|
-
if (this.
|
|
69
|
+
if (this.state === 'loading' || this.state === 'loaded') {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
this.
|
|
73
|
-
this.textureSource.
|
|
72
|
+
this.state = 'loading';
|
|
73
|
+
this.textureSource.setCoreCtxState('loading');
|
|
74
74
|
this._nativeCtxTexture = this.createNativeCtxTexture();
|
|
75
75
|
if (this._nativeCtxTexture === null) {
|
|
76
|
-
this.
|
|
77
|
-
this.textureSource.
|
|
76
|
+
this.state = 'failed';
|
|
77
|
+
this.textureSource.setCoreCtxState('failed', new Error('Could not create WebGL Texture'));
|
|
78
78
|
console.error('Could not create WebGL Texture');
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
this.onLoadRequest()
|
|
82
82
|
.then(({ width, height }) => {
|
|
83
83
|
// If the texture has been freed while loading, return early.
|
|
84
|
-
if (this.
|
|
84
|
+
if (this.state === 'freed') {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
this.
|
|
87
|
+
this.state = 'loaded';
|
|
88
88
|
this._w = width;
|
|
89
89
|
this._h = height;
|
|
90
90
|
// Update the texture source's width and height so that it can be used
|
|
91
91
|
// for rendering.
|
|
92
|
-
this.textureSource.
|
|
92
|
+
this.textureSource.setCoreCtxState('loaded', { width, height });
|
|
93
93
|
})
|
|
94
94
|
.catch((err) => {
|
|
95
95
|
// If the texture has been freed while loading, return early.
|
|
96
|
-
if (this.
|
|
96
|
+
if (this.state === 'freed') {
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
|
-
this.
|
|
100
|
-
this.textureSource.
|
|
99
|
+
this.state = 'failed';
|
|
100
|
+
this.textureSource.setCoreCtxState('failed', err);
|
|
101
101
|
console.error(err);
|
|
102
102
|
});
|
|
103
103
|
}
|
|
@@ -106,48 +106,49 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
106
106
|
*/
|
|
107
107
|
async onLoadRequest() {
|
|
108
108
|
const { glw } = this;
|
|
109
|
+
const textureData = this.textureSource.textureData;
|
|
110
|
+
assertTruthy(textureData, 'Texture data is null');
|
|
109
111
|
// Set to a 1x1 transparent texture
|
|
110
112
|
glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
111
113
|
this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
112
|
-
const textureData = await this.textureSource?.getTextureData();
|
|
113
114
|
// If the texture has been freed while loading, return early.
|
|
114
115
|
if (!this._nativeCtxTexture) {
|
|
115
|
-
assertTruthy(this.
|
|
116
|
+
assertTruthy(this.state === 'freed');
|
|
116
117
|
return { width: 0, height: 0 };
|
|
117
118
|
}
|
|
118
119
|
let width = 0;
|
|
119
120
|
let height = 0;
|
|
120
|
-
assertTruthy(this._nativeCtxTexture);
|
|
121
121
|
glw.activeTexture(0);
|
|
122
|
+
const tdata = textureData.data;
|
|
123
|
+
const format = textureData.premultiplyAlpha ? glw.RGBA : glw.RGB;
|
|
124
|
+
const formatBytes = format === glw.RGBA ? 4 : 3;
|
|
122
125
|
// If textureData is null, the texture is empty (0, 0) and we don't need to
|
|
123
126
|
// upload any data to the GPU.
|
|
124
|
-
if ((typeof ImageBitmap !== 'undefined' &&
|
|
125
|
-
|
|
126
|
-
textureData.data instanceof ImageData ||
|
|
127
|
+
if ((typeof ImageBitmap !== 'undefined' && tdata instanceof ImageBitmap) ||
|
|
128
|
+
tdata instanceof ImageData ||
|
|
127
129
|
// not using typeof HTMLImageElement due to web worker
|
|
128
|
-
isHTMLImageElement(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
height = data.height;
|
|
130
|
+
isHTMLImageElement(tdata)) {
|
|
131
|
+
width = tdata.width;
|
|
132
|
+
height = tdata.height;
|
|
132
133
|
glw.bindTexture(this._nativeCtxTexture);
|
|
133
134
|
glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
|
|
134
|
-
glw.texImage2D(0,
|
|
135
|
-
this.setTextureMemUse(width * height *
|
|
135
|
+
glw.texImage2D(0, format, format, glw.UNSIGNED_BYTE, tdata);
|
|
136
|
+
this.setTextureMemUse(width * height * formatBytes);
|
|
136
137
|
// generate mipmaps for power-of-2 textures or in WebGL2RenderingContext
|
|
137
138
|
if (glw.isWebGl2() || (isPowerOfTwo(width) && isPowerOfTwo(height))) {
|
|
138
139
|
glw.generateMipmap();
|
|
139
140
|
}
|
|
140
141
|
}
|
|
141
|
-
else if (
|
|
142
|
+
else if (tdata === null) {
|
|
142
143
|
width = 0;
|
|
143
144
|
height = 0;
|
|
144
145
|
// Reset to a 1x1 transparent texture
|
|
145
146
|
glw.bindTexture(this._nativeCtxTexture);
|
|
146
|
-
glw.texImage2D(0,
|
|
147
|
+
glw.texImage2D(0, format, 1, 1, 0, format, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);
|
|
147
148
|
this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
148
149
|
}
|
|
149
|
-
else if ('mipmaps' in
|
|
150
|
-
const { mipmaps, width = 0, height = 0, type, glInternalFormat
|
|
150
|
+
else if ('mipmaps' in tdata && tdata.mipmaps) {
|
|
151
|
+
const { mipmaps, width = 0, height = 0, type, glInternalFormat } = tdata;
|
|
151
152
|
const view = type === 'ktx'
|
|
152
153
|
? new DataView(mipmaps[0] ?? new ArrayBuffer(0))
|
|
153
154
|
: mipmaps[0];
|
|
@@ -159,14 +160,14 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
159
160
|
glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
|
|
160
161
|
this.setTextureMemUse(view.byteLength);
|
|
161
162
|
}
|
|
162
|
-
else if (
|
|
163
|
+
else if (tdata && tdata instanceof Uint8Array) {
|
|
163
164
|
// Color Texture
|
|
164
165
|
width = 1;
|
|
165
166
|
height = 1;
|
|
166
167
|
glw.bindTexture(this._nativeCtxTexture);
|
|
167
168
|
glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
|
|
168
|
-
glw.texImage2D(0,
|
|
169
|
-
this.setTextureMemUse(width * height *
|
|
169
|
+
glw.texImage2D(0, format, width, height, 0, format, glw.UNSIGNED_BYTE, tdata);
|
|
170
|
+
this.setTextureMemUse(width * height * formatBytes);
|
|
170
171
|
}
|
|
171
172
|
else {
|
|
172
173
|
console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);
|
|
@@ -182,11 +183,11 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
182
183
|
* @returns
|
|
183
184
|
*/
|
|
184
185
|
free() {
|
|
185
|
-
if (this.
|
|
186
|
+
if (this.state === 'freed') {
|
|
186
187
|
return;
|
|
187
188
|
}
|
|
188
|
-
this.
|
|
189
|
-
this.textureSource.
|
|
189
|
+
this.state = 'freed';
|
|
190
|
+
this.textureSource.setCoreCtxState('freed');
|
|
190
191
|
this._w = 0;
|
|
191
192
|
this._h = 0;
|
|
192
193
|
if (!this._nativeCtxTexture) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,wBAAwB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,wBAAwB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAM7C;IALF,iBAAiB,GAAwB,IAAI,CAAC;IAChD,EAAE,GAAG,CAAC,CAAC;IACP,EAAE,GAAG,CAAC,CAAC;IAEf,YACY,GAAwB,EAClC,UAAgC,EAChC,aAAsB;QAEtB,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAJvB,QAAG,GAAH,GAAG,CAAqB;IAKpC,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI;QACF,oEAAoE;QACpE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,eAAe,CAChC,QAAQ,EACR,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAC5C,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,EAAE;aACjB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YAC1B,6DAA6D;YAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;YACjB,sEAAsE;YACtE,iBAAiB;YACjB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,6DAA6D;YAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QACnD,YAAY,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAElD,mCAAmC;QACnC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAE3D,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,2EAA2E;QAC3E,8BAA8B;QAC9B,IACE,CAAC,OAAO,WAAW,KAAK,WAAW,IAAI,KAAK,YAAY,WAAW,CAAC;YACpE,KAAK,YAAY,SAAS;YAC1B,sDAAsD;YACtD,kBAAkB,CAAC,KAAK,CAAC,EACzB,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACtB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,GAAG,CAAC,WAAW,CACb,GAAG,CAAC,8BAA8B,EAClC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAC/B,CAAC;YAEF,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;YAEpD,wEAAwE;YACxE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,cAAc,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;YACX,qCAAqC;YACrC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAExC,GAAG,CAAC,UAAU,CACZ,CAAC,EACD,MAAM,EACN,CAAC,EACD,CAAC,EACD,CAAC,EACD,MAAM,EACN,GAAG,CAAC,aAAa,EACjB,wBAAwB,CACzB,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;YACzE,MAAM,IAAI,GACR,IAAI,KAAK,KAAK;gBACZ,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC,CAAE,OAAO,CAAC,CAAC,CAAgC,CAAC;YAEjD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAExC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACtE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACzD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YACzD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACtD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAEtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,KAAK,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChD,gBAAgB;YAChB,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;YAEX,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxC,GAAG,CAAC,WAAW,CACb,GAAG,CAAC,8BAA8B,EAClC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAC/B,CAAC;YAEF,GAAG,CAAC,UAAU,CACZ,CAAC,EACD,MAAM,EACN,KAAK,EACL,MAAM,EACN,CAAC,EACD,MAAM,EACN,GAAG,CAAC,aAAa,EACjB,KAAK,CACN,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,oEAAoE,EACpE,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACO,sBAAsB;QAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yEAAyE;QACzE,sCAAsC;QACtC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrB,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAE/B,2BAA2B;QAC3B,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEtD,0BAA0B;QAC1B,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -32,7 +32,6 @@ export declare class WebGlCoreRenderer extends CoreRenderer {
|
|
|
32
32
|
/**
|
|
33
33
|
* White pixel texture used by default when no texture is specified.
|
|
34
34
|
*/
|
|
35
|
-
defaultTexture: Texture;
|
|
36
35
|
quadBufferUsage: number;
|
|
37
36
|
/**
|
|
38
37
|
* Whether the renderer is currently rendering to a texture.
|
|
@@ -22,7 +22,6 @@ import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
|
|
|
22
22
|
import { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';
|
|
23
23
|
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
24
24
|
import { Texture, TextureType } from '../../textures/Texture.js';
|
|
25
|
-
import { ColorTexture } from '../../textures/ColorTexture.js';
|
|
26
25
|
import { SubTexture } from '../../textures/SubTexture.js';
|
|
27
26
|
import { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';
|
|
28
27
|
import { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
@@ -32,7 +31,6 @@ import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
|
32
31
|
import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
33
32
|
import { RenderTexture } from '../../textures/RenderTexture.js';
|
|
34
33
|
import { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';
|
|
35
|
-
import { ImageTexture } from '../../textures/ImageTexture.js';
|
|
36
34
|
const WORDS_PER_QUAD = 24;
|
|
37
35
|
export class WebGlCoreRenderer extends CoreRenderer {
|
|
38
36
|
//// WebGL Native Context and Data
|
|
@@ -59,7 +57,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
59
57
|
/**
|
|
60
58
|
* White pixel texture used by default when no texture is specified.
|
|
61
59
|
*/
|
|
62
|
-
defaultTexture;
|
|
63
60
|
quadBufferUsage = 0;
|
|
64
61
|
/**
|
|
65
62
|
* Whether the renderer is currently rendering to a texture.
|
|
@@ -72,16 +69,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
72
69
|
this.uiQuadBuffer = new Uint32Array(this.quadBuffer);
|
|
73
70
|
this.mode = 'webgl';
|
|
74
71
|
const { canvas, clearColor, bufferMemory } = options;
|
|
75
|
-
this.defaultTexture = new ColorTexture(this.txManager);
|
|
76
|
-
// Mark the default texture as ALWAYS renderable
|
|
77
|
-
// This prevents it from ever being cleaned up.
|
|
78
|
-
// Fixes https://github.com/lightning-js/renderer/issues/262
|
|
79
|
-
this.defaultTexture.setRenderableOwner(this, true);
|
|
80
|
-
// When the default texture is loaded, request a render in case the
|
|
81
|
-
// RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
|
|
82
|
-
this.defaultTexture.once('loaded', () => {
|
|
83
|
-
this.stage.requestRender();
|
|
84
|
-
});
|
|
85
72
|
const gl = createWebGLContext(canvas, options.forceWebGL2, options.contextSpy);
|
|
86
73
|
const glw = (this.glw = new WebGlContextWrapper(gl));
|
|
87
74
|
glw.viewport(0, 0, canvas.width, canvas.height);
|
|
@@ -173,7 +160,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
173
160
|
*/
|
|
174
161
|
addQuad(params) {
|
|
175
162
|
const { fQuadBuffer, uiQuadBuffer } = this;
|
|
176
|
-
let texture = params.texture
|
|
163
|
+
let texture = params.texture;
|
|
164
|
+
assertTruthy(texture !== null, 'Texture is required');
|
|
177
165
|
/**
|
|
178
166
|
* If the shader props contain any automatic properties, update it with the
|
|
179
167
|
* current dimensions and or alpha that will be used to render the quad.
|
|
@@ -188,7 +176,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
188
176
|
params.shaderProps.$alpha = params.alpha;
|
|
189
177
|
}
|
|
190
178
|
}
|
|
191
|
-
assertTruthy(texture.ctxTexture !== undefined, 'Invalid texture type');
|
|
192
179
|
let { curBufferIdx: bufferIdx, curRenderOp } = this;
|
|
193
180
|
const targetDims = { width: -1, height: -1 };
|
|
194
181
|
targetDims.width = params.width;
|
|
@@ -196,7 +183,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
196
183
|
const targetShader = params.shader || this.defaultShader;
|
|
197
184
|
assertTruthy(targetShader.getUniformLocation !== undefined, 'Invalid WebGL shader');
|
|
198
185
|
if (this.reuseRenderOp(params) === false) {
|
|
199
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
200
186
|
this.newRenderOp(targetShader, params.shaderProps, params.alpha, targetDims, params.clippingRect, bufferIdx, params.rtt, params.parentHasRenderTexture, params.framebufferDimensions);
|
|
201
187
|
curRenderOp = this.curRenderOp;
|
|
202
188
|
assertTruthy(curRenderOp);
|
|
@@ -253,7 +239,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
253
239
|
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
254
240
|
}
|
|
255
241
|
const ctxTexture = texture.ctxTexture;
|
|
256
|
-
assertTruthy(ctxTexture
|
|
242
|
+
assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);
|
|
257
243
|
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
258
244
|
assertTruthy(this.curRenderOp !== null);
|
|
259
245
|
if (params.renderCoords) {
|
|
@@ -541,6 +527,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
541
527
|
if (!node || !node.hasRTTupdates) {
|
|
542
528
|
continue;
|
|
543
529
|
}
|
|
530
|
+
if (!node.texture || !node.texture.ctxTexture) {
|
|
531
|
+
console.warn('Texture not loaded for RTT node', node);
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
544
534
|
// Set the active RTT node to the current node
|
|
545
535
|
// So we can prevent rendering children of nested RTT nodes
|
|
546
536
|
this.activeRttNode = node;
|