@swf2es/player 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -7
- package/dist/audio.d.ts +0 -22
- package/dist/audio.d.ts.map +0 -1
- package/dist/audio.js +0 -106
- package/dist/audio.js.map +0 -1
- package/dist/bitmap-filters.d.ts +0 -29
- package/dist/bitmap-filters.d.ts.map +0 -1
- package/dist/bitmap-filters.js +0 -906
- package/dist/bitmap-filters.js.map +0 -1
- package/dist/bitmap-ops.d.ts +0 -113
- package/dist/bitmap-ops.d.ts.map +0 -1
- package/dist/bitmap-ops.js +0 -725
- package/dist/bitmap-ops.js.map +0 -1
- package/dist/bitmap.d.ts +0 -98
- package/dist/bitmap.d.ts.map +0 -1
- package/dist/bitmap.js +0 -314
- package/dist/bitmap.js.map +0 -1
- package/dist/bounds.d.ts +0 -26
- package/dist/bounds.d.ts.map +0 -1
- package/dist/bounds.js +0 -300
- package/dist/bounds.js.map +0 -1
- package/dist/color.d.ts +0 -7
- package/dist/color.d.ts.map +0 -1
- package/dist/color.js +0 -42
- package/dist/color.js.map +0 -1
- package/dist/display.d.ts +0 -425
- package/dist/display.d.ts.map +0 -1
- package/dist/display.js +0 -1274
- package/dist/display.js.map +0 -1
- package/dist/drawing.d.ts +0 -52
- package/dist/drawing.d.ts.map +0 -1
- package/dist/drawing.js +0 -204
- package/dist/drawing.js.map +0 -1
- package/dist/filters.d.ts +0 -54
- package/dist/filters.d.ts.map +0 -1
- package/dist/filters.js +0 -155
- package/dist/filters.js.map +0 -1
- package/dist/fonts.d.ts +0 -23
- package/dist/fonts.d.ts.map +0 -1
- package/dist/fonts.js +0 -91
- package/dist/fonts.js.map +0 -1
- package/dist/geometry.d.ts +0 -21
- package/dist/geometry.d.ts.map +0 -1
- package/dist/geometry.js +0 -76
- package/dist/geometry.js.map +0 -1
- package/dist/gradients.d.ts +0 -29
- package/dist/gradients.d.ts.map +0 -1
- package/dist/gradients.js +0 -116
- package/dist/gradients.js.map +0 -1
- package/dist/images.d.ts +0 -22
- package/dist/images.d.ts.map +0 -1
- package/dist/images.js +0 -147
- package/dist/images.js.map +0 -1
- package/dist/input.d.ts +0 -79
- package/dist/input.d.ts.map +0 -1
- package/dist/input.js +0 -366
- package/dist/input.js.map +0 -1
- package/dist/keyboard.d.ts +0 -97
- package/dist/keyboard.d.ts.map +0 -1
- package/dist/keyboard.js +0 -583
- package/dist/keyboard.js.map +0 -1
- package/dist/morph.d.ts +0 -17
- package/dist/morph.d.ts.map +0 -1
- package/dist/morph.js +0 -218
- package/dist/morph.js.map +0 -1
- package/dist/pixi-blend.d.ts +0 -7
- package/dist/pixi-blend.d.ts.map +0 -1
- package/dist/pixi-blend.js +0 -253
- package/dist/pixi-blend.js.map +0 -1
- package/dist/pixi-color.d.ts +0 -54
- package/dist/pixi-color.d.ts.map +0 -1
- package/dist/pixi-color.js +0 -336
- package/dist/pixi-color.js.map +0 -1
- package/dist/pixi-filters.d.ts +0 -40
- package/dist/pixi-filters.d.ts.map +0 -1
- package/dist/pixi-filters.js +0 -953
- package/dist/pixi-filters.js.map +0 -1
- package/dist/pixi-resolve.d.ts +0 -4
- package/dist/pixi-resolve.d.ts.map +0 -1
- package/dist/pixi-resolve.js +0 -76
- package/dist/pixi-resolve.js.map +0 -1
- package/dist/pixi.d.ts +0 -219
- package/dist/pixi.d.ts.map +0 -1
- package/dist/pixi.js +0 -2169
- package/dist/pixi.js.map +0 -1
- package/dist/playerglobal/flash/filters/filters.d.ts +0 -26
- package/dist/playerglobal/flash/filters/filters.d.ts.map +0 -1
- package/dist/playerglobal/flash/filters/filters.js +0 -287
- package/dist/playerglobal/flash/filters/filters.js.map +0 -1
- package/dist/playerglobal/flash/system/FSCommand.d.ts +0 -4
- package/dist/playerglobal/flash/system/FSCommand.d.ts.map +0 -1
- package/dist/playerglobal/flash/system/FSCommand.js +0 -18
- package/dist/playerglobal/flash/system/FSCommand.js.map +0 -1
- package/dist/playerglobal/natives.d.ts +0 -10
- package/dist/playerglobal/natives.d.ts.map +0 -1
- package/dist/playerglobal/natives.js +0 -53
- package/dist/playerglobal/natives.js.map +0 -1
- package/dist/png.d.ts +0 -4
- package/dist/png.d.ts.map +0 -1
- package/dist/png.js +0 -140
- package/dist/png.js.map +0 -1
- package/dist/render/art.d.ts +0 -148
- package/dist/render/art.d.ts.map +0 -1
- package/dist/render/art.js +0 -575
- package/dist/render/art.js.map +0 -1
- package/dist/render/batchers.d.ts +0 -23
- package/dist/render/batchers.d.ts.map +0 -1
- package/dist/render/batchers.js +0 -52
- package/dist/render/batchers.js.map +0 -1
- package/dist/render/bitmaps.d.ts +0 -117
- package/dist/render/bitmaps.d.ts.map +0 -1
- package/dist/render/bitmaps.js +0 -422
- package/dist/render/bitmaps.js.map +0 -1
- package/dist/render/blend.d.ts +0 -37
- package/dist/render/blend.d.ts.map +0 -1
- package/dist/render/blend.js +0 -195
- package/dist/render/blend.js.map +0 -1
- package/dist/render/color.d.ts +0 -111
- package/dist/render/color.d.ts.map +0 -1
- package/dist/render/color.js +0 -533
- package/dist/render/color.js.map +0 -1
- package/dist/render/compositing.d.ts +0 -77
- package/dist/render/compositing.d.ts.map +0 -1
- package/dist/render/compositing.js +0 -188
- package/dist/render/compositing.js.map +0 -1
- package/dist/render/filters.d.ts +0 -98
- package/dist/render/filters.d.ts.map +0 -1
- package/dist/render/filters.js +0 -1326
- package/dist/render/filters.js.map +0 -1
- package/dist/render/hooks.d.ts +0 -4
- package/dist/render/hooks.d.ts.map +0 -1
- package/dist/render/hooks.js +0 -48
- package/dist/render/hooks.js.map +0 -1
- package/dist/render/node.d.ts +0 -139
- package/dist/render/node.d.ts.map +0 -1
- package/dist/render/node.js +0 -59
- package/dist/render/node.js.map +0 -1
- package/dist/render/patches.d.ts +0 -54
- package/dist/render/patches.d.ts.map +0 -1
- package/dist/render/patches.js +0 -154
- package/dist/render/patches.js.map +0 -1
- package/dist/render/planes.d.ts +0 -74
- package/dist/render/planes.d.ts.map +0 -1
- package/dist/render/planes.js +0 -267
- package/dist/render/planes.js.map +0 -1
- package/dist/render/pointer.d.ts +0 -5
- package/dist/render/pointer.d.ts.map +0 -1
- package/dist/render/pointer.js +0 -279
- package/dist/render/pointer.js.map +0 -1
- package/dist/render/pools.d.ts +0 -122
- package/dist/render/pools.d.ts.map +0 -1
- package/dist/render/pools.js +0 -238
- package/dist/render/pools.js.map +0 -1
- package/dist/render/resolve.d.ts +0 -4
- package/dist/render/resolve.d.ts.map +0 -1
- package/dist/render/resolve.js +0 -76
- package/dist/render/resolve.js.map +0 -1
- package/dist/render/saffron.d.ts +0 -135
- package/dist/render/saffron.d.ts.map +0 -1
- package/dist/render/saffron.js +0 -725
- package/dist/render/saffron.js.map +0 -1
- package/dist/render/settle.d.ts +0 -60
- package/dist/render/settle.d.ts.map +0 -1
- package/dist/render/settle.js +0 -128
- package/dist/render/settle.js.map +0 -1
- package/dist/render/shared.d.ts +0 -25
- package/dist/render/shared.d.ts.map +0 -1
- package/dist/render/shared.js +0 -33
- package/dist/render/shared.js.map +0 -1
- package/dist/render/snapshot.d.ts +0 -21
- package/dist/render/snapshot.d.ts.map +0 -1
- package/dist/render/snapshot.js +0 -91
- package/dist/render/snapshot.js.map +0 -1
- package/dist/render/spares.d.ts +0 -56
- package/dist/render/spares.d.ts.map +0 -1
- package/dist/render/spares.js +0 -160
- package/dist/render/spares.js.map +0 -1
- package/dist/render/strokes.d.ts +0 -107
- package/dist/render/strokes.d.ts.map +0 -1
- package/dist/render/strokes.js +0 -448
- package/dist/render/strokes.js.map +0 -1
- package/dist/render/table.d.ts +0 -213
- package/dist/render/table.d.ts.map +0 -1
- package/dist/render/table.js +0 -795
- package/dist/render/table.js.map +0 -1
- package/dist/render/tessellate.d.ts +0 -89
- package/dist/render/tessellate.d.ts.map +0 -1
- package/dist/render/tessellate.js +0 -386
- package/dist/render/tessellate.js.map +0 -1
- package/dist/render/text.d.ts +0 -40
- package/dist/render/text.d.ts.map +0 -1
- package/dist/render/text.js +0 -309
- package/dist/render/text.js.map +0 -1
- package/dist/render/three.d.ts +0 -83
- package/dist/render/three.d.ts.map +0 -1
- package/dist/render/three.js +0 -511
- package/dist/render/three.js.map +0 -1
- package/dist/render/triangles.d.ts +0 -28
- package/dist/render/triangles.d.ts.map +0 -1
- package/dist/render/triangles.js +0 -189
- package/dist/render/triangles.js.map +0 -1
- package/dist/render/view.d.ts +0 -238
- package/dist/render/view.d.ts.map +0 -1
- package/dist/render/view.js +0 -1173
- package/dist/render/view.js.map +0 -1
- package/dist/render/worker/bitmaps.d.ts +0 -43
- package/dist/render/worker/bitmaps.d.ts.map +0 -1
- package/dist/render/worker/bitmaps.js +0 -151
- package/dist/render/worker/bitmaps.js.map +0 -1
- package/dist/render/worker/drawing.d.ts +0 -21
- package/dist/render/worker/drawing.d.ts.map +0 -1
- package/dist/render/worker/drawing.js +0 -356
- package/dist/render/worker/drawing.js.map +0 -1
- package/dist/render/worker/filters.d.ts +0 -7
- package/dist/render/worker/filters.d.ts.map +0 -1
- package/dist/render/worker/filters.js +0 -125
- package/dist/render/worker/filters.js.map +0 -1
- package/dist/render/worker/frames.d.ts +0 -32
- package/dist/render/worker/frames.d.ts.map +0 -1
- package/dist/render/worker/frames.js +0 -124
- package/dist/render/worker/frames.js.map +0 -1
- package/dist/render/worker/host.d.ts +0 -60
- package/dist/render/worker/host.d.ts.map +0 -1
- package/dist/render/worker/host.js +0 -297
- package/dist/render/worker/host.js.map +0 -1
- package/dist/render/worker/libraries.d.ts +0 -36
- package/dist/render/worker/libraries.d.ts.map +0 -1
- package/dist/render/worker/libraries.js +0 -153
- package/dist/render/worker/libraries.js.map +0 -1
- package/dist/render/worker/presentation.d.ts +0 -18
- package/dist/render/worker/presentation.d.ts.map +0 -1
- package/dist/render/worker/presentation.js +0 -47
- package/dist/render/worker/presentation.js.map +0 -1
- package/dist/render/worker/renderer.d.ts +0 -4
- package/dist/render/worker/renderer.d.ts.map +0 -1
- package/dist/render/worker/renderer.js +0 -21
- package/dist/render/worker/renderer.js.map +0 -1
- package/dist/render/worker/scene.d.ts +0 -32
- package/dist/render/worker/scene.d.ts.map +0 -1
- package/dist/render/worker/scene.js +0 -611
- package/dist/render/worker/scene.js.map +0 -1
- package/dist/render/worker/text.d.ts +0 -47
- package/dist/render/worker/text.d.ts.map +0 -1
- package/dist/render/worker/text.js +0 -261
- package/dist/render/worker/text.js.map +0 -1
- package/dist/render/worker/thread.d.ts +0 -23
- package/dist/render/worker/thread.d.ts.map +0 -1
- package/dist/render/worker/thread.js +0 -107
- package/dist/render/worker/thread.js.map +0 -1
- package/dist/render/worker/values.d.ts +0 -18
- package/dist/render/worker/values.d.ts.map +0 -1
- package/dist/render/worker/values.js +0 -64
- package/dist/render/worker/values.js.map +0 -1
- package/dist/sha256.d.ts +0 -5
- package/dist/sha256.d.ts.map +0 -1
- package/dist/sha256.js +0 -96
- package/dist/sha256.js.map +0 -1
- package/dist/shapes.d.ts +0 -71
- package/dist/shapes.d.ts.map +0 -1
- package/dist/shapes.js +0 -340
- package/dist/shapes.js.map +0 -1
- package/dist/static-text.d.ts +0 -33
- package/dist/static-text.d.ts.map +0 -1
- package/dist/static-text.js +0 -105
- package/dist/static-text.js.map +0 -1
- package/dist/text-layout.d.ts +0 -66
- package/dist/text-layout.d.ts.map +0 -1
- package/dist/text-layout.js +0 -315
- package/dist/text-layout.js.map +0 -1
- package/dist/text.d.ts +0 -67
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -383
- package/dist/text.js.map +0 -1
- package/dist/timeline.d.ts +0 -150
- package/dist/timeline.d.ts.map +0 -1
- package/dist/timeline.js +0 -266
- package/dist/timeline.js.map +0 -1
package/dist/render/color.js
DELETED
|
@@ -1,533 +0,0 @@
|
|
|
1
|
-
import { BatchableGraphics, BatchableSprite, Batcher, Buffer, BufferUsage, compileHighShaderGlProgram, compileHighShaderGpuProgram, ExtensionType, extensions, Geometry, Graphics, generateTextureBatchBit, generateTextureBatchBitGl, getBatchSamplersUniformGroup, localUniformBitGl, Matrix, RendererType, roundPixelsBit, roundPixelsBitGl, Shader, UniformGroup, } from "pixi.js";
|
|
2
|
-
import { copyContext } from "./tessellate.js";
|
|
3
|
-
const NAME = "flash-color";
|
|
4
|
-
/** Position 2, UV 2, colour 1, texture and rounding 1, multipliers 4, offsets 4. */
|
|
5
|
-
const VERTEX_SIZE = 14;
|
|
6
|
-
const colorBitGl = {
|
|
7
|
-
name: "flash-color-bit",
|
|
8
|
-
vertex: {
|
|
9
|
-
header: `
|
|
10
|
-
in vec4 aColor;
|
|
11
|
-
in vec4 aMul;
|
|
12
|
-
in vec4 aAdd;
|
|
13
|
-
out vec4 vMul;
|
|
14
|
-
out vec4 vAdd;
|
|
15
|
-
`,
|
|
16
|
-
main: `
|
|
17
|
-
vMul = aMul;
|
|
18
|
-
vAdd = aAdd;
|
|
19
|
-
`,
|
|
20
|
-
// flashColor already includes the group's ancestors; Pixi's global colour would apply them twice.
|
|
21
|
-
end: `vColor = aColor;`,
|
|
22
|
-
},
|
|
23
|
-
fragment: {
|
|
24
|
-
header: `
|
|
25
|
-
in vec4 vMul;
|
|
26
|
-
in vec4 vAdd;
|
|
27
|
-
`,
|
|
28
|
-
end: `
|
|
29
|
-
if (outColor.a == 0.0) {
|
|
30
|
-
finalColor = vec4(0.0);
|
|
31
|
-
} else {
|
|
32
|
-
vec4 straight = vec4(outColor.rgb / outColor.a * vColor.rgb, outColor.a * vColor.a);
|
|
33
|
-
vec4 c = clamp(straight * vMul + vAdd, 0.0, 1.0);
|
|
34
|
-
finalColor = vec4(c.rgb * c.a, c.a);
|
|
35
|
-
}
|
|
36
|
-
`,
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* The colour batcher's colour for Pixi's graphics shader, which draws a
|
|
41
|
-
* Graphics alone under its transform: the straight colour as the batcher
|
|
42
|
-
* packs it (straight), the fill's from the vertex times the Graphics' own
|
|
43
|
-
* tint, rounded to a byte, and its alpha truncated to one; the transform in
|
|
44
|
-
* uniforms.
|
|
45
|
-
*/
|
|
46
|
-
const aloneBitGl = {
|
|
47
|
-
name: "flash-color-alone-bit",
|
|
48
|
-
vertex: {
|
|
49
|
-
header: `
|
|
50
|
-
in vec4 aColor;
|
|
51
|
-
uniform vec4 uOwn;
|
|
52
|
-
`,
|
|
53
|
-
// After Pixi's tint and world colour, which it replaces: the transform includes every ancestor's.
|
|
54
|
-
end: `
|
|
55
|
-
vColor = vec4(
|
|
56
|
-
floor(aColor.rgb * uOwn.rgb * 255.0 + 0.5),
|
|
57
|
-
floor(aColor.a * uOwn.a * 255.0 + 0.001)
|
|
58
|
-
) / 255.0;
|
|
59
|
-
`,
|
|
60
|
-
},
|
|
61
|
-
fragment: {
|
|
62
|
-
header: `
|
|
63
|
-
uniform vec4 uMul;
|
|
64
|
-
uniform vec4 uAdd;
|
|
65
|
-
`,
|
|
66
|
-
end: `
|
|
67
|
-
if (outColor.a == 0.0) {
|
|
68
|
-
finalColor = vec4(0.0);
|
|
69
|
-
} else {
|
|
70
|
-
vec4 straight = vec4(outColor.rgb / outColor.a * vColor.rgb, outColor.a * vColor.a);
|
|
71
|
-
vec4 c = clamp(straight * uMul + uAdd, 0.0, 1.0);
|
|
72
|
-
finalColor = vec4(c.rgb * c.a, c.a);
|
|
73
|
-
}
|
|
74
|
-
`,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
const colorBit = {
|
|
78
|
-
name: "flash-color-bit",
|
|
79
|
-
vertex: {
|
|
80
|
-
header: `
|
|
81
|
-
@in aColor: vec4<f32>;
|
|
82
|
-
@in aMul: vec4<f32>;
|
|
83
|
-
@in aAdd: vec4<f32>;
|
|
84
|
-
@out vMul: vec4<f32>;
|
|
85
|
-
@out vAdd: vec4<f32>;
|
|
86
|
-
`,
|
|
87
|
-
main: `
|
|
88
|
-
vMul = aMul;
|
|
89
|
-
vAdd = aAdd;
|
|
90
|
-
`,
|
|
91
|
-
end: `vColor = aColor;`,
|
|
92
|
-
},
|
|
93
|
-
fragment: {
|
|
94
|
-
header: `
|
|
95
|
-
@in vMul: vec4<f32>;
|
|
96
|
-
@in vAdd: vec4<f32>;
|
|
97
|
-
`,
|
|
98
|
-
end: `
|
|
99
|
-
if (outColor.a == 0.0) {
|
|
100
|
-
finalColor = vec4<f32>(0.0);
|
|
101
|
-
} else {
|
|
102
|
-
let straight = vec4<f32>(outColor.rgb / outColor.a * vColor.rgb, outColor.a * vColor.a);
|
|
103
|
-
let c = clamp(straight * vMul + vAdd, vec4<f32>(0.0), vec4<f32>(1.0));
|
|
104
|
-
finalColor = vec4<f32>(c.rgb * c.a, c.a);
|
|
105
|
-
}
|
|
106
|
-
`,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
class ColorShader extends Shader {
|
|
110
|
-
maxTextures;
|
|
111
|
-
constructor(maxTextures) {
|
|
112
|
-
super({
|
|
113
|
-
glProgram: compileHighShaderGlProgram({
|
|
114
|
-
name: NAME,
|
|
115
|
-
bits: [colorBitGl, generateTextureBatchBitGl(maxTextures), roundPixelsBitGl],
|
|
116
|
-
}),
|
|
117
|
-
gpuProgram: compileHighShaderGpuProgram({
|
|
118
|
-
name: NAME,
|
|
119
|
-
bits: [colorBit, generateTextureBatchBit(maxTextures), roundPixelsBit],
|
|
120
|
-
}),
|
|
121
|
-
resources: { batchSamplers: getBatchSamplersUniformGroup(maxTextures) },
|
|
122
|
-
});
|
|
123
|
-
this.maxTextures = maxTextures;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
class ColorGeometry extends Geometry {
|
|
127
|
-
constructor() {
|
|
128
|
-
const buffer = new Buffer({
|
|
129
|
-
data: new Float32Array(1),
|
|
130
|
-
label: "flash-color-attributes",
|
|
131
|
-
usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,
|
|
132
|
-
shrinkToFit: false,
|
|
133
|
-
});
|
|
134
|
-
const stride = VERTEX_SIZE * 4;
|
|
135
|
-
super({
|
|
136
|
-
attributes: {
|
|
137
|
-
aPosition: { buffer, format: "float32x2", stride, offset: 0 },
|
|
138
|
-
aUV: { buffer, format: "float32x2", stride, offset: 8 },
|
|
139
|
-
aColor: { buffer, format: "unorm8x4", stride, offset: 16 },
|
|
140
|
-
aTextureIdAndRound: { buffer, format: "uint16x2", stride, offset: 20 },
|
|
141
|
-
aMul: { buffer, format: "float32x4", stride, offset: 24 },
|
|
142
|
-
aAdd: { buffer, format: "float32x4", stride, offset: 40 },
|
|
143
|
-
},
|
|
144
|
-
indexBuffer: new Buffer({
|
|
145
|
-
data: new Uint32Array(1),
|
|
146
|
-
label: "flash-color-indices",
|
|
147
|
-
usage: BufferUsage.INDEX | BufferUsage.COPY_DST,
|
|
148
|
-
shrinkToFit: false,
|
|
149
|
-
}),
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/** Shaders by texture count: every batcher of one count shares one. */
|
|
154
|
-
const shaders = new Map();
|
|
155
|
-
/**
|
|
156
|
-
* The straight colour, ABGR as the colour attribute reads it: a fill's own,
|
|
157
|
-
* else white, times the renderable's own tint and alpha, a glyph's colour
|
|
158
|
-
* as text draws it. Not its group's: what its ancestors' colour transforms
|
|
159
|
-
* make is in its flashColor, and their tint stays white under one.
|
|
160
|
-
*/
|
|
161
|
-
function straight(element) {
|
|
162
|
-
const own = element.renderable;
|
|
163
|
-
const fill = element.baseColor ?? 0xffffff;
|
|
164
|
-
const tint = own?.tint ?? 0xffffff;
|
|
165
|
-
const alpha = (element.alpha ?? 1) * (own?.alpha ?? 1);
|
|
166
|
-
return ((((alpha * 255) << 24) |
|
|
167
|
-
(channel(fill, tint, 0) << 16) |
|
|
168
|
-
(channel(fill, tint, 8) << 8) |
|
|
169
|
-
channel(fill, tint, 16)) >>>
|
|
170
|
-
0);
|
|
171
|
-
}
|
|
172
|
-
/** A channel of a fill's colour times the tint's; apart, not a closure made for each element packed. */
|
|
173
|
-
function channel(fill, tint, shift) {
|
|
174
|
-
return Math.round((((fill >> shift) & 0xff) * ((tint >> shift) & 0xff)) / 255);
|
|
175
|
-
}
|
|
176
|
-
const NONE = {
|
|
177
|
-
rMul: 1,
|
|
178
|
-
gMul: 1,
|
|
179
|
-
bMul: 1,
|
|
180
|
-
aMul: 1,
|
|
181
|
-
rAdd: 0,
|
|
182
|
-
gAdd: 0,
|
|
183
|
-
bAdd: 0,
|
|
184
|
-
aAdd: 0,
|
|
185
|
-
};
|
|
186
|
-
export class ColorBatcher extends Batcher {
|
|
187
|
-
static extension = { type: [ExtensionType.Batcher], name: NAME };
|
|
188
|
-
name = NAME;
|
|
189
|
-
vertexSize = VERTEX_SIZE;
|
|
190
|
-
geometry = new ColorGeometry();
|
|
191
|
-
shader;
|
|
192
|
-
constructor(options) {
|
|
193
|
-
super(options);
|
|
194
|
-
const max = options.maxTextures ?? 16;
|
|
195
|
-
let shader = shaders.get(max);
|
|
196
|
-
if (!shader) {
|
|
197
|
-
shader = new ColorShader(max);
|
|
198
|
-
shaders.set(max, shader);
|
|
199
|
-
}
|
|
200
|
-
this.shader = shader;
|
|
201
|
-
}
|
|
202
|
-
/** The vertex's colour, texture and transform after its position and UV, which `at` holds. */
|
|
203
|
-
tail(f32, u32, at, color, texture, ct) {
|
|
204
|
-
u32[at] = color;
|
|
205
|
-
u32[at + 1] = texture;
|
|
206
|
-
f32[at + 2] = ct.rMul;
|
|
207
|
-
f32[at + 3] = ct.gMul;
|
|
208
|
-
f32[at + 4] = ct.bMul;
|
|
209
|
-
f32[at + 5] = ct.aMul;
|
|
210
|
-
f32[at + 6] = ct.rAdd / 255;
|
|
211
|
-
f32[at + 7] = ct.gAdd / 255;
|
|
212
|
-
f32[at + 8] = ct.bAdd / 255;
|
|
213
|
-
f32[at + 9] = ct.aAdd / 255;
|
|
214
|
-
}
|
|
215
|
-
packAttributes(element, f32, u32, index, textureId) {
|
|
216
|
-
const extra = element;
|
|
217
|
-
const texture = (textureId << 16) | (element.roundPixels & 0xffff);
|
|
218
|
-
const { a, b, c, d, tx, ty } = element.transform;
|
|
219
|
-
const { positions, uvs } = element;
|
|
220
|
-
const color = straight(extra);
|
|
221
|
-
const ct = extra.renderable?.flashColor ?? NONE;
|
|
222
|
-
const end = element.attributeOffset + element.attributeSize;
|
|
223
|
-
for (let i = element.attributeOffset; i < end; i++) {
|
|
224
|
-
const x = positions[i * 2];
|
|
225
|
-
const y = positions[i * 2 + 1];
|
|
226
|
-
f32[index] = a * x + c * y + tx;
|
|
227
|
-
f32[index + 1] = d * y + b * x + ty;
|
|
228
|
-
f32[index + 2] = uvs[i * 2];
|
|
229
|
-
f32[index + 3] = uvs[i * 2 + 1];
|
|
230
|
-
this.tail(f32, u32, index + 4, color, texture, ct);
|
|
231
|
-
index += VERTEX_SIZE;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
packQuadAttributes(element, f32, u32, index, textureId) {
|
|
235
|
-
const extra = element;
|
|
236
|
-
const texture = (textureId << 16) | (element.roundPixels & 0xffff);
|
|
237
|
-
const m = element.transform;
|
|
238
|
-
const { minX, minY, maxX, maxY } = element.bounds;
|
|
239
|
-
const uv = element.texture.uvs;
|
|
240
|
-
const color = straight(extra);
|
|
241
|
-
const ct = extra.renderable?.flashColor ?? NONE;
|
|
242
|
-
const corner = (at, x, y, u, v) => {
|
|
243
|
-
f32[at] = m.a * x + m.c * y + m.tx;
|
|
244
|
-
f32[at + 1] = m.d * y + m.b * x + m.ty;
|
|
245
|
-
f32[at + 2] = u;
|
|
246
|
-
f32[at + 3] = v;
|
|
247
|
-
this.tail(f32, u32, at + 4, color, texture, ct);
|
|
248
|
-
};
|
|
249
|
-
corner(index, minX, minY, uv.x0, uv.y0);
|
|
250
|
-
corner(index + VERTEX_SIZE, maxX, minY, uv.x1, uv.y1);
|
|
251
|
-
corner(index + VERTEX_SIZE * 2, maxX, maxY, uv.x2, uv.y2);
|
|
252
|
-
corner(index + VERTEX_SIZE * 3, minX, maxY, uv.x3, uv.y3);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
extensions.add(ColorBatcher);
|
|
256
|
-
/**
|
|
257
|
-
* The batcher an element goes to (render/hooks.ts): a Graphics' or a
|
|
258
|
-
* sprite's under a colour transform to this batcher, any other to the one
|
|
259
|
-
* it names, Pixi's "default" or another a host gives.
|
|
260
|
-
*/
|
|
261
|
-
export function batcherNameFor(element) {
|
|
262
|
-
if (element instanceof BatchableGraphics || element instanceof BatchableSprite) {
|
|
263
|
-
if (element.renderable?.flashColor) {
|
|
264
|
-
return NAME;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return element.batcherName;
|
|
268
|
-
}
|
|
269
|
-
/** Each unbatched context's batched copy, made when a Graphics drawing it is first colour-transformed. */
|
|
270
|
-
const batchedCopies = new WeakMap();
|
|
271
|
-
/**
|
|
272
|
-
* `context`, batched: a shared one, which shapes, glyphs and lines make
|
|
273
|
-
* "no-batch" (render/tessellate.ts, shapeContext), as a copy; a Graphics' own, as itself.
|
|
274
|
-
*/
|
|
275
|
-
function batched(context) {
|
|
276
|
-
if (context.batchMode === "batch") {
|
|
277
|
-
return context;
|
|
278
|
-
}
|
|
279
|
-
if (context.batchMode !== "no-batch") {
|
|
280
|
-
context.batchMode = "batch";
|
|
281
|
-
return context;
|
|
282
|
-
}
|
|
283
|
-
let copy = batchedCopies.get(context);
|
|
284
|
-
if (!copy) {
|
|
285
|
-
copy = copyContext(context);
|
|
286
|
-
copy.batchMode = "batch";
|
|
287
|
-
// Its triangles are the original's, built already where it was drawn alone: earcut, at
|
|
288
|
-
// the most a frame of a crowded room took building shapes, runs once for both.
|
|
289
|
-
copy.tessellationOf = context;
|
|
290
|
-
batchedCopies.set(context, copy);
|
|
291
|
-
}
|
|
292
|
-
return copy;
|
|
293
|
-
}
|
|
294
|
-
/** A context destroyed: its batched copy, if it has one, taken for it to destroy too. */
|
|
295
|
-
export function takeBatchedCopy(context) {
|
|
296
|
-
const copy = batchedCopies.get(context);
|
|
297
|
-
batchedCopies.delete(context);
|
|
298
|
-
return copy;
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Vertices of a context from which, under a colour transform, it is drawn
|
|
302
|
-
* alone rather than as a batched copy: Pixi's own line between the
|
|
303
|
-
* Graphics it batches and those it draws alone.
|
|
304
|
-
*/
|
|
305
|
-
const ALONE_VERTICES = 200;
|
|
306
|
-
/** Each shared context's vertices as weighed: it never changes. */
|
|
307
|
-
const weights = new WeakMap();
|
|
308
|
-
/** The points of `path`'s shapes, which Pixi builds once and keeps for the context's build. */
|
|
309
|
-
function pointsOf(path) {
|
|
310
|
-
let points = 0;
|
|
311
|
-
for (const { shape } of path?.shapePath.shapePrimitives ?? []) {
|
|
312
|
-
const polygon = shape.points;
|
|
313
|
-
points += polygon ? polygon.length / 2 : 4;
|
|
314
|
-
}
|
|
315
|
-
return points;
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Vertices a line has a point, as Pixi strokes it: a pixel line's one, a
|
|
319
|
-
* line with round joins some 11 to 15 for a creature's parts (10 taken, so
|
|
320
|
-
* that a short one stays batched), others two.
|
|
321
|
-
*/
|
|
322
|
-
function lineVertices(style) {
|
|
323
|
-
return style.pixelLine ? 1 : style.join === "round" ? 10 : 2;
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Whether `context` has ALONE_VERTICES or more, weighed from its paths
|
|
327
|
-
* before it is built, as a part may show under a transform it then keeps,
|
|
328
|
-
* and lines are swapped for new contexts as they turn: a fill a vertex a
|
|
329
|
-
* point, a line as lineVertices says, a texture four. Weighed once built
|
|
330
|
-
* too, as a view's contexts let go of their paths then (render/tessellate.ts).
|
|
331
|
-
*/
|
|
332
|
-
export function weigh(context) {
|
|
333
|
-
let vertices = weights.get(context);
|
|
334
|
-
if (vertices === undefined) {
|
|
335
|
-
vertices = 0;
|
|
336
|
-
for (const instruction of context.instructions) {
|
|
337
|
-
if (instruction.action === "texture") {
|
|
338
|
-
vertices += 4;
|
|
339
|
-
continue;
|
|
340
|
-
}
|
|
341
|
-
const data = instruction.data;
|
|
342
|
-
vertices +=
|
|
343
|
-
pointsOf(data.path) * (instruction.action === "stroke" ? lineVertices(data.style) : 1);
|
|
344
|
-
vertices += pointsOf(data.hole);
|
|
345
|
-
}
|
|
346
|
-
weights.set(context, vertices);
|
|
347
|
-
}
|
|
348
|
-
return vertices >= ALONE_VERTICES;
|
|
349
|
-
}
|
|
350
|
-
/** The renderers made, and those of them not WebGL, where Pixi's shader takes no colour transform. */
|
|
351
|
-
const renderers = new Set();
|
|
352
|
-
const notWebGL = new Set();
|
|
353
|
-
/** Graphics drawn alone under a colour transform, to be shown as batched copies if a renderer cannot. */
|
|
354
|
-
const shownAlone = new Set();
|
|
355
|
-
/**
|
|
356
|
-
* Notes each renderer as it is made, of any kind, as a renderer that is
|
|
357
|
-
* not WebGL may come after Graphics were shown alone for one that is.
|
|
358
|
-
*/
|
|
359
|
-
export class ColorAloneSystem {
|
|
360
|
-
static extension = {
|
|
361
|
-
type: [ExtensionType.WebGLSystem, ExtensionType.WebGPUSystem, ExtensionType.CanvasSystem],
|
|
362
|
-
name: "flashColorAlone",
|
|
363
|
-
};
|
|
364
|
-
constructor(renderer) {
|
|
365
|
-
renderers.add(this);
|
|
366
|
-
if (renderer.type !== RendererType.WEBGL) {
|
|
367
|
-
notWebGL.add(this);
|
|
368
|
-
for (const g of [...shownAlone]) {
|
|
369
|
-
showFor(g, g.flashColor ?? null);
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
destroy() {
|
|
374
|
-
renderers.delete(this);
|
|
375
|
-
notWebGL.delete(this);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
extensions.add(ColorAloneSystem);
|
|
379
|
-
/** A Graphics destroyed: no longer one to show otherwise. */
|
|
380
|
-
export function forgetShown(g) {
|
|
381
|
-
shownAlone.delete(g);
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* The context a Graphics should draw under `ct`. An unbatched one, as a
|
|
385
|
-
* shape's are (render/tessellate.ts), Pixi draws with its own shader, which
|
|
386
|
-
* has no colour transform, so under one it draws a batched copy; but a
|
|
387
|
-
* large one, as a creature's parts are, is drawn alone still, by the
|
|
388
|
-
* transform table (render/table.ts), whose rows carry a colour transform,
|
|
389
|
-
* or by Pixi's pipe with the colour shader (colorShaderFor),
|
|
390
|
-
* where every renderer is WebGL; a SharedGraphics alone, which forgets it
|
|
391
|
-
* as it goes (render/shared.ts). The
|
|
392
|
-
* context it stands for is shared by every instance of a character, and
|
|
393
|
-
* every text in a font, and is never changed: switched to batched, the
|
|
394
|
-
* Graphics of the others, made unbatched, drew nothing.
|
|
395
|
-
*
|
|
396
|
-
* In a settled group, batched copies are packed once and drawn in a few
|
|
397
|
-
* calls. In one rebuilt often, as an animated character's is, a batched
|
|
398
|
-
* copy's vertices were packed again with every rebuild, and a tween of the
|
|
399
|
-
* transform repacked them each frame: a creature fading out packed and
|
|
400
|
-
* uploaded every vertex of its every part, frame after frame. Drawn alone,
|
|
401
|
-
* a draw writes a row or a few uniforms instead. Small ones stay batched:
|
|
402
|
-
* a draw apiece costs more than packing their few vertices
|
|
403
|
-
* (`bench.ts --branches 64`).
|
|
404
|
-
*/
|
|
405
|
-
export function showFor(g, ct) {
|
|
406
|
-
const shared = g.shared ?? g.context;
|
|
407
|
-
const alone = !!ct &&
|
|
408
|
-
!g.settled &&
|
|
409
|
-
!!g.show &&
|
|
410
|
-
shared.batchMode === "no-batch" &&
|
|
411
|
-
renderers.size > 0 &&
|
|
412
|
-
notWebGL.size === 0 &&
|
|
413
|
-
weigh(shared);
|
|
414
|
-
const want = alone || !(ct || g.settled) ? shared : batched(shared);
|
|
415
|
-
if (alone) {
|
|
416
|
-
shownAlone.add(g);
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
shownAlone.delete(g);
|
|
420
|
-
}
|
|
421
|
-
if (g.context !== want) {
|
|
422
|
-
if (g.show) {
|
|
423
|
-
g.show(want);
|
|
424
|
-
}
|
|
425
|
-
else {
|
|
426
|
-
g.context = want;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
g.shared = shared;
|
|
430
|
-
}
|
|
431
|
-
/** Pixi's graphics shader with the colour batcher's colour, by texture count. */
|
|
432
|
-
const aloneShaders = new Map();
|
|
433
|
-
function aloneShader(maxTextures) {
|
|
434
|
-
let shader = aloneShaders.get(maxTextures);
|
|
435
|
-
if (!shader) {
|
|
436
|
-
shader = new Shader({
|
|
437
|
-
glProgram: compileHighShaderGlProgram({
|
|
438
|
-
name: `${NAME}-alone`,
|
|
439
|
-
bits: [
|
|
440
|
-
aloneBitGl,
|
|
441
|
-
generateTextureBatchBitGl(maxTextures),
|
|
442
|
-
localUniformBitGl,
|
|
443
|
-
roundPixelsBitGl,
|
|
444
|
-
],
|
|
445
|
-
}),
|
|
446
|
-
resources: {
|
|
447
|
-
localUniforms: new UniformGroup({
|
|
448
|
-
uColor: { value: new Float32Array([1, 1, 1, 1]), type: "vec4<f32>" },
|
|
449
|
-
uTransformMatrix: { value: new Matrix(), type: "mat3x3<f32>" },
|
|
450
|
-
uRound: { value: 0, type: "f32" },
|
|
451
|
-
}),
|
|
452
|
-
flashUniforms: new UniformGroup({
|
|
453
|
-
uOwn: { value: new Float32Array(4), type: "vec4<f32>" },
|
|
454
|
-
uMul: { value: new Float32Array(4), type: "vec4<f32>" },
|
|
455
|
-
uAdd: { value: new Float32Array(4), type: "vec4<f32>" },
|
|
456
|
-
}),
|
|
457
|
-
batchSamplers: getBatchSamplersUniformGroup(maxTextures),
|
|
458
|
-
},
|
|
459
|
-
});
|
|
460
|
-
aloneShaders.set(maxTextures, shader);
|
|
461
|
-
}
|
|
462
|
-
return shader;
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* The shader a Graphics drawn alone is drawn with (render/hooks.ts): under
|
|
466
|
-
* a colour transform, as in a render group that has not settled, the
|
|
467
|
-
* colour shader, the transform and the Graphics' own tint and alpha in its
|
|
468
|
-
* uniforms, which Pixi's pipe then fills its local uniforms of; otherwise
|
|
469
|
-
* Pixi's, from null. Its context, shared, is never packed: a gradient's or
|
|
470
|
-
* a bitmap's, which the table cannot draw. It leans on the order of the
|
|
471
|
-
* shader's sections, Pixi's local uniforms' colour applied in the vertex's
|
|
472
|
-
* main before aloneBitGl's end replaces it.
|
|
473
|
-
*/
|
|
474
|
-
export function colorShaderFor(graphics, renderer) {
|
|
475
|
-
const ct = graphics.flashColor;
|
|
476
|
-
if (!ct || renderer.type !== RendererType.WEBGL) {
|
|
477
|
-
return null;
|
|
478
|
-
}
|
|
479
|
-
const shader = aloneShader(renderer.limits.maxBatchableTextures);
|
|
480
|
-
const uniforms = shader.resources.flashUniforms.uniforms;
|
|
481
|
-
const own = uniforms.uOwn;
|
|
482
|
-
const bgr = graphics.localColor;
|
|
483
|
-
own[0] = (bgr & 0xff) / 255;
|
|
484
|
-
own[1] = ((bgr >> 8) & 0xff) / 255;
|
|
485
|
-
own[2] = ((bgr >> 16) & 0xff) / 255;
|
|
486
|
-
own[3] = graphics.localAlpha;
|
|
487
|
-
const mul = uniforms.uMul;
|
|
488
|
-
mul[0] = ct.rMul;
|
|
489
|
-
mul[1] = ct.gMul;
|
|
490
|
-
mul[2] = ct.bMul;
|
|
491
|
-
mul[3] = ct.aMul;
|
|
492
|
-
const add = uniforms.uAdd;
|
|
493
|
-
add[0] = ct.rAdd / 255;
|
|
494
|
-
add[1] = ct.gAdd / 255;
|
|
495
|
-
add[2] = ct.bAdd / 255;
|
|
496
|
-
add[3] = ct.aAdd / 255;
|
|
497
|
-
return shader;
|
|
498
|
-
}
|
|
499
|
-
/**
|
|
500
|
-
* Draw `leaf` and what is in it under `ct`, or under Pixi's tint again for
|
|
501
|
-
* null. Moving between batchers rebuilds the render group's instructions;
|
|
502
|
-
* another transform in the same batcher packs the vertices again. A
|
|
503
|
-
* Graphics the table draws, before and after, reads its transform as its
|
|
504
|
-
* row is written, and needs neither.
|
|
505
|
-
*/
|
|
506
|
-
export function setFlashColor(leaf, ct) {
|
|
507
|
-
const colored = leaf;
|
|
508
|
-
const was = colored.flashColor ?? null;
|
|
509
|
-
if (was === ct) {
|
|
510
|
-
return;
|
|
511
|
-
}
|
|
512
|
-
colored.flashColor = ct;
|
|
513
|
-
let drawnAlone = false;
|
|
514
|
-
if (leaf instanceof Graphics) {
|
|
515
|
-
const before = leaf.context;
|
|
516
|
-
showFor(leaf, ct);
|
|
517
|
-
drawnAlone = leaf.context === before && before.batchMode === "no-batch";
|
|
518
|
-
}
|
|
519
|
-
const view = leaf;
|
|
520
|
-
if (!drawnAlone && (was === null) !== (ct === null)) {
|
|
521
|
-
const group = (leaf.renderGroup ?? leaf.parentRenderGroup);
|
|
522
|
-
if (group) {
|
|
523
|
-
group.structureDidChange = true;
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
else if (!drawnAlone) {
|
|
527
|
-
view.onViewUpdate?.();
|
|
528
|
-
}
|
|
529
|
-
for (const child of leaf.children) {
|
|
530
|
-
setFlashColor(child, ct);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
//# sourceMappingURL=color.js.map
|
package/dist/render/color.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/render/color.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,iBAAiB,EACjB,eAAe,EACf,OAAO,EAEP,MAAM,EACN,WAAW,EAEX,0BAA0B,EAC1B,2BAA2B,EAG3B,aAAa,EACb,UAAU,EACV,QAAQ,EACR,QAAQ,EAGR,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,iBAAiB,EACjB,MAAM,EAEN,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,IAAI,GAAG,aAAa,CAAC;AAE3B,oFAAoF;AACpF,MAAM,WAAW,GAAG,EAAE,CAAC;AAYvB,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE;QACN,MAAM,EAAE;;;;;;KAMP;QACD,IAAI,EAAE;;;KAGL;QACD,kGAAkG;QAClG,GAAG,EAAE,kBAAkB;KACxB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;;;KAGP;QACD,GAAG,EAAE;;;;;;;;KAQJ;KACF;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE;;;KAGP;QACD,kGAAkG;QAClG,GAAG,EAAE;;;;;KAKJ;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;;;KAGP;QACD,GAAG,EAAE;;;;;;;;KAQJ;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE;QACN,MAAM,EAAE;;;;;;KAMP;QACD,IAAI,EAAE;;;KAGL;QACD,GAAG,EAAE,kBAAkB;KACxB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;;;KAGP;QACD,GAAG,EAAE;;;;;;;;KAQJ;KACF;CACF,CAAC;AAEF,MAAM,WAAY,SAAQ,MAAM;IACrB,WAAW,CAAS;IAE7B,YAAY,WAAmB;QAC7B,KAAK,CAAC;YACJ,SAAS,EAAE,0BAA0B,CAAC;gBACpC,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC,UAAU,EAAE,yBAAyB,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;aAC7E,CAAC;YACF,UAAU,EAAE,2BAA2B,CAAC;gBACtC,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC;aACvE,CAAC;YACF,SAAS,EAAE,EAAE,aAAa,EAAE,4BAA4B,CAAC,WAAW,CAAC,EAAE;SACxE,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,aAAc,SAAQ,QAAQ;IAClC;QACE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;YACzB,KAAK,EAAE,wBAAwB;YAC/B,KAAK,EAAE,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ;YAChD,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC;YACJ,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC7D,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;gBACvD,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC1D,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACtE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACzD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;aAC1D;YACD,WAAW,EAAE,IAAI,MAAM,CAAC;gBACtB,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;gBACxB,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ;gBAC/C,WAAW,EAAE,KAAK;aACnB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE/C;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,OAAc;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,UAGP,CAAC;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,QAAQ,CAAC;IACnC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,CACL,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,IAAI,GAAmB;IAC3B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,MAAM,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEjE,IAAI,GAAG,IAAI,CAAC;IACZ,UAAU,GAAG,WAAW,CAAC;IACzB,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IAC/B,MAAM,CAAc;IAEpB,YAAY,OAAuB;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QACtC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,8FAA8F;IACtF,IAAI,CACV,GAAiB,EACjB,GAAgB,EAChB,EAAU,EACV,KAAa,EACb,OAAe,EACf,EAAkB;QAElB,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QACtB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;IAC9B,CAAC;IAED,cAAc,CACZ,OAAoC,EACpC,GAAiB,EACjB,GAAgB,EAChB,KAAa,EACb,SAAiB;QAEjB,MAAM,KAAK,GAAG,OAA2B,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;QACnE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,IAAI,WAAW,CAAC;QACvB,CAAC;IACH,CAAC;IAED,kBAAkB,CAChB,OAAoC,EACpC,GAAiB,EACjB,GAAgB,EAChB,KAAa,EACb,SAAiB;QAEjB,MAAM,KAAK,GAAG,OAA2B,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE;YACxE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QACF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,IAAI,OAAO,YAAY,iBAAiB,IAAI,OAAO,YAAY,eAAe,EAAE,CAAC;QAC/E,IAAK,OAAO,CAAC,UAA6B,EAAE,UAAU,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,0GAA0G;AAC1G,MAAM,aAAa,GAAG,IAAI,OAAO,EAAoC,CAAC;AAEtE;;;GAGG;AACH,SAAS,OAAO,CAAC,OAAwB;IACvC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,uFAAuF;QACvF,+EAA+E;QAC/E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAcD;;;;GAIG;AACH,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,mEAAmE;AACnE,MAAM,OAAO,GAAG,IAAI,OAAO,EAA2B,CAAC;AAEvD,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,IAA8B;IAC9C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAI,KAA+B,CAAC,MAAM,CAAC;QACxD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAA6C;IACjE,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,OAAwB;IAC5C,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACrC,QAAQ,IAAI,CAAC,CAAC;gBACd,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAIxB,CAAC;YACF,QAAQ;gBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,IAAI,cAAc,CAAC;AACpC,CAAC;AAED,sGAAsG;AACtG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;AACnC,yGAAyG;AACzG,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE9C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,SAAS,GAAG;QACjB,IAAI,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;QACzF,IAAI,EAAE,iBAAiB;KACf,CAAC;IAEX,YAAY,QAA0B;QACpC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;YACzC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,CAAC,EAAG,CAAa,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF;AAED,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEjC,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,CAAkB;IAC5C,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,OAAO,CAAC,CAAkB,EAAE,EAAyB;IACnE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC;IACrC,MAAM,KAAK,GACT,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,OAAO;QACV,CAAC,CAAC,CAAC,CAAC,IAAI;QACR,MAAM,CAAC,SAAS,KAAK,UAAU;QAC/B,SAAS,CAAC,IAAI,GAAG,CAAC;QAClB,QAAQ,CAAC,IAAI,KAAK,CAAC;QACnB,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AACpB,CAAC;AAED,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE/C,SAAS,WAAW,CAAC,WAAmB;IACtC,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,MAAM,CAAC;YAClB,SAAS,EAAE,0BAA0B,CAAC;gBACpC,IAAI,EAAE,GAAG,IAAI,QAAQ;gBACrB,IAAI,EAAE;oBACJ,UAAU;oBACV,yBAAyB,CAAC,WAAW,CAAC;oBACtC,iBAAiB;oBACjB,gBAAgB;iBACjB;aACF,CAAC;YACF,SAAS,EAAE;gBACT,aAAa,EAAE,IAAI,YAAY,CAAC;oBAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;oBACpE,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;oBAC9D,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;iBAClC,CAAC;gBACF,aAAa,EAAE,IAAI,YAAY,CAAC;oBAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;oBACvD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;oBACvD,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;iBACxD,CAAC;gBACF,aAAa,EAAE,4BAA4B,CAAC,WAAW,CAAC;aACzD;SACF,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,QAAkB;IACnE,MAAM,EAAE,GAAI,QAAoB,CAAC,UAAU,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAI,MAAM,CAAC,SAAS,CAAC,aAA8B,CAAC,QAAQ,CAAC;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAoB,CAAC;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;IAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAoB,CAAC;IAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAoB,CAAC;IAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,EAAyB;IACtE,MAAM,OAAO,GAAG,IAAe,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IACvC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClB,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC;IAC1E,CAAC;IAED,MAAM,IAAI,GAAG,IAAiD,CAAC;IAC/D,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAoC,CAAC;QAC9F,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { type Renderer } from "pixi.js";
|
|
2
|
-
import type { Node } from "./node.js";
|
|
3
|
-
import type { Planes } from "./planes.js";
|
|
4
|
-
/** The view's blending of the objects it syncs. */
|
|
5
|
-
export declare class Compositing {
|
|
6
|
-
private readonly renderer;
|
|
7
|
-
private readonly planes;
|
|
8
|
-
/** The view, whose filter units a layer's chain is made at. */
|
|
9
|
-
private readonly units;
|
|
10
|
-
/** Whether the renderer was found to lack the back buffer that filter-backed blends read. */
|
|
11
|
-
private backBufferChecked;
|
|
12
|
-
/** The nodes on the list blended with erase or alpha outside any layer (checkStageClear). */
|
|
13
|
-
private readonly clearing;
|
|
14
|
-
/** The nodes on the list blended outside any layer in a mode the GPU blends as Flash only over opaque pixels. */
|
|
15
|
-
private readonly overOpaque;
|
|
16
|
-
/** Whether the stage's pixels may be less than opaque below a blend (checkStageClear). */
|
|
17
|
-
private stageClear;
|
|
18
|
-
constructor(renderer: Renderer, planes: Planes,
|
|
19
|
-
/** The view, whose filter units a layer's chain is made at. */
|
|
20
|
-
units: {
|
|
21
|
-
readonly filterUnits: number;
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* A node synced on the list: noted where it may leave the stage's pixels
|
|
25
|
-
* less than opaque or blends only over opaque ones, and blended. `refilled`
|
|
26
|
-
* is whether its filters were made again, which a direct blend sets again.
|
|
27
|
-
*/
|
|
28
|
-
sync(node: Node, isolated: boolean, refilled: boolean): void;
|
|
29
|
-
/** A node off the list, which no longer clears the stage or blends over it. */
|
|
30
|
-
forget(node: Node): void;
|
|
31
|
-
/**
|
|
32
|
-
* A filter-backed blend reads Pixi's back buffer, which WebGL has only
|
|
33
|
-
* with `useBackBuffer: true`; without it that blend draws as normal.
|
|
34
|
-
*/
|
|
35
|
-
checkBackBuffer(): void;
|
|
36
|
-
/**
|
|
37
|
-
* Give a blend the GPU draws a layer of its own, kept while nothing in it changes: an empty
|
|
38
|
-
* chain, through which the object is drawn once into a texture and the texture blended by the
|
|
39
|
-
* GPU over what is behind (directBlend), and then only the texture while it stands, as a filtered
|
|
40
|
-
* object's output is. Without one, a blend filter drew the object into a layer of its own and
|
|
41
|
-
* copied what is behind it on every frame. Only a blend the GPU draws as Flash does, of an
|
|
42
|
-
* object of more than one draw (a single fill
|
|
43
|
-
* blends as it is drawn), with no filters of its own, outside any layer; the chain goes again
|
|
44
|
-
* once that no longer holds. Multiply and subtract are the GPU's only over an opaque stage
|
|
45
|
-
* (directBlend), which their layer is blended by while it is; else by a blend filter after its
|
|
46
|
-
* chain. Whether the object's chain was made or dropped: a new one is
|
|
47
|
-
* stale, so draws the object afresh.
|
|
48
|
-
*/
|
|
49
|
-
private layer;
|
|
50
|
-
/** Whether the GPU blends `mode` as Flash does here, as directBlend has it for a layer. */
|
|
51
|
-
private gpuBlends;
|
|
52
|
-
/** Blend `node` in `direct` by the GPU's own blending, or by its blend filter for null. */
|
|
53
|
-
private blendDirectly;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the stage's pixels may be less than opaque as what is below a
|
|
56
|
-
* blend: a clear background, or an erase or alpha blend outside any layer
|
|
57
|
-
* on the list, which clears what it covers on the stage as adl does.
|
|
58
|
-
* Where that changes, the multiply and subtract blends drawn over it
|
|
59
|
-
* choose again, before what is drawn this frame.
|
|
60
|
-
*/
|
|
61
|
-
checkStageClear(): void;
|
|
62
|
-
/**
|
|
63
|
-
* The mode `node` is blended in by the GPU's own blending, where that is
|
|
64
|
-
* what Flash draws, else null for a blend filter (render/blend.ts). Flash
|
|
65
|
-
* blends the object as one layer, so it must be drawn at once: as a
|
|
66
|
-
* single fill, or as its filters' result. Flash's add and screen are the
|
|
67
|
-
* GPU's over any backdrop, its subtract and multiply over an opaque one,
|
|
68
|
-
* to 8-bit rounding (the `blend-formulas` case): over a clear pixel GPU
|
|
69
|
-
* multiply drops the object's own colour, which Flash keeps, and
|
|
70
|
-
* subtract its alpha. An isolated layer's ground may be clear where the
|
|
71
|
-
* stage's is not, so none is used in one. Its lighten, darken and
|
|
72
|
-
* difference blend the straight colours, which the GPU's min and max of
|
|
73
|
-
* premultiplied ones are only where opaque.
|
|
74
|
-
*/
|
|
75
|
-
private directBlend;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=compositing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compositing.d.ts","sourceRoot":"","sources":["../../src/render/compositing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,QAAQ,EAAgB,MAAM,SAAS,CAAC;AAGxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,mDAAmD;AACnD,qBAAa,WAAW;IAWpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK;IAbxB,6FAA6F;IAC7F,OAAO,CAAC,iBAAiB,CAAS;IAClC,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,iHAAiH;IACjH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,0FAA0F;IAC1F,OAAO,CAAC,UAAU,CAAQ;IAE1B,YACmB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;IAC/B,+DAA+D;IAC9C,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EACtD;IAEJ;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAgB3D;IAED,+EAA+E;IAC/E,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGvB;IAED;;;OAGG;IACH,eAAe,IAAI,IAAI,CAYtB;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,KAAK;IAsBb,2FAA2F;IAC3F,OAAO,CAAC,SAAS;IAgBjB,2FAA2F;IAC3F,OAAO,CAAC,aAAa;IAuBrB;;;;;;OAMG;IACH,eAAe,IAAI,IAAI,CAWtB;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW;CAmBpB"}
|