@esotericsoftware/spine-pixi-v8 4.2.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/BatchableSpineSlot.d.ts +58 -0
- package/dist/BatchableSpineSlot.js +103 -0
- package/dist/Spine.d.ts +243 -0
- package/dist/Spine.js +629 -0
- package/dist/SpineDebugRenderer.d.ts +108 -0
- package/dist/SpineDebugRenderer.js +473 -0
- package/dist/SpinePipe.d.ts +45 -0
- package/dist/SpinePipe.js +136 -0
- package/dist/SpineTexture.d.ts +44 -0
- package/dist/SpineTexture.js +116 -0
- package/dist/assets/atlasLoader.d.ts +33 -0
- package/dist/assets/atlasLoader.js +112 -0
- package/dist/assets/skeletonLoader.d.ts +29 -0
- package/dist/assets/skeletonLoader.js +60 -0
- package/dist/darktint/DarkTintBatchGeometry.d.ts +4 -0
- package/dist/darktint/DarkTintBatchGeometry.js +57 -0
- package/dist/darktint/DarkTintBatcher.d.ts +21 -0
- package/dist/darktint/DarkTintBatcher.js +101 -0
- package/dist/darktint/DarkTintShader.d.ts +4 -0
- package/dist/darktint/DarkTintShader.js +32 -0
- package/dist/darktint/darkTintBit.d.ts +22 -0
- package/dist/darktint/darkTintBit.js +49 -0
- package/dist/iife/spine-pixi-v8.js +13425 -0
- package/dist/iife/spine-pixi-v8.js.map +7 -0
- package/dist/iife/spine-pixi-v8.min.js +27 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +42 -0
- package/dist/require-shim.d.ts +33 -0
- package/dist/require-shim.js +39 -0
- package/package.json +39 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Buffer, BufferUsage, Geometry } from 'pixi.js';
|
|
2
|
+
const placeHolderBufferData = new Float32Array(1);
|
|
3
|
+
const placeHolderIndexData = new Uint32Array(1);
|
|
4
|
+
export class DarkTintBatchGeometry extends Geometry {
|
|
5
|
+
constructor() {
|
|
6
|
+
const vertexSize = 7;
|
|
7
|
+
const attributeBuffer = new Buffer({
|
|
8
|
+
data: placeHolderBufferData,
|
|
9
|
+
label: 'attribute-batch-buffer',
|
|
10
|
+
usage: BufferUsage.VERTEX | BufferUsage.COPY_DST,
|
|
11
|
+
shrinkToFit: false,
|
|
12
|
+
});
|
|
13
|
+
const indexBuffer = new Buffer({
|
|
14
|
+
data: placeHolderIndexData,
|
|
15
|
+
label: 'index-batch-buffer',
|
|
16
|
+
usage: BufferUsage.INDEX | BufferUsage.COPY_DST, // | BufferUsage.STATIC,
|
|
17
|
+
shrinkToFit: false,
|
|
18
|
+
});
|
|
19
|
+
const stride = vertexSize * 4;
|
|
20
|
+
super({
|
|
21
|
+
attributes: {
|
|
22
|
+
aPosition: {
|
|
23
|
+
buffer: attributeBuffer,
|
|
24
|
+
format: 'float32x2',
|
|
25
|
+
stride,
|
|
26
|
+
offset: 0,
|
|
27
|
+
},
|
|
28
|
+
aUV: {
|
|
29
|
+
buffer: attributeBuffer,
|
|
30
|
+
format: 'float32x2',
|
|
31
|
+
stride,
|
|
32
|
+
offset: 2 * 4,
|
|
33
|
+
},
|
|
34
|
+
aColor: {
|
|
35
|
+
buffer: attributeBuffer,
|
|
36
|
+
format: 'unorm8x4',
|
|
37
|
+
stride,
|
|
38
|
+
offset: 4 * 4,
|
|
39
|
+
},
|
|
40
|
+
aDarkColor: {
|
|
41
|
+
buffer: attributeBuffer,
|
|
42
|
+
format: 'unorm8x4',
|
|
43
|
+
stride,
|
|
44
|
+
offset: 5 * 4,
|
|
45
|
+
},
|
|
46
|
+
aTextureIdAndRound: {
|
|
47
|
+
buffer: attributeBuffer,
|
|
48
|
+
format: 'uint16x2',
|
|
49
|
+
stride,
|
|
50
|
+
offset: 6 * 4,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
indexBuffer
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1RpbnRCYXRjaEdlb21ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Rhcmt0aW50L0RhcmtUaW50QmF0Y2hHZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWhELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxRQUFRO0lBQ2xEO1FBQ0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDO1lBQ2xDLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUTtZQUNoRCxXQUFXLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQztZQUM5QixJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSx3QkFBd0I7WUFDekUsV0FBVyxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUU5QixLQUFLLENBQUM7WUFDTCxVQUFVLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFO29CQUNWLE1BQU0sRUFBRSxlQUFlO29CQUN2QixNQUFNLEVBQUUsV0FBVztvQkFDbkIsTUFBTTtvQkFDTixNQUFNLEVBQUUsQ0FBQztpQkFDVDtnQkFDRCxHQUFHLEVBQUU7b0JBQ0osTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxXQUFXO29CQUNuQixNQUFNO29CQUNOLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDYjtnQkFDRCxNQUFNLEVBQUU7b0JBQ1AsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxVQUFVO29CQUNsQixNQUFNO29CQUNOLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDYjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxVQUFVO29CQUNsQixNQUFNO29CQUNOLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDYjtnQkFDRCxrQkFBa0IsRUFBRTtvQkFDbkIsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxVQUFVO29CQUNsQixNQUFNO29CQUNOLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDYjthQUNEO1lBQ0QsV0FBVztTQUNYLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciwgQnVmZmVyVXNhZ2UsIEdlb21ldHJ5IH0gZnJvbSAncGl4aS5qcyc7XG5cbmNvbnN0IHBsYWNlSG9sZGVyQnVmZmVyRGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG5jb25zdCBwbGFjZUhvbGRlckluZGV4RGF0YSA9IG5ldyBVaW50MzJBcnJheSgxKTtcblxuZXhwb3J0IGNsYXNzIERhcmtUaW50QmF0Y2hHZW9tZXRyeSBleHRlbmRzIEdlb21ldHJ5IHtcblx0Y29uc3RydWN0b3IgKCkge1xuXHRcdGNvbnN0IHZlcnRleFNpemUgPSA3O1xuXG5cdFx0Y29uc3QgYXR0cmlidXRlQnVmZmVyID0gbmV3IEJ1ZmZlcih7XG5cdFx0XHRkYXRhOiBwbGFjZUhvbGRlckJ1ZmZlckRhdGEsXG5cdFx0XHRsYWJlbDogJ2F0dHJpYnV0ZS1iYXRjaC1idWZmZXInLFxuXHRcdFx0dXNhZ2U6IEJ1ZmZlclVzYWdlLlZFUlRFWCB8IEJ1ZmZlclVzYWdlLkNPUFlfRFNULFxuXHRcdFx0c2hyaW5rVG9GaXQ6IGZhbHNlLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgaW5kZXhCdWZmZXIgPSBuZXcgQnVmZmVyKHtcblx0XHRcdGRhdGE6IHBsYWNlSG9sZGVySW5kZXhEYXRhLFxuXHRcdFx0bGFiZWw6ICdpbmRleC1iYXRjaC1idWZmZXInLFxuXHRcdFx0dXNhZ2U6IEJ1ZmZlclVzYWdlLklOREVYIHwgQnVmZmVyVXNhZ2UuQ09QWV9EU1QsIC8vIHwgQnVmZmVyVXNhZ2UuU1RBVElDLFxuXHRcdFx0c2hyaW5rVG9GaXQ6IGZhbHNlLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RyaWRlID0gdmVydGV4U2l6ZSAqIDQ7XG5cblx0XHRzdXBlcih7XG5cdFx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRcdGFQb3NpdGlvbjoge1xuXHRcdFx0XHRcdGJ1ZmZlcjogYXR0cmlidXRlQnVmZmVyLFxuXHRcdFx0XHRcdGZvcm1hdDogJ2Zsb2F0MzJ4MicsXG5cdFx0XHRcdFx0c3RyaWRlLFxuXHRcdFx0XHRcdG9mZnNldDogMCxcblx0XHRcdFx0fSxcblx0XHRcdFx0YVVWOiB7XG5cdFx0XHRcdFx0YnVmZmVyOiBhdHRyaWJ1dGVCdWZmZXIsXG5cdFx0XHRcdFx0Zm9ybWF0OiAnZmxvYXQzMngyJyxcblx0XHRcdFx0XHRzdHJpZGUsXG5cdFx0XHRcdFx0b2Zmc2V0OiAyICogNCxcblx0XHRcdFx0fSxcblx0XHRcdFx0YUNvbG9yOiB7XG5cdFx0XHRcdFx0YnVmZmVyOiBhdHRyaWJ1dGVCdWZmZXIsXG5cdFx0XHRcdFx0Zm9ybWF0OiAndW5vcm04eDQnLFxuXHRcdFx0XHRcdHN0cmlkZSxcblx0XHRcdFx0XHRvZmZzZXQ6IDQgKiA0LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhRGFya0NvbG9yOiB7XG5cdFx0XHRcdFx0YnVmZmVyOiBhdHRyaWJ1dGVCdWZmZXIsXG5cdFx0XHRcdFx0Zm9ybWF0OiAndW5vcm04eDQnLFxuXHRcdFx0XHRcdHN0cmlkZSxcblx0XHRcdFx0XHRvZmZzZXQ6IDUgKiA0LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhVGV4dHVyZUlkQW5kUm91bmQ6IHtcblx0XHRcdFx0XHRidWZmZXI6IGF0dHJpYnV0ZUJ1ZmZlcixcblx0XHRcdFx0XHRmb3JtYXQ6ICd1aW50MTZ4MicsXG5cdFx0XHRcdFx0c3RyaWRlLFxuXHRcdFx0XHRcdG9mZnNldDogNiAqIDQsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0aW5kZXhCdWZmZXJcblx0XHR9KTtcblx0fVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Batcher, DefaultBatchableMeshElement, DefaultBatchableQuadElement, ExtensionType, Shader } from 'pixi.js';
|
|
2
|
+
import { DarkTintBatchGeometry } from './DarkTintBatchGeometry';
|
|
3
|
+
/** The default batcher is used to batch quads and meshes. */
|
|
4
|
+
export declare class DarkTintBatcher extends Batcher {
|
|
5
|
+
/** @ignore */
|
|
6
|
+
static extension: {
|
|
7
|
+
readonly type: readonly [ExtensionType.Batcher];
|
|
8
|
+
readonly name: "darkTint";
|
|
9
|
+
};
|
|
10
|
+
geometry: DarkTintBatchGeometry;
|
|
11
|
+
shader: Shader;
|
|
12
|
+
name: "darkTint";
|
|
13
|
+
/** The size of one attribute. 1 = 32 bit. x, y, u, v, color, darkColor, textureIdAndRound -> total = 7 */
|
|
14
|
+
vertexSize: number;
|
|
15
|
+
packAttributes(element: DefaultBatchableMeshElement & {
|
|
16
|
+
darkColor: number;
|
|
17
|
+
}, float32View: Float32Array, uint32View: Uint32Array, index: number, textureId: number): void;
|
|
18
|
+
packQuadAttributes(element: DefaultBatchableQuadElement & {
|
|
19
|
+
darkColor: number;
|
|
20
|
+
}, float32View: Float32Array, uint32View: Uint32Array, index: number, textureId: number): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Batcher, Color, extensions, ExtensionType } from 'pixi.js';
|
|
2
|
+
import { DarkTintBatchGeometry } from './DarkTintBatchGeometry';
|
|
3
|
+
import { DarkTintShader } from './DarkTintShader';
|
|
4
|
+
let defaultShader = null;
|
|
5
|
+
/** The default batcher is used to batch quads and meshes. */
|
|
6
|
+
export class DarkTintBatcher extends Batcher {
|
|
7
|
+
/** @ignore */
|
|
8
|
+
static extension = {
|
|
9
|
+
type: [
|
|
10
|
+
ExtensionType.Batcher,
|
|
11
|
+
],
|
|
12
|
+
name: 'darkTint',
|
|
13
|
+
};
|
|
14
|
+
geometry = new DarkTintBatchGeometry();
|
|
15
|
+
shader = defaultShader || (defaultShader = new DarkTintShader(this.maxTextures));
|
|
16
|
+
name = DarkTintBatcher.extension.name;
|
|
17
|
+
/** The size of one attribute. 1 = 32 bit. x, y, u, v, color, darkColor, textureIdAndRound -> total = 7 */
|
|
18
|
+
vertexSize = 7;
|
|
19
|
+
packAttributes(element, float32View, uint32View, index, textureId) {
|
|
20
|
+
const textureIdAndRound = (textureId << 16) | (element.roundPixels & 0xFFFF);
|
|
21
|
+
const wt = element.transform;
|
|
22
|
+
const a = wt.a;
|
|
23
|
+
const b = wt.b;
|
|
24
|
+
const c = wt.c;
|
|
25
|
+
const d = wt.d;
|
|
26
|
+
const tx = wt.tx;
|
|
27
|
+
const ty = wt.ty;
|
|
28
|
+
const { positions, uvs } = element;
|
|
29
|
+
const argb = element.color;
|
|
30
|
+
const worldAlpha = ((argb >> 24) & 0xFF) / 255;
|
|
31
|
+
const darkColor = Color.shared.setValue(element.darkColor).premultiply(worldAlpha, true).toPremultiplied(1, false);
|
|
32
|
+
const offset = element.attributeOffset;
|
|
33
|
+
const end = offset + element.attributeSize;
|
|
34
|
+
for (let i = offset; i < end; i++) {
|
|
35
|
+
const i2 = i * 2;
|
|
36
|
+
const x = positions[i2];
|
|
37
|
+
const y = positions[(i2) + 1];
|
|
38
|
+
float32View[index++] = (a * x) + (c * y) + tx;
|
|
39
|
+
float32View[index++] = (d * y) + (b * x) + ty;
|
|
40
|
+
float32View[index++] = uvs[i2];
|
|
41
|
+
float32View[index++] = uvs[(i2) + 1];
|
|
42
|
+
uint32View[index++] = argb;
|
|
43
|
+
uint32View[index++] = darkColor;
|
|
44
|
+
uint32View[index++] = textureIdAndRound;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
packQuadAttributes(element, float32View, uint32View, index, textureId) {
|
|
48
|
+
const texture = element.texture;
|
|
49
|
+
const wt = element.transform;
|
|
50
|
+
const a = wt.a;
|
|
51
|
+
const b = wt.b;
|
|
52
|
+
const c = wt.c;
|
|
53
|
+
const d = wt.d;
|
|
54
|
+
const tx = wt.tx;
|
|
55
|
+
const ty = wt.ty;
|
|
56
|
+
const bounds = element.bounds;
|
|
57
|
+
const w0 = bounds.maxX;
|
|
58
|
+
const w1 = bounds.minX;
|
|
59
|
+
const h0 = bounds.maxY;
|
|
60
|
+
const h1 = bounds.minY;
|
|
61
|
+
const uvs = texture.uvs;
|
|
62
|
+
// _ _ _ _
|
|
63
|
+
// a b g r
|
|
64
|
+
const argb = element.color;
|
|
65
|
+
const darkColor = element.darkColor;
|
|
66
|
+
const textureIdAndRound = (textureId << 16) | (element.roundPixels & 0xFFFF);
|
|
67
|
+
float32View[index + 0] = (a * w1) + (c * h1) + tx;
|
|
68
|
+
float32View[index + 1] = (d * h1) + (b * w1) + ty;
|
|
69
|
+
float32View[index + 2] = uvs.x0;
|
|
70
|
+
float32View[index + 3] = uvs.y0;
|
|
71
|
+
uint32View[index + 4] = argb;
|
|
72
|
+
uint32View[index + 5] = darkColor;
|
|
73
|
+
uint32View[index + 6] = textureIdAndRound;
|
|
74
|
+
// xy
|
|
75
|
+
float32View[index + 7] = (a * w0) + (c * h1) + tx;
|
|
76
|
+
float32View[index + 8] = (d * h1) + (b * w0) + ty;
|
|
77
|
+
float32View[index + 9] = uvs.x1;
|
|
78
|
+
float32View[index + 10] = uvs.y1;
|
|
79
|
+
uint32View[index + 11] = argb;
|
|
80
|
+
uint32View[index + 12] = darkColor;
|
|
81
|
+
uint32View[index + 13] = textureIdAndRound;
|
|
82
|
+
// xy
|
|
83
|
+
float32View[index + 14] = (a * w0) + (c * h0) + tx;
|
|
84
|
+
float32View[index + 15] = (d * h0) + (b * w0) + ty;
|
|
85
|
+
float32View[index + 16] = uvs.x2;
|
|
86
|
+
float32View[index + 17] = uvs.y2;
|
|
87
|
+
uint32View[index + 18] = argb;
|
|
88
|
+
uint32View[index + 19] = darkColor;
|
|
89
|
+
uint32View[index + 20] = textureIdAndRound;
|
|
90
|
+
// xy
|
|
91
|
+
float32View[index + 21] = (a * w1) + (c * h0) + tx;
|
|
92
|
+
float32View[index + 22] = (d * h0) + (b * w1) + ty;
|
|
93
|
+
float32View[index + 23] = uvs.x3;
|
|
94
|
+
float32View[index + 24] = uvs.y3;
|
|
95
|
+
uint32View[index + 25] = argb;
|
|
96
|
+
uint32View[index + 26] = darkColor;
|
|
97
|
+
uint32View[index + 27] = textureIdAndRound;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
extensions.add(DarkTintBatcher);
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1RpbnRCYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Rhcmt0aW50L0RhcmtUaW50QmF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sT0FBTyxFQUNQLEtBQUssRUFHTCxVQUFVLEVBQ1YsYUFBYSxFQUViLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDO0FBRXhDLDZEQUE2RDtBQUM3RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxPQUFPO0lBQzNDLGNBQWM7SUFDUCxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ3pCLElBQUksRUFBRTtZQUNMLGFBQWEsQ0FBQyxPQUFPO1NBQ3JCO1FBQ0QsSUFBSSxFQUFFLFVBQVU7S0FDUCxDQUFDO0lBRUosUUFBUSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUN2QyxNQUFNLEdBQUcsYUFBYSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLElBQUksR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztJQUU3QywwR0FBMEc7SUFDbkcsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUVmLGNBQWMsQ0FDcEIsT0FBNEQsRUFDNUQsV0FBeUIsRUFDekIsVUFBdUIsRUFDdkIsS0FBYSxFQUNiLFNBQWlCO1FBRWpCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRTdFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFFN0IsTUFBTSxDQUFD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QUFHLGlCQUFpQixDQUFDO1FBRTFDLEtBQUs7UUFDTCxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsRCxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVsRCxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEMsV0FBVyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRWpDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFFM0MsS0FBSztRQUNMLFdBQVcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25ELFdBQVcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRW5ELFdBQVcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxXQUFXLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFakMsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUIsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDbkMsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztRQUUzQyxLQUFLO1FBQ0wsV0FBVyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkQsV0FBVyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFbkQsV0FBVyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUVqQyxVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM5QixVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNuQyxVQUFVLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzVDLENBQUM7O0FBR0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEJhdGNoZXIsXG5cdENvbG9yLFxuXHREZWZhdWx0QmF0Y2hhYmxlTWVzaEVsZW1lbnQsXG5cdERlZmF1bHRCYXRjaGFibGVRdWFkRWxlbWVudCxcblx0ZXh0ZW5zaW9ucyxcblx0RXh0ZW5zaW9uVHlwZSxcblx0U2hhZGVyXG59IGZyb20gJ3BpeGkuanMnO1xuaW1wb3J0IHsgRGFya1RpbnRCYXRjaEdlb21ldHJ5IH0gZnJvbSAnLi9EYXJrVGludEJhdGNoR2VvbWV0cnknO1xuaW1wb3J0IHsgRGFya1RpbnRTaGFkZXIgfSBmcm9tICcuL0RhcmtUaW50U2hhZGVyJztcblxubGV0IGRlZmF1bHRTaGFkZXI6IFNoYWRlciB8IG51bGwgPSBudWxsO1xuXG4vKiogVGhlIGRlZmF1bHQgYmF0Y2hlciBpcyB1c2VkIHRvIGJhdGNoIHF1YWRzIGFuZCBtZXNoZXMuICovXG5leHBvcnQgY2xhc3MgRGFya1RpbnRCYXRjaGVyIGV4dGVuZHMgQmF0Y2hlciB7XG5cdC8qKiBAaWdub3JlICovXG5cdHB1YmxpYyBzdGF0aWMgZXh0ZW5zaW9uID0ge1xuXHRcdHR5cGU6IFtcblx0XHRcdEV4dGVuc2lvblR5cGUuQmF0Y2hlcixcblx0XHRdLFxuXHRcdG5hbWU6ICdkYXJrVGludCcsXG5cdH0gYXMgY29uc3Q7XG5cblx0cHVibGljIGdlb21ldHJ5ID0gbmV3IERhcmtUaW50QmF0Y2hHZW9tZXRyeSgpO1xuXHRwdWJsaWMgc2hhZGVyID0gZGVmYXVsdFNoYWRlciB8fCAoZGVmYXVsdFNoYWRlciA9IG5ldyBEYXJrVGludFNoYWRlcih0aGlzLm1heFRleHR1cmVzKSk7XG5cdHB1YmxpYyBuYW1lID0gRGFya1RpbnRCYXRjaGVyLmV4dGVuc2lvbi5uYW1lO1xuXG5cdC8qKiBUaGUgc2l6ZSBvZiBvbmUgYXR0cmlidXRlLiAxID0gMzIgYml0LiB4LCB5LCB1LCB2LCBjb2xvciwgZGFya0NvbG9yLCB0ZXh0dXJlSWRBbmRSb3VuZCAtPiB0b3RhbCA9IDcgKi9cblx0cHVibGljIHZlcnRleFNpemUgPSA3O1xuXG5cdHB1YmxpYyBwYWNrQXR0cmlidXRlcyAoXG5cdFx0ZWxlbWVudDogRGVmYXVsdEJhdGNoYWJsZU1lc2hFbGVtZW50ICYgeyBkYXJrQ29sb3I6IG51bWJlciB9LFxuXHRcdGZsb2F0MzJWaWV3OiBGbG9hdDMyQXJyYXksXG5cdFx0dWludDMyVmlldzogVWludDMyQXJyYXksXG5cdFx0aW5kZXg6IG51bWJlcixcblx0XHR0ZXh0dXJlSWQ6IG51bWJlclxuXHQpIHtcblx0XHRjb25zdCB0ZXh0dXJlSWRBbmRSb3VuZCA9ICh0ZXh0dXJlSWQgPDwgMTYpIHwgKGVsZW1lbnQucm91bmRQaXhlbHMgJiAweEZGRkYpO1xuXG5cdFx0Y29uc3Qgd3QgPSBlbGVtZW50LnRyYW5zZm9ybTtcblxuXHRcdGNvbnN0IGEgPSB3dC5hO1xuXHRcdGNvbnN0IGIgPSB3dC5iO1xuXHRcdGNvbnN0IGMgPSB3dC5jO1xuXHRcdGNvbnN0IGQgPSB3dC5kO1xuXHRcdGNvbnN0IHR4ID0gd3QudHg7XG5cdFx0Y29uc3QgdHkgPSB3dC50eTtcblxuXHRcdGNvbnN0IHsgcG9zaXRpb25zLCB1dnMgfSA9IGVsZW1lbnQ7XG5cblx0XHRjb25zdCBhcmdiID0gZWxlbWVudC5jb2xvcjtcblx0XHRjb25zdCB3b3JsZEFscGhhID0gKChhcmdiID4+IDI0KSAmIDB4RkYpIC8gMjU1O1xuXHRcdGNvbnN0IGRhcmtDb2xvciA9IENvbG9yLnNoYXJlZC5zZXRWYWx1ZShlbGVtZW50LmRhcmtDb2xvcikucHJlbXVsdGlwbHkod29ybGRBbHBoYSwgdHJ1ZSkudG9QcmVtdWx0aXBsaWVkKDEsIGZhbHNlKTtcblxuXHRcdGNvbnN0IG9mZnNldCA9IGVsZW1lbnQuYXR0cmlidXRlT2Zmc2V0O1xuXHRcdGNvbnN0IGVuZCA9IG9mZnNldCArIGVsZW1lbnQuYXR0cmlidXRlU2l6ZTtcblxuXHRcdGZvciAobGV0IGkgPSBvZmZzZXQ7IGkgPCBlbmQ7IGkrKykge1xuXHRcdFx0Y29uc3QgaTIgPSBpICogMjtcblxuXHRcdFx0Y29uc3QgeCA9IHBvc2l0aW9uc1tpMl07XG5cdFx0XHRjb25zdCB5ID0gcG9zaXRpb25zWyhpMikgKyAxXTtcblxuXHRcdFx0ZmxvYXQzMlZpZXdbaW5kZXgrK10gPSAoYSAqIHgpICsgKGMgKiB5KSArIHR4O1xuXHRcdFx0ZmxvYXQzMlZpZXdbaW5kZXgrK10gPSAoZCAqIHkpICsgKGIgKiB4KSArIHR5O1xuXG5cdFx0XHRmbG9hdDMyVmlld1tpbmRleCsrXSA9IHV2c1tpMl07XG5cdFx0XHRmbG9hdDMyVmlld1tpbmRleCsrXSA9IHV2c1soaTIpICsgMV07XG5cblx0XHRcdHVpbnQzMlZpZXdbaW5kZXgrK10gPSBhcmdiO1xuXHRcdFx0dWludDMyVmlld1tpbmRleCsrXSA9IGRhcmtDb2xvcjtcblxuXHRcdFx0dWludDMyVmlld1tpbmRleCsrXSA9IHRleHR1cmVJZEFuZFJvdW5kO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBwYWNrUXVhZEF0dHJpYnV0ZXMgKFxuXHRcdGVsZW1lbnQ6IERlZmF1bHRCYXRjaGFibGVRdWFkRWxlbWVudCAmIHsgZGFya0NvbG9yOiBudW1iZXIgfSxcblx0XHRmbG9hdDMyVmlldzogRmxvYXQzMkFycmF5LFxuXHRcdHVpbnQzMlZpZXc6IFVpbnQzMkFycmF5LFxuXHRcdGluZGV4OiBudW1iZXIsXG5cdFx0dGV4dHVyZUlkOiBudW1iZXJcblx0KSB7XG5cdFx0Y29uc3QgdGV4dHVyZSA9IGVsZW1lbnQudGV4dHVyZTtcblxuXHRcdGNvbnN0IHd0ID0gZWxlbWVudC50cmFuc2Zvcm07XG5cblx0XHRjb25zdCBhID0gd3QuYTtcblx0XHRjb25zdCBiID0gd3QuYjtcblx0XHRjb25zdCBjID0gd3QuYztcblx0XHRjb25zdCBkID0gd3QuZDtcblx0XHRjb25zdCB0eCA9IHd0LnR4O1xuXHRcdGNvbnN0IHR5ID0gd3QudHk7XG5cblx0XHRjb25zdCBib3VuZHMgPSBlbGVtZW50LmJvdW5kcztcblxuXHRcdGNvbnN0IHcwID0gYm91bmRzLm1heFg7XG5cdFx0Y29uc3QgdzEgPSBib3VuZHMubWluWDtcblx0XHRjb25zdCBoMCA9IGJvdW5kcy5tYXhZO1xuXHRcdGNvbnN0IGgxID0gYm91bmRzLm1pblk7XG5cblx0XHRjb25zdCB1dnMgPSB0ZXh0dXJlLnV2cztcblxuXHRcdC8vIF8gXyBfIF9cblx0XHQvLyBhIGIgZyByXG5cdFx0Y29uc3QgYXJnYiA9IGVsZW1lbnQuY29sb3I7XG5cdFx0Y29uc3QgZGFya0NvbG9yID0gZWxlbWVudC5kYXJrQ29sb3I7XG5cblx0XHRjb25zdCB0ZXh0dXJlSWRBbmRSb3VuZCA9ICh0ZXh0dXJlSWQgPDwgMTYpIHwgKGVsZW1lbnQucm91bmRQaXhlbHMgJiAweEZGRkYpO1xuXG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyAwXSA9IChhICogdzEpICsgKGMgKiBoMSkgKyB0eDtcblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDFdID0gKGQgKiBoMSkgKyAoYiAqIHcxKSArIHR5O1xuXG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyAyXSA9IHV2cy54MDtcblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDNdID0gdXZzLnkwO1xuXG5cdFx0dWludDMyVmlld1tpbmRleCArIDRdID0gYXJnYjtcblx0XHR1aW50MzJWaWV3W2luZGV4ICsgNV0gPSBkYXJrQ29sb3I7XG5cdFx0dWludDMyVmlld1tpbmRleCArIDZdID0gdGV4dHVyZUlkQW5kUm91bmQ7XG5cblx0XHQvLyB4eVxuXHRcdGZsb2F0MzJWaWV3W2luZGV4ICsgN10gPSAoYSAqIHcwKSArIChjICogaDEpICsgdHg7XG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyA4XSA9IChkICogaDEpICsgKGIgKiB3MCkgKyB0eTtcblxuXHRcdGZsb2F0MzJWaWV3W2luZGV4ICsgOV0gPSB1dnMueDE7XG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyAxMF0gPSB1dnMueTE7XG5cblx0XHR1aW50MzJWaWV3W2luZGV4ICsgMTFdID0gYXJnYjtcblx0XHR1aW50MzJWaWV3W2luZGV4ICsgMTJdID0gZGFya0NvbG9yO1xuXHRcdHVpbnQzMlZpZXdbaW5kZXggKyAxM10gPSB0ZXh0dXJlSWRBbmRSb3VuZDtcblxuXHRcdC8vIHh5XG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyAxNF0gPSAoYSAqIHcwKSArIChjICogaDApICsgdHg7XG5cdFx0ZmxvYXQzMlZpZXdbaW5kZXggKyAxNV0gPSAoZCAqIGgwKSArIChiICogdzApICsgdHk7XG5cblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDE2XSA9IHV2cy54Mjtcblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDE3XSA9IHV2cy55MjtcblxuXHRcdHVpbnQzMlZpZXdbaW5kZXggKyAxOF0gPSBhcmdiO1xuXHRcdHVpbnQzMlZpZXdbaW5kZXggKyAxOV0gPSBkYXJrQ29sb3I7XG5cdFx0dWludDMyVmlld1tpbmRleCArIDIwXSA9IHRleHR1cmVJZEFuZFJvdW5kO1xuXG5cdFx0Ly8geHlcblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDIxXSA9IChhICogdzEpICsgKGMgKiBoMCkgKyB0eDtcblx0XHRmbG9hdDMyVmlld1tpbmRleCArIDIyXSA9IChkICogaDApICsgKGIgKiB3MSkgKyB0eTtcblxuXHRcdGZsb2F0MzJWaWV3W2luZGV4ICsgMjNdID0gdXZzLngzO1xuXHRcdGZsb2F0MzJWaWV3W2luZGV4ICsgMjRdID0gdXZzLnkzO1xuXG5cdFx0dWludDMyVmlld1tpbmRleCArIDI1XSA9IGFyZ2I7XG5cdFx0dWludDMyVmlld1tpbmRleCArIDI2XSA9IGRhcmtDb2xvcjtcblx0XHR1aW50MzJWaWV3W2luZGV4ICsgMjddID0gdGV4dHVyZUlkQW5kUm91bmQ7XG5cdH1cbn1cblxuZXh0ZW5zaW9ucy5hZGQoRGFya1RpbnRCYXRjaGVyKTtcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { colorBit, colorBitGl, compileHighShaderGlProgram, compileHighShaderGpuProgram, generateTextureBatchBit, generateTextureBatchBitGl, getBatchSamplersUniformGroup, roundPixelsBit, roundPixelsBitGl, Shader } from 'pixi.js';
|
|
2
|
+
import { darkTintBit, darkTintBitGl } from './darkTintBit';
|
|
3
|
+
export class DarkTintShader extends Shader {
|
|
4
|
+
constructor(maxTextures) {
|
|
5
|
+
const glProgram = compileHighShaderGlProgram({
|
|
6
|
+
name: 'dark-tint-batch',
|
|
7
|
+
bits: [
|
|
8
|
+
colorBitGl,
|
|
9
|
+
darkTintBitGl,
|
|
10
|
+
generateTextureBatchBitGl(maxTextures),
|
|
11
|
+
roundPixelsBitGl,
|
|
12
|
+
]
|
|
13
|
+
});
|
|
14
|
+
const gpuProgram = compileHighShaderGpuProgram({
|
|
15
|
+
name: 'dark-tint-batch',
|
|
16
|
+
bits: [
|
|
17
|
+
colorBit,
|
|
18
|
+
darkTintBit,
|
|
19
|
+
generateTextureBatchBit(maxTextures),
|
|
20
|
+
roundPixelsBit,
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
super({
|
|
24
|
+
glProgram,
|
|
25
|
+
gpuProgram,
|
|
26
|
+
resources: {
|
|
27
|
+
batchSamplers: getBatchSamplersUniformGroup(maxTextures),
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1RpbnRTaGFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFya3RpbnQvRGFya1RpbnRTaGFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFFBQVEsRUFDUixVQUFVLEVBQ1YsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1QixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxNQUFNLE9BQU8sY0FBZSxTQUFRLE1BQU07SUFDekMsWUFBYSxXQUFtQjtRQUMvQixNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztZQUM1QyxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRTtnQkFDTCxVQUFVO2dCQUNWLGFBQWE7Z0JBQ2IseUJBQXlCLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxnQkFBZ0I7YUFDaEI7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRywyQkFBMkIsQ0FBQztZQUM5QyxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRTtnQkFDTCxRQUFRO2dCQUNSLFdBQVc7Z0JBQ1gsdUJBQXVCLENBQUMsV0FBVyxDQUFDO2dCQUNwQyxjQUFjO2FBQ2Q7U0FDRCxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUM7WUFDTCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFNBQVMsRUFBRTtnQkFDVixhQUFhLEVBQUUsNEJBQTRCLENBQUMsV0FBVyxDQUFDO2FBQ3hEO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Y29sb3JCaXQsXG5cdGNvbG9yQml0R2wsXG5cdGNvbXBpbGVIaWdoU2hhZGVyR2xQcm9ncmFtLFxuXHRjb21waWxlSGlnaFNoYWRlckdwdVByb2dyYW0sXG5cdGdlbmVyYXRlVGV4dHVyZUJhdGNoQml0LFxuXHRnZW5lcmF0ZVRleHR1cmVCYXRjaEJpdEdsLFxuXHRnZXRCYXRjaFNhbXBsZXJzVW5pZm9ybUdyb3VwLFxuXHRyb3VuZFBpeGVsc0JpdCxcblx0cm91bmRQaXhlbHNCaXRHbCxcblx0U2hhZGVyXG59IGZyb20gJ3BpeGkuanMnO1xuaW1wb3J0IHsgZGFya1RpbnRCaXQsIGRhcmtUaW50Qml0R2wgfSBmcm9tICcuL2RhcmtUaW50Qml0JztcblxuZXhwb3J0IGNsYXNzIERhcmtUaW50U2hhZGVyIGV4dGVuZHMgU2hhZGVyIHtcblx0Y29uc3RydWN0b3IgKG1heFRleHR1cmVzOiBudW1iZXIpIHtcblx0XHRjb25zdCBnbFByb2dyYW0gPSBjb21waWxlSGlnaFNoYWRlckdsUHJvZ3JhbSh7XG5cdFx0XHRuYW1lOiAnZGFyay10aW50LWJhdGNoJyxcblx0XHRcdGJpdHM6IFtcblx0XHRcdFx0Y29sb3JCaXRHbCxcblx0XHRcdFx0ZGFya1RpbnRCaXRHbCxcblx0XHRcdFx0Z2VuZXJhdGVUZXh0dXJlQmF0Y2hCaXRHbChtYXhUZXh0dXJlcyksXG5cdFx0XHRcdHJvdW5kUGl4ZWxzQml0R2wsXG5cdFx0XHRdXG5cdFx0fSk7XG5cblx0XHRjb25zdCBncHVQcm9ncmFtID0gY29tcGlsZUhpZ2hTaGFkZXJHcHVQcm9ncmFtKHtcblx0XHRcdG5hbWU6ICdkYXJrLXRpbnQtYmF0Y2gnLFxuXHRcdFx0Yml0czogW1xuXHRcdFx0XHRjb2xvckJpdCxcblx0XHRcdFx0ZGFya1RpbnRCaXQsXG5cdFx0XHRcdGdlbmVyYXRlVGV4dHVyZUJhdGNoQml0KG1heFRleHR1cmVzKSxcblx0XHRcdFx0cm91bmRQaXhlbHNCaXQsXG5cdFx0XHRdXG5cdFx0fSk7XG5cblx0XHRzdXBlcih7XG5cdFx0XHRnbFByb2dyYW0sXG5cdFx0XHRncHVQcm9ncmFtLFxuXHRcdFx0cmVzb3VyY2VzOiB7XG5cdFx0XHRcdGJhdGNoU2FtcGxlcnM6IGdldEJhdGNoU2FtcGxlcnNVbmlmb3JtR3JvdXAobWF4VGV4dHVyZXMpLFxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const darkTintBit: {
|
|
2
|
+
name: string;
|
|
3
|
+
vertex: {
|
|
4
|
+
header: string;
|
|
5
|
+
main: string;
|
|
6
|
+
};
|
|
7
|
+
fragment: {
|
|
8
|
+
header: string;
|
|
9
|
+
end: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare const darkTintBitGl: {
|
|
13
|
+
name: string;
|
|
14
|
+
vertex: {
|
|
15
|
+
header: string;
|
|
16
|
+
main: string;
|
|
17
|
+
};
|
|
18
|
+
fragment: {
|
|
19
|
+
header: string;
|
|
20
|
+
end: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
export const darkTintBit = {
|
|
3
|
+
name: 'color-bit',
|
|
4
|
+
vertex: {
|
|
5
|
+
header: /* wgsl */ `
|
|
6
|
+
@in aDarkColor: vec4<f32>;
|
|
7
|
+
@out vDarkColor: vec4<f32>;
|
|
8
|
+
`,
|
|
9
|
+
main: /* wgsl */ `
|
|
10
|
+
vDarkColor = aDarkColor;
|
|
11
|
+
`
|
|
12
|
+
},
|
|
13
|
+
fragment: {
|
|
14
|
+
header: /* wgsl */ `
|
|
15
|
+
@in vDarkColor: vec4<f32>;
|
|
16
|
+
`,
|
|
17
|
+
end: /* wgsl */ `
|
|
18
|
+
|
|
19
|
+
let alpha = outColor.a * vColor.a;
|
|
20
|
+
let rgb = ((outColor.a - 1.0) * vDarkColor.a + 1.0 - outColor.rgb) * vDarkColor.rgb + outColor.rgb * vColor.rgb;
|
|
21
|
+
|
|
22
|
+
finalColor = vec4<f32>(rgb, alpha);
|
|
23
|
+
|
|
24
|
+
`
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export const darkTintBitGl = {
|
|
28
|
+
name: 'color-bit',
|
|
29
|
+
vertex: {
|
|
30
|
+
header: /* glsl */ `
|
|
31
|
+
in vec4 aDarkColor;
|
|
32
|
+
out vec4 vDarkColor;
|
|
33
|
+
`,
|
|
34
|
+
main: /* glsl */ `
|
|
35
|
+
vDarkColor = aDarkColor;
|
|
36
|
+
`
|
|
37
|
+
},
|
|
38
|
+
fragment: {
|
|
39
|
+
header: /* glsl */ `
|
|
40
|
+
in vec4 vDarkColor;
|
|
41
|
+
`,
|
|
42
|
+
end: /* glsl */ `
|
|
43
|
+
|
|
44
|
+
finalColor.a = outColor.a * vColor.a;
|
|
45
|
+
finalColor.rgb = ((outColor.a - 1.0) * vDarkColor.a + 1.0 - outColor.rgb) * vDarkColor.rgb + outColor.rgb * vColor.rgb;
|
|
46
|
+
`
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFya1RpbnRCaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFya3RpbnQvZGFya1RpbnRCaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUMxQixJQUFJLEVBQUUsV0FBVztJQUNqQixNQUFNLEVBQUU7UUFDUCxNQUFNLEVBQUUsVUFBVSxDQUFBOzs7U0FHWDtRQUNQLElBQUksRUFBRSxVQUFVLENBQUE7O1NBRVQ7S0FDUDtJQUNELFFBQVEsRUFBRTtRQUNULE1BQU0sRUFBRSxVQUFVLENBQUE7O1NBRVg7UUFDUCxHQUFHLEVBQUUsVUFBVSxDQUFBOzs7Ozs7O1NBT1I7S0FDUDtDQUNELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDNUIsSUFBSSxFQUFFLFdBQVc7SUFDakIsTUFBTSxFQUFFO1FBQ1AsTUFBTSxFQUFFLFVBQVUsQ0FBQTs7O1NBR1g7UUFDUCxJQUFJLEVBQUUsVUFBVSxDQUFBOztTQUVUO0tBQ1A7SUFDRCxRQUFRLEVBQUU7UUFDVCxNQUFNLEVBQUUsVUFBVSxDQUFBOztTQUVYO1FBQ1AsR0FBRyxFQUFFLFVBQVUsQ0FBQTs7OztTQUlSO0tBQ1A7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuZXhwb3J0IGNvbnN0IGRhcmtUaW50Qml0ID0ge1xuXHRuYW1lOiAnY29sb3ItYml0Jyxcblx0dmVydGV4OiB7XG5cdFx0aGVhZGVyOiAvKiB3Z3NsICovYFxuICAgICAgICAgICAgQGluIGFEYXJrQ29sb3I6IHZlYzQ8ZjMyPjtcbiAgICAgICAgICAgIEBvdXQgdkRhcmtDb2xvcjogdmVjNDxmMzI+O1xuICAgICAgICBgLFxuXHRcdG1haW46IC8qIHdnc2wgKi9gXG4gICAgICAgIHZEYXJrQ29sb3IgPSBhRGFya0NvbG9yO1xuICAgICAgICBgXG5cdH0sXG5cdGZyYWdtZW50OiB7XG5cdFx0aGVhZGVyOiAvKiB3Z3NsICovYFxuICAgICAgICAgICAgQGluIHZEYXJrQ29sb3I6IHZlYzQ8ZjMyPjtcbiAgICAgICAgYCxcblx0XHRlbmQ6IC8qIHdnc2wgKi9gXG5cbiAgICAgICAgbGV0IGFscGhhID0gb3V0Q29sb3IuYSAqIHZDb2xvci5hO1xuICAgICAgICBsZXQgcmdiID0gKChvdXRDb2xvci5hIC0gMS4wKSAqIHZEYXJrQ29sb3IuYSArIDEuMCAtIG91dENvbG9yLnJnYikgKiB2RGFya0NvbG9yLnJnYiArIG91dENvbG9yLnJnYiAqIHZDb2xvci5yZ2I7XG5cbiAgICAgICAgZmluYWxDb2xvciA9IHZlYzQ8ZjMyPihyZ2IsIGFscGhhKTtcblxuICAgICAgICBgXG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBkYXJrVGludEJpdEdsID0ge1xuXHRuYW1lOiAnY29sb3ItYml0Jyxcblx0dmVydGV4OiB7XG5cdFx0aGVhZGVyOiAvKiBnbHNsICovYFxuICAgICAgICAgICAgaW4gdmVjNCBhRGFya0NvbG9yO1xuICAgICAgICAgICAgb3V0IHZlYzQgdkRhcmtDb2xvcjtcbiAgICAgICAgYCxcblx0XHRtYWluOiAvKiBnbHNsICovYFxuICAgICAgICAgICAgdkRhcmtDb2xvciA9IGFEYXJrQ29sb3I7XG4gICAgICAgIGBcblx0fSxcblx0ZnJhZ21lbnQ6IHtcblx0XHRoZWFkZXI6IC8qIGdsc2wgKi9gXG4gICAgICAgICAgICBpbiB2ZWM0IHZEYXJrQ29sb3I7XG4gICAgICAgIGAsXG5cdFx0ZW5kOiAvKiBnbHNsICovYFxuXG4gICAgICAgIGZpbmFsQ29sb3IuYSA9IG91dENvbG9yLmEgKiB2Q29sb3IuYTtcbiAgICAgICAgZmluYWxDb2xvci5yZ2IgPSAoKG91dENvbG9yLmEgLSAxLjApICogdkRhcmtDb2xvci5hICsgMS4wIC0gb3V0Q29sb3IucmdiKSAqIHZEYXJrQ29sb3IucmdiICsgb3V0Q29sb3IucmdiICogdkNvbG9yLnJnYjtcbiAgICAgICAgYFxuXHR9XG59O1xuIl19
|