@deck.gl/extensions 9.3.0-alpha.6 → 9.3.0-beta.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/dist/dist.dev.js +251 -11
- package/dist/fp64/fp64-extension.d.ts.map +1 -1
- package/dist/fp64/fp64-extension.js +2 -3
- package/dist/fp64/fp64-extension.js.map +1 -1
- package/dist/index.cjs +230 -11
- package/dist/index.cjs.map +3 -3
- package/dist/path-style/path-style-extension.d.ts +2 -1
- package/dist/path-style/path-style-extension.d.ts.map +1 -1
- package/dist/path-style/path-style-extension.js +53 -14
- package/dist/path-style/path-style-extension.js.map +1 -1
- package/dist/path-style/shaders.glsl.d.ts +18 -0
- package/dist/path-style/shaders.glsl.d.ts.map +1 -1
- package/dist/path-style/shaders.glsl.js +182 -0
- package/dist/path-style/shaders.glsl.js.map +1 -1
- package/dist.min.js +217 -53
- package/package.json +2 -2
- package/src/fp64/fp64-extension.ts +2 -5
- package/src/path-style/path-style-extension.ts +67 -14
- package/src/path-style/shaders.glsl.ts +213 -0
|
@@ -40,7 +40,7 @@ export type PathStyleExtensionOptions = {
|
|
|
40
40
|
*/
|
|
41
41
|
highPrecisionDash: boolean;
|
|
42
42
|
};
|
|
43
|
-
/** Adds selected features to the `PathLayer` and composite layers that render
|
|
43
|
+
/** Adds selected features to the `PathLayer`, `ScatterplotLayer`, `TextBackgroundLayer`, and composite layers that render them. */
|
|
44
44
|
export default class PathStyleExtension extends LayerExtension<PathStyleExtensionOptions> {
|
|
45
45
|
static defaultProps: {
|
|
46
46
|
getDashArray: {
|
|
@@ -56,6 +56,7 @@ export default class PathStyleExtension extends LayerExtension<PathStyleExtensio
|
|
|
56
56
|
};
|
|
57
57
|
static extensionName: string;
|
|
58
58
|
constructor({ dash, offset, highPrecisionDash }?: Partial<PathStyleExtensionOptions>);
|
|
59
|
+
private getLayerType;
|
|
59
60
|
isEnabled(layer: Layer<PathStyleExtensionProps>): boolean;
|
|
60
61
|
getShaders(this: Layer<PathStyleExtensionProps>, extension: this): any;
|
|
61
62
|
initializeState(this: Layer<PathStyleExtensionProps>, context: LayerContext, extension: this): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;AAU5E,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAmBnF,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAIF,mIAAmI;AACnI,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY;;;;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EACV,IAAY,EACZ,MAAc,EACd,iBAAyB,EAC1B,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAI1C,OAAO,CAAC,YAAY;IAcpB,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAoDtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IA4B5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACxD,SAAS,EAAE,IAAI;IAuBjB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;CAqB5F"}
|
|
@@ -3,26 +3,56 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { LayerExtension, _mergeShaders as mergeShaders } from '@deck.gl/core';
|
|
5
5
|
import { vec3 } from '@math.gl/core';
|
|
6
|
-
import { dashShaders, offsetShaders } from "./shaders.glsl.js";
|
|
6
|
+
import { dashShaders, offsetShaders, scatterplotDashShaders, textBackgroundDashShaders } from "./shaders.glsl.js";
|
|
7
7
|
const defaultProps = {
|
|
8
8
|
getDashArray: { type: 'accessor', value: [0, 0] },
|
|
9
9
|
getOffset: { type: 'accessor', value: 0 },
|
|
10
10
|
dashJustified: false,
|
|
11
11
|
dashGapPickable: false
|
|
12
12
|
};
|
|
13
|
-
/** Adds selected features to the `PathLayer` and composite layers that render
|
|
13
|
+
/** Adds selected features to the `PathLayer`, `ScatterplotLayer`, `TextBackgroundLayer`, and composite layers that render them. */
|
|
14
14
|
class PathStyleExtension extends LayerExtension {
|
|
15
15
|
constructor({ dash = false, offset = false, highPrecisionDash = false } = {}) {
|
|
16
16
|
super({ dash: dash || highPrecisionDash, offset, highPrecisionDash });
|
|
17
17
|
}
|
|
18
|
+
getLayerType(layer) {
|
|
19
|
+
if ('pathTesselator' in layer.state) {
|
|
20
|
+
return 'path';
|
|
21
|
+
}
|
|
22
|
+
const layerName = layer.constructor.layerName;
|
|
23
|
+
if (layerName === 'ScatterplotLayer') {
|
|
24
|
+
return 'scatterplot';
|
|
25
|
+
}
|
|
26
|
+
if (layerName === 'TextBackgroundLayer') {
|
|
27
|
+
return 'textBackground';
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
18
31
|
isEnabled(layer) {
|
|
19
|
-
return
|
|
32
|
+
return this.getLayerType(layer) !== null;
|
|
20
33
|
}
|
|
21
34
|
getShaders(extension) {
|
|
22
|
-
|
|
35
|
+
const layerType = extension.getLayerType(this);
|
|
36
|
+
if (!layerType) {
|
|
23
37
|
return null;
|
|
24
38
|
}
|
|
25
|
-
|
|
39
|
+
if (layerType === 'scatterplot' || layerType === 'textBackground') {
|
|
40
|
+
if (!extension.opts.dash) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const inject = layerType === 'scatterplot'
|
|
44
|
+
? scatterplotDashShaders.inject
|
|
45
|
+
: textBackgroundDashShaders.inject;
|
|
46
|
+
const pathStyle = {
|
|
47
|
+
name: 'pathStyle',
|
|
48
|
+
inject,
|
|
49
|
+
uniformTypes: {
|
|
50
|
+
dashGapPickable: 'i32'
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
return { modules: [pathStyle] };
|
|
54
|
+
}
|
|
55
|
+
// PathLayer: existing logic
|
|
26
56
|
let result = {};
|
|
27
57
|
const defines = {};
|
|
28
58
|
if (extension.opts.dash) {
|
|
@@ -50,14 +80,14 @@ class PathStyleExtension extends LayerExtension {
|
|
|
50
80
|
}
|
|
51
81
|
initializeState(context, extension) {
|
|
52
82
|
const attributeManager = this.getAttributeManager();
|
|
53
|
-
|
|
54
|
-
|
|
83
|
+
const layerType = extension.getLayerType(this);
|
|
84
|
+
if (!attributeManager || !layerType) {
|
|
55
85
|
return;
|
|
56
86
|
}
|
|
57
87
|
if (extension.opts.dash) {
|
|
58
88
|
attributeManager.addInstanced({
|
|
59
89
|
instanceDashArrays: { size: 2, accessor: 'getDashArray' },
|
|
60
|
-
...(extension.opts.highPrecisionDash
|
|
90
|
+
...(layerType === 'path' && extension.opts.highPrecisionDash
|
|
61
91
|
? {
|
|
62
92
|
instanceDashOffsets: {
|
|
63
93
|
size: 1,
|
|
@@ -68,7 +98,7 @@ class PathStyleExtension extends LayerExtension {
|
|
|
68
98
|
: {})
|
|
69
99
|
});
|
|
70
100
|
}
|
|
71
|
-
if (extension.opts.offset) {
|
|
101
|
+
if (layerType === 'path' && extension.opts.offset) {
|
|
72
102
|
attributeManager.addInstanced({
|
|
73
103
|
instanceOffsets: { size: 1, accessor: 'getOffset' }
|
|
74
104
|
});
|
|
@@ -79,11 +109,20 @@ class PathStyleExtension extends LayerExtension {
|
|
|
79
109
|
return;
|
|
80
110
|
}
|
|
81
111
|
if (extension.opts.dash) {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
112
|
+
const layerType = extension.getLayerType(this);
|
|
113
|
+
if (layerType === 'scatterplot' || layerType === 'textBackground') {
|
|
114
|
+
const pathStyleProps = {
|
|
115
|
+
dashGapPickable: Boolean(this.props.dashGapPickable)
|
|
116
|
+
};
|
|
117
|
+
this.setShaderModuleProps({ pathStyle: pathStyleProps });
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const pathStyleProps = {
|
|
121
|
+
dashAlignMode: this.props.dashJustified ? 1 : 0,
|
|
122
|
+
dashGapPickable: Boolean(this.props.dashGapPickable)
|
|
123
|
+
};
|
|
124
|
+
this.setShaderModuleProps({ pathStyle: pathStyleProps });
|
|
125
|
+
}
|
|
87
126
|
}
|
|
88
127
|
}
|
|
89
128
|
getDashOffsets(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-style-extension.js","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAE,aAAa,IAAI,YAAY,EAAC,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"path-style-extension.js","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,24 @@ export declare const dashShaders: {
|
|
|
12
12
|
'fs:#main-start': string;
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
|
+
export declare const scatterplotDashShaders: {
|
|
16
|
+
inject: {
|
|
17
|
+
'vs:#decl': string;
|
|
18
|
+
'vs:#main-end': string;
|
|
19
|
+
'fs:#decl': string;
|
|
20
|
+
'fs:#main-start': string;
|
|
21
|
+
'fs:#main-end': string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export declare const textBackgroundDashShaders: {
|
|
25
|
+
inject: {
|
|
26
|
+
'vs:#decl': string;
|
|
27
|
+
'vs:#main-end': string;
|
|
28
|
+
'fs:#decl': string;
|
|
29
|
+
'fs:#main-start': string;
|
|
30
|
+
'fs:#main-end': string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
15
33
|
export declare const offsetShaders: {
|
|
16
34
|
inject: {
|
|
17
35
|
'vs:#decl': string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CA4EvB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG;IAEpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CA4EvB,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;CAwDlC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;CAyJrC,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
|
|
@@ -69,6 +69,188 @@ discard;
|
|
|
69
69
|
`
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
+
export const scatterplotDashShaders = {
|
|
73
|
+
inject: {
|
|
74
|
+
'vs:#decl': `
|
|
75
|
+
in vec2 instanceDashArrays;
|
|
76
|
+
out vec2 vDashArray;
|
|
77
|
+
`,
|
|
78
|
+
'vs:#main-end': `
|
|
79
|
+
vDashArray = instanceDashArrays;
|
|
80
|
+
`,
|
|
81
|
+
'fs:#decl': `
|
|
82
|
+
layout(std140) uniform pathStyleUniforms {
|
|
83
|
+
bool dashGapPickable;
|
|
84
|
+
} pathStyle;
|
|
85
|
+
in vec2 vDashArray;
|
|
86
|
+
#define PI 3.141592653589793
|
|
87
|
+
`,
|
|
88
|
+
'fs:#main-start': `
|
|
89
|
+
bool inDashGap = false;
|
|
90
|
+
float dashUnitLength = vDashArray.x + vDashArray.y;
|
|
91
|
+
if (dashUnitLength > 0.0 && scatterplot.stroked > 0.5) {
|
|
92
|
+
float _distToCenter = length(unitPosition) * outerRadiusPixels;
|
|
93
|
+
float innerRadius = innerUnitRadius * outerRadiusPixels;
|
|
94
|
+
if (_distToCenter >= innerRadius) {
|
|
95
|
+
float strokeWidth = (1.0 - innerUnitRadius) * outerRadiusPixels;
|
|
96
|
+
float midStrokeRadius = (innerUnitRadius + 1.0) * 0.5 * outerRadiusPixels;
|
|
97
|
+
float angle = atan(unitPosition.y, unitPosition.x) + PI;
|
|
98
|
+
float circumference = 2.0 * PI * midStrokeRadius;
|
|
99
|
+
float posAlongStroke = (angle / (2.0 * PI)) * circumference / strokeWidth;
|
|
100
|
+
float unitOffset = mod(posAlongStroke, dashUnitLength);
|
|
101
|
+
if (unitOffset > vDashArray.x) {
|
|
102
|
+
if (scatterplot.filled > 0.5) {
|
|
103
|
+
inDashGap = true;
|
|
104
|
+
} else {
|
|
105
|
+
if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
|
|
106
|
+
discard;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
`,
|
|
113
|
+
'fs:#main-end': `
|
|
114
|
+
if (inDashGap) {
|
|
115
|
+
float alphaFactor = fragColor.a / max(vLineColor.a, 0.001);
|
|
116
|
+
fragColor = vec4(vFillColor.rgb, vFillColor.a * alphaFactor);
|
|
117
|
+
fragColor = picking_filterPickingColor(fragColor);
|
|
118
|
+
fragColor = picking_filterHighlightColor(fragColor);
|
|
119
|
+
}
|
|
120
|
+
`
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
export const textBackgroundDashShaders = {
|
|
124
|
+
inject: {
|
|
125
|
+
'vs:#decl': `
|
|
126
|
+
in vec2 instanceDashArrays;
|
|
127
|
+
out vec2 vDashArray;
|
|
128
|
+
`,
|
|
129
|
+
'vs:#main-end': `
|
|
130
|
+
vDashArray = instanceDashArrays;
|
|
131
|
+
`,
|
|
132
|
+
'fs:#decl': `
|
|
133
|
+
layout(std140) uniform pathStyleUniforms {
|
|
134
|
+
bool dashGapPickable;
|
|
135
|
+
} pathStyle;
|
|
136
|
+
in vec2 vDashArray;
|
|
137
|
+
#define PI 3.141592653589793
|
|
138
|
+
float getPerimeterPosition(vec2 fragUV, vec2 dims, vec4 radii, float lineWidth) {
|
|
139
|
+
float width = dims.x;
|
|
140
|
+
float height = dims.y;
|
|
141
|
+
float maxRadius = min(width, height) * 0.5;
|
|
142
|
+
float rBL = min(radii.w, maxRadius);
|
|
143
|
+
float rTL = min(radii.z, maxRadius);
|
|
144
|
+
float rTR = min(radii.x, maxRadius);
|
|
145
|
+
float rBR = min(radii.y, maxRadius);
|
|
146
|
+
vec2 p = fragUV * dims;
|
|
147
|
+
float leftLen = height - rBL - rTL;
|
|
148
|
+
float topLen = width - rTL - rTR;
|
|
149
|
+
float rightLen = height - rTR - rBR;
|
|
150
|
+
float bottomLen = width - rBR - rBL;
|
|
151
|
+
float arcBL = PI * 0.5 * rBL;
|
|
152
|
+
float arcTL = PI * 0.5 * rTL;
|
|
153
|
+
float arcTR = PI * 0.5 * rTR;
|
|
154
|
+
float arcBR = PI * 0.5 * rBR;
|
|
155
|
+
float pos = 0.0;
|
|
156
|
+
float distLeft = p.x;
|
|
157
|
+
float distRight = width - p.x;
|
|
158
|
+
float distBottom = p.y;
|
|
159
|
+
float distTop = height - p.y;
|
|
160
|
+
float minDist = min(min(distLeft, distRight), min(distBottom, distTop));
|
|
161
|
+
if (p.x < rBL && p.y < rBL) {
|
|
162
|
+
vec2 c = vec2(rBL, rBL);
|
|
163
|
+
vec2 d = p - c;
|
|
164
|
+
float angle = atan(-d.x, -d.y);
|
|
165
|
+
pos = angle / (PI * 0.5) * arcBL;
|
|
166
|
+
} else if (p.x < rTL && p.y > height - rTL) {
|
|
167
|
+
vec2 c = vec2(rTL, height - rTL);
|
|
168
|
+
vec2 d = p - c;
|
|
169
|
+
float angle = atan(d.y, -d.x);
|
|
170
|
+
pos = arcBL + leftLen + angle / (PI * 0.5) * arcTL;
|
|
171
|
+
} else if (p.x > width - rTR && p.y > height - rTR) {
|
|
172
|
+
vec2 c = vec2(width - rTR, height - rTR);
|
|
173
|
+
vec2 d = p - c;
|
|
174
|
+
float angle = atan(d.x, d.y);
|
|
175
|
+
pos = arcBL + leftLen + arcTL + topLen + angle / (PI * 0.5) * arcTR;
|
|
176
|
+
} else if (p.x > width - rBR && p.y < rBR) {
|
|
177
|
+
vec2 c = vec2(width - rBR, rBR);
|
|
178
|
+
vec2 d = p - c;
|
|
179
|
+
float angle = atan(-d.y, d.x);
|
|
180
|
+
pos = arcBL + leftLen + arcTL + topLen + arcTR + rightLen + angle / (PI * 0.5) * arcBR;
|
|
181
|
+
} else if (minDist == distLeft) {
|
|
182
|
+
pos = arcBL + clamp(p.y - rBL, 0.0, leftLen);
|
|
183
|
+
} else if (minDist == distTop) {
|
|
184
|
+
pos = arcBL + leftLen + arcTL + clamp(p.x - rTL, 0.0, topLen);
|
|
185
|
+
} else if (minDist == distRight) {
|
|
186
|
+
pos = arcBL + leftLen + arcTL + topLen + arcTR + clamp(height - rTR - p.y, 0.0, rightLen);
|
|
187
|
+
} else {
|
|
188
|
+
pos = arcBL + leftLen + arcTL + topLen + arcTR + rightLen + arcBR + clamp(width - rBR - p.x, 0.0, bottomLen);
|
|
189
|
+
}
|
|
190
|
+
return pos / lineWidth;
|
|
191
|
+
}
|
|
192
|
+
float getRectPerimeterPosition(vec2 fragUV, vec2 dims, float lineWidth) {
|
|
193
|
+
float width = dims.x;
|
|
194
|
+
float height = dims.y;
|
|
195
|
+
float distLeft = fragUV.x * width;
|
|
196
|
+
float distRight = (1.0 - fragUV.x) * width;
|
|
197
|
+
float distBottom = fragUV.y * height;
|
|
198
|
+
float distTop = (1.0 - fragUV.y) * height;
|
|
199
|
+
float minDist = min(min(distLeft, distRight), min(distBottom, distTop));
|
|
200
|
+
float pos = 0.0;
|
|
201
|
+
if (minDist == distLeft) {
|
|
202
|
+
pos = fragUV.y * height;
|
|
203
|
+
} else if (minDist == distTop) {
|
|
204
|
+
pos = height + fragUV.x * width;
|
|
205
|
+
} else if (minDist == distRight) {
|
|
206
|
+
pos = height + width + (1.0 - fragUV.y) * height;
|
|
207
|
+
} else {
|
|
208
|
+
pos = 2.0 * height + width + (1.0 - fragUV.x) * width;
|
|
209
|
+
}
|
|
210
|
+
return pos / lineWidth;
|
|
211
|
+
}
|
|
212
|
+
`,
|
|
213
|
+
'fs:#main-start': `
|
|
214
|
+
bool inDashGap = false;
|
|
215
|
+
float dashUnitLength = vDashArray.x + vDashArray.y;
|
|
216
|
+
if (dashUnitLength > 0.0 && textBackground.stroked) {
|
|
217
|
+
float distToEdge;
|
|
218
|
+
bool hasRoundedCorners = textBackground.borderRadius != vec4(0.0);
|
|
219
|
+
if (hasRoundedCorners) {
|
|
220
|
+
distToEdge = round_rect(uv, dimensions, textBackground.borderRadius);
|
|
221
|
+
} else {
|
|
222
|
+
distToEdge = rect(uv, dimensions);
|
|
223
|
+
}
|
|
224
|
+
if (distToEdge <= vLineWidth && distToEdge >= 0.0) {
|
|
225
|
+
float posAlongStroke;
|
|
226
|
+
if (hasRoundedCorners) {
|
|
227
|
+
posAlongStroke = getPerimeterPosition(uv, dimensions, textBackground.borderRadius, vLineWidth);
|
|
228
|
+
} else {
|
|
229
|
+
posAlongStroke = getRectPerimeterPosition(uv, dimensions, vLineWidth);
|
|
230
|
+
}
|
|
231
|
+
float unitOffset = mod(posAlongStroke, dashUnitLength);
|
|
232
|
+
if (unitOffset > vDashArray.x) {
|
|
233
|
+
if (vFillColor.a > 0.0) {
|
|
234
|
+
inDashGap = true;
|
|
235
|
+
} else {
|
|
236
|
+
if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
|
|
237
|
+
discard;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
`,
|
|
244
|
+
'fs:#main-end': `
|
|
245
|
+
if (inDashGap) {
|
|
246
|
+
float alphaFactor = fragColor.a / max(vLineColor.a, 0.001);
|
|
247
|
+
fragColor = vec4(vFillColor.rgb, vFillColor.a * alphaFactor);
|
|
248
|
+
fragColor = picking_filterPickingColor(fragColor);
|
|
249
|
+
fragColor = picking_filterHighlightColor(fragColor);
|
|
250
|
+
}
|
|
251
|
+
`
|
|
252
|
+
}
|
|
253
|
+
};
|
|
72
254
|
export const offsetShaders = {
|
|
73
255
|
inject: {
|
|
74
256
|
'vs:#decl': `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaders.glsl.js","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAUpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,UAAU,EAAE;;;;;;;CAOf;QAEG,cAAc,EAAE;;;;;;;CAOnB;QAEG,UAAU;;;;;;;CAQb;QAEG,0DAA0D;QAC1D,sDAAsD;QACtD,6CAA6C;QAC7C,aAAa;QACb,oBAAoB;QACpB,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE;;CAEf;QACG,uBAAuB;;;CAG1B;QACG,cAAc;;;;;;CAMjB;QACG,gBAAgB;;;;;;CAMnB;KACE;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"shaders.glsl.js","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAUpC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,UAAU,EAAE;;;;;;;CAOf;QAEG,cAAc,EAAE;;;;;;;CAOnB;QAEG,UAAU;;;;;;;CAQb;QAEG,0DAA0D;QAC1D,sDAAsD;QACtD,6CAA6C;QAC7C,aAAa;QACb,oBAAoB;QACpB,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE;QACN,UAAU,EAAE;;;CAGf;QAEG,cAAc,EAAE;;CAEnB;QAEG,UAAU;;;;;;CAQb;QAEG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;CAwBnB;QAEG,cAAc;;;;;;;CAOjB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE;QACN,UAAU,EAAE;;;CAGf;QAEG,cAAc,EAAE;;CAEnB;QAEG,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGb;QAEG,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnB;QAEG,cAAc;;;;;;;CAOjB;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE;;CAEf;QACG,uBAAuB;;;CAG1B;QACG,cAAc;;;;;;CAMjB;QACG,gBAAgB;;;;;;CAMnB;KACE;CACF,CAAC"}
|