@lightningjs/renderer 3.0.0-beta19 → 3.0.0-beta20
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/Autosizer.d.ts +9 -3
- package/dist/src/core/Autosizer.js +37 -19
- package/dist/src/core/Autosizer.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +1 -1
- package/dist/src/core/CoreNode.js +30 -13
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/Stage.js +1 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -5
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +81 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/dist/src/core/renderers/CoreShader.js +28 -0
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +22 -38
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +14 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +138 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +19 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +58 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +17 -10
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +134 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/shaders/webgl/Default.js +6 -7
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js +6 -7
- package/dist/src/core/shaders/webgl/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 +72 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
- package/dist/src/core/text-rendering/TrFontManager.js +131 -0
- package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
- package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +39 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
- package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
- package/dist/src/main-api/DynamicShaderController.js +58 -0
- package/dist/src/main-api/DynamicShaderController.js.map +1 -0
- package/dist/src/main-api/Inspector.js +5 -6
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +31 -0
- package/dist/src/main-api/ShaderController.js +37 -0
- package/dist/src/main-api/ShaderController.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/src/core/CoreNode.ts +38 -19
- package/src/core/Stage.ts +1 -1
- package/src/core/renderers/canvas/CanvasRenderer.ts +36 -55
- package/src/core/renderers/webgl/WebGlRenderOp.ts +2 -2
- package/src/core/renderers/webgl/WebGlRenderer.ts +22 -10
- package/src/core/shaders/webgl/Default.ts +6 -7
- package/src/core/shaders/webgl/SdfShader.ts +6 -7
- package/src/main-api/Inspector.ts +5 -6
|
@@ -27,7 +27,6 @@ import {
|
|
|
27
27
|
} from '../CoreRenderer.js';
|
|
28
28
|
import { CanvasTexture } from './CanvasTexture.js';
|
|
29
29
|
import { parseColor } from '../../lib/colorParser.js';
|
|
30
|
-
import { assertTruthy } from '../../../utils.js';
|
|
31
30
|
import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
|
|
32
31
|
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
33
32
|
|
|
@@ -43,7 +42,6 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
43
42
|
super(options);
|
|
44
43
|
|
|
45
44
|
this.mode = 'canvas';
|
|
46
|
-
|
|
47
45
|
const { canvas } = options;
|
|
48
46
|
this.canvas = canvas as HTMLCanvasElement;
|
|
49
47
|
this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
|
|
@@ -72,28 +70,15 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
72
70
|
const ctx = this.context;
|
|
73
71
|
const { tx, ty, ta, tb, tc, td, clippingRect } = quad;
|
|
74
72
|
let texture = quad.texture;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (texture) {
|
|
89
|
-
if (texture instanceof SubTexture) {
|
|
90
|
-
texture = texture.parentTexture;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (texture.state === 'freed') {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (texture.state !== 'loaded') {
|
|
73
|
+
// The Canvas2D renderer only supports image textures, no textures are used for color blocks
|
|
74
|
+
if (texture !== null) {
|
|
75
|
+
const textureType = texture.type;
|
|
76
|
+
if (
|
|
77
|
+
textureType !== TextureType.image &&
|
|
78
|
+
textureType !== TextureType.subTexture &&
|
|
79
|
+
textureType !== TextureType.color &&
|
|
80
|
+
textureType !== TextureType.noise
|
|
81
|
+
) {
|
|
97
82
|
return;
|
|
98
83
|
}
|
|
99
84
|
}
|
|
@@ -151,50 +136,46 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
151
136
|
|
|
152
137
|
renderContext(quad: QuadOptions) {
|
|
153
138
|
const color = quad.colorTl;
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
textureType === TextureType.subTexture ||
|
|
158
|
-
textureType === TextureType.noise) &&
|
|
159
|
-
quad.texture?.ctxTexture
|
|
160
|
-
) {
|
|
139
|
+
const texture = quad.texture!;
|
|
140
|
+
const textureType = texture.type;
|
|
141
|
+
if (textureType !== TextureType.color) {
|
|
161
142
|
const tintColor = parseColor(color);
|
|
162
|
-
|
|
163
|
-
tintColor
|
|
164
|
-
|
|
165
|
-
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
166
|
-
if (textureType === TextureType.subTexture) {
|
|
143
|
+
if (textureType !== TextureType.subTexture) {
|
|
144
|
+
const image = (texture.ctxTexture as CanvasTexture).getImage(tintColor);
|
|
145
|
+
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
167
146
|
this.context.drawImage(
|
|
168
147
|
image,
|
|
169
|
-
(quad.texture as SubTexture).props.x,
|
|
170
|
-
(quad.texture as SubTexture).props.y,
|
|
171
|
-
(quad.texture as SubTexture).props.w,
|
|
172
|
-
(quad.texture as SubTexture).props.h,
|
|
173
148
|
quad.tx,
|
|
174
149
|
quad.ty,
|
|
175
150
|
quad.width,
|
|
176
151
|
quad.height,
|
|
177
152
|
);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
this.context.drawImage(
|
|
181
|
-
image,
|
|
182
|
-
quad.tx,
|
|
183
|
-
quad.ty,
|
|
184
|
-
quad.width,
|
|
185
|
-
quad.height,
|
|
186
|
-
);
|
|
187
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
188
|
-
} catch (error) {
|
|
189
|
-
// noop
|
|
190
|
-
}
|
|
153
|
+
this.context.globalAlpha = 1;
|
|
154
|
+
return;
|
|
191
155
|
}
|
|
156
|
+
const image = (
|
|
157
|
+
(texture as SubTexture).parentTexture.ctxTexture as CanvasTexture
|
|
158
|
+
).getImage(tintColor);
|
|
159
|
+
const props = (texture as SubTexture).props;
|
|
160
|
+
|
|
161
|
+
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
162
|
+
this.context.drawImage(
|
|
163
|
+
image,
|
|
164
|
+
props.x,
|
|
165
|
+
props.y,
|
|
166
|
+
props.w,
|
|
167
|
+
props.h,
|
|
168
|
+
quad.tx,
|
|
169
|
+
quad.ty,
|
|
170
|
+
quad.width,
|
|
171
|
+
quad.height,
|
|
172
|
+
);
|
|
192
173
|
this.context.globalAlpha = 1;
|
|
193
174
|
return;
|
|
194
175
|
}
|
|
195
176
|
const hasGradient =
|
|
196
177
|
quad.colorTl !== quad.colorTr || quad.colorTl !== quad.colorBr;
|
|
197
|
-
if (
|
|
178
|
+
if (hasGradient === true) {
|
|
198
179
|
let endX: number = quad.tx;
|
|
199
180
|
let endY: number = quad.ty;
|
|
200
181
|
let endColor: number;
|
|
@@ -219,7 +200,7 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
219
200
|
gradient.addColorStop(1, normalizeCanvasColor(endColor));
|
|
220
201
|
this.context.fillStyle = gradient;
|
|
221
202
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
222
|
-
} else
|
|
203
|
+
} else {
|
|
223
204
|
this.context.fillStyle = normalizeCanvasColor(color);
|
|
224
205
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
225
206
|
}
|
|
@@ -63,7 +63,7 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
63
63
|
readonly clippingRect: RectWithValid;
|
|
64
64
|
readonly rtt: boolean;
|
|
65
65
|
readonly parentHasRenderTexture: boolean;
|
|
66
|
-
readonly framebufferDimensions
|
|
66
|
+
readonly framebufferDimensions: Dimensions | null;
|
|
67
67
|
readonly alpha: number;
|
|
68
68
|
readonly pixelRatio: number;
|
|
69
69
|
readonly time?: number | null;
|
|
@@ -80,7 +80,7 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
80
80
|
this.height = quad.height;
|
|
81
81
|
this.clippingRect = quad.clippingRect;
|
|
82
82
|
this.parentHasRenderTexture = quad.parentHasRenderTexture;
|
|
83
|
-
this.framebufferDimensions = quad.framebufferDimensions;
|
|
83
|
+
this.framebufferDimensions = quad.framebufferDimensions || null;
|
|
84
84
|
this.rtt = quad.rtt;
|
|
85
85
|
this.alpha = quad.alpha;
|
|
86
86
|
this.pixelRatio =
|
|
@@ -258,11 +258,9 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
258
258
|
const u = this.uiQuadBuffer;
|
|
259
259
|
let i = this.curBufferIdx;
|
|
260
260
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if (reuse) {
|
|
261
|
+
const reuse = this.reuseRenderOp(params);
|
|
262
|
+
if (reuse === false) {
|
|
264
263
|
this.newRenderOp(params, i);
|
|
265
|
-
ro = this.curRenderOp!;
|
|
266
264
|
}
|
|
267
265
|
|
|
268
266
|
let tx = params.texture!;
|
|
@@ -320,7 +318,7 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
320
318
|
f[i + 30] = 1;
|
|
321
319
|
f[i + 31] = 1;
|
|
322
320
|
|
|
323
|
-
|
|
321
|
+
this.curRenderOp!.numQuads++;
|
|
324
322
|
this.curBufferIdx = i + 32;
|
|
325
323
|
}
|
|
326
324
|
|
|
@@ -387,16 +385,30 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
387
385
|
return false;
|
|
388
386
|
}
|
|
389
387
|
|
|
390
|
-
// Force new render operation if rendering to texture
|
|
391
|
-
// @todo: This needs to be improved, render operations could also be reused
|
|
392
|
-
// for rendering to texture
|
|
388
|
+
// Force new render operation if rendering to texture is different
|
|
393
389
|
if (
|
|
394
|
-
|
|
395
|
-
|
|
390
|
+
this.curRenderOp.parentHasRenderTexture !==
|
|
391
|
+
params.parentHasRenderTexture ||
|
|
392
|
+
this.curRenderOp.rtt !== params.rtt
|
|
396
393
|
) {
|
|
397
394
|
return false;
|
|
398
395
|
}
|
|
399
396
|
|
|
397
|
+
if (
|
|
398
|
+
params.parentHasRenderTexture === true &&
|
|
399
|
+
this.curRenderOp.framebufferDimensions !== null &&
|
|
400
|
+
params.framebufferDimensions !== null
|
|
401
|
+
) {
|
|
402
|
+
if (
|
|
403
|
+
this.curRenderOp.framebufferDimensions.w !==
|
|
404
|
+
params.framebufferDimensions.w ||
|
|
405
|
+
this.curRenderOp.framebufferDimensions.h !==
|
|
406
|
+
params.framebufferDimensions.h
|
|
407
|
+
) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
400
412
|
if (
|
|
401
413
|
this.curRenderOp.shader.shaderKey === 'default' &&
|
|
402
414
|
params.shader?.shaderKey === 'default'
|
|
@@ -57,15 +57,15 @@ export const Default: WebGlShaderType = {
|
|
|
57
57
|
varying vec2 v_nodeCoords;
|
|
58
58
|
|
|
59
59
|
void main() {
|
|
60
|
-
vec2 normalized = a_position * u_pixelRatio;
|
|
61
|
-
vec2
|
|
60
|
+
vec2 normalized = a_position * u_pixelRatio / u_resolution;
|
|
61
|
+
vec2 zero_two = normalized * 2.0;
|
|
62
|
+
vec2 clip_space = zero_two - 1.0;
|
|
62
63
|
|
|
63
64
|
v_color = a_color;
|
|
64
|
-
v_nodeCoords = a_nodeCoords;
|
|
65
65
|
v_textureCoords = a_textureCoords;
|
|
66
|
+
v_nodeCoords = a_nodeCoords;
|
|
66
67
|
|
|
67
|
-
gl_Position = vec4(
|
|
68
|
-
gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
|
|
68
|
+
gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
|
|
69
69
|
}
|
|
70
70
|
`,
|
|
71
71
|
fragment: `
|
|
@@ -82,8 +82,7 @@ export const Default: WebGlShaderType = {
|
|
|
82
82
|
varying vec2 v_textureCoords;
|
|
83
83
|
|
|
84
84
|
void main() {
|
|
85
|
-
|
|
86
|
-
gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoords);
|
|
85
|
+
gl_FragColor = v_color * texture2D(u_texture, v_textureCoords);
|
|
87
86
|
}
|
|
88
87
|
`,
|
|
89
88
|
};
|
|
@@ -76,8 +76,10 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
|
|
|
76
76
|
uniform mat3 u_transform;
|
|
77
77
|
uniform float u_pixelRatio;
|
|
78
78
|
uniform float u_size;
|
|
79
|
+
uniform float u_distanceRange;
|
|
79
80
|
|
|
80
81
|
varying vec2 v_texcoord;
|
|
82
|
+
varying float v_scaledDistRange;
|
|
81
83
|
|
|
82
84
|
void main() {
|
|
83
85
|
vec2 scrolledPosition = a_position * u_size;
|
|
@@ -88,7 +90,7 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
|
|
|
88
90
|
|
|
89
91
|
gl_Position = vec4(screenSpace, 0.0, 1.0);
|
|
90
92
|
v_texcoord = a_textureCoords;
|
|
91
|
-
|
|
93
|
+
v_scaledDistRange = u_distanceRange * u_pixelRatio;
|
|
92
94
|
}
|
|
93
95
|
`,
|
|
94
96
|
fragment: `
|
|
@@ -99,20 +101,17 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
|
|
|
99
101
|
# endif
|
|
100
102
|
uniform vec4 u_color;
|
|
101
103
|
uniform sampler2D u_texture;
|
|
102
|
-
uniform float u_distanceRange;
|
|
103
|
-
uniform float u_pixelRatio;
|
|
104
|
-
uniform int u_debug;
|
|
105
104
|
|
|
106
105
|
varying vec2 v_texcoord;
|
|
106
|
+
varying float v_scaledDistRange;
|
|
107
107
|
|
|
108
108
|
float median(float r, float g, float b) {
|
|
109
|
-
return
|
|
109
|
+
return clamp(b, min(r, g), max(r, g));
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
void main() {
|
|
113
113
|
vec3 sample = texture2D(u_texture, v_texcoord).rgb;
|
|
114
|
-
float
|
|
115
|
-
float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
|
|
114
|
+
float sigDist = v_scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
|
|
116
115
|
float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;
|
|
117
116
|
|
|
118
117
|
// Build the final color.
|
|
@@ -102,16 +102,14 @@ const stylePropertyMap: {
|
|
|
102
102
|
},
|
|
103
103
|
w: (w) => {
|
|
104
104
|
if (w === 0) {
|
|
105
|
-
|
|
106
|
-
return { prop: 'width', value: '1px' };
|
|
105
|
+
return { prop: 'width', value: 'auto' };
|
|
107
106
|
}
|
|
108
107
|
|
|
109
108
|
return { prop: 'width', value: `${w}px` };
|
|
110
109
|
},
|
|
111
110
|
h: (h) => {
|
|
112
111
|
if (h === 0) {
|
|
113
|
-
|
|
114
|
-
return { prop: 'height', value: '1px' };
|
|
112
|
+
return { prop: 'height', value: 'auto' };
|
|
115
113
|
}
|
|
116
114
|
|
|
117
115
|
return { prop: 'height', value: `${h}px` };
|
|
@@ -911,8 +909,9 @@ export class Inspector {
|
|
|
911
909
|
if (property === 'text') {
|
|
912
910
|
div.innerHTML = String(value);
|
|
913
911
|
|
|
914
|
-
// Keep DOM text invisible without breaking
|
|
915
|
-
|
|
912
|
+
// Keep DOM text invisible without breaking visibility checks
|
|
913
|
+
// Use very low opacity (0.001) instead of 0 so Playwright still detects it
|
|
914
|
+
div.style.opacity = '0.001';
|
|
916
915
|
div.style.pointerEvents = 'none';
|
|
917
916
|
div.style.userSelect = 'none';
|
|
918
917
|
return;
|