@antv/l7-layers 2.12.2 → 2.13.0
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/es/core/BaseLayer.d.ts +1 -1
- package/es/core/BaseLayer.js +18 -7
- package/es/core/TextureService.d.ts +4 -3
- package/es/core/TextureService.js +32 -10
- package/es/core/interface.d.ts +5 -6
- package/es/core/interface.js +7 -0
- package/es/line/index.d.ts +1 -1
- package/es/line/models/index.d.ts +1 -1
- package/es/line/models/index.js +0 -2
- package/es/plugins/DataMappingPlugin.js +10 -7
- package/es/point/index.d.ts +1 -1
- package/es/point/models/fill.d.ts +0 -14
- package/es/point/models/fill.js +9 -100
- package/es/point/models/fillmage.d.ts +0 -5
- package/es/point/models/fillmage.js +15 -65
- package/es/point/models/index.d.ts +1 -1
- package/es/point/models/index.js +0 -4
- package/es/point/models/radar.d.ts +0 -7
- package/es/point/models/radar.js +13 -79
- package/es/point/models/text.js +1 -1
- package/es/point/shaders/fill_vert.glsl +9 -26
- package/es/point/shaders/image/fillImage_vert.glsl +8 -14
- package/es/point/shaders/radar/radar_vert.glsl +12 -19
- package/es/point/shaders/text_vert.glsl +1 -1
- package/es/polygon/index.js +0 -2
- package/es/polygon/models/index.d.ts +1 -1
- package/es/polygon/models/index.js +2 -4
- package/es/raster/models/raster.d.ts +0 -2
- package/es/raster/models/raster.js +6 -22
- package/es/raster/models/rasterTerrainRgb.js +6 -6
- package/es/raster/shaders/raster_2d_frag.glsl +1 -0
- package/es/tile/tileFactory/RasterRGBTile.js +0 -1
- package/es/tile/tileFactory/RasterTile.js +13 -8
- package/lib/core/BaseLayer.js +17 -6
- package/lib/core/TextureService.js +31 -9
- package/lib/core/interface.js +9 -1
- package/lib/line/models/index.js +0 -3
- package/lib/plugins/DataMappingPlugin.js +10 -7
- package/lib/point/models/fill.js +8 -98
- package/lib/point/models/fillmage.js +16 -67
- package/lib/point/models/index.js +0 -6
- package/lib/point/models/radar.js +13 -80
- package/lib/point/models/text.js +1 -1
- package/lib/point/shaders/fill_vert.glsl +9 -26
- package/lib/point/shaders/image/fillImage_vert.glsl +8 -14
- package/lib/point/shaders/radar/radar_vert.glsl +12 -19
- package/lib/point/shaders/text_vert.glsl +1 -1
- package/lib/polygon/index.js +0 -2
- package/lib/polygon/models/index.js +2 -5
- package/lib/raster/models/raster.js +5 -21
- package/lib/raster/models/rasterTerrainRgb.js +5 -5
- package/lib/raster/shaders/raster_2d_frag.glsl +1 -0
- package/lib/tile/tileFactory/RasterTile.js +14 -8
- package/package.json +6 -6
- package/es/line/models/tile.d.ts +0 -8
- package/es/line/models/tile.js +0 -201
- package/es/line/shaders/tile/line_tile_map_vert.glsl +0 -25
- package/es/line/shaders/tile/line_tile_vert.glsl +0 -52
- package/es/line/shaders/tile/simpleline_map_vert.glsl +0 -15
- package/es/line/shaders/tile/simpleline_vert.glsl +0 -21
- package/es/point/models/tile.d.ts +0 -15
- package/es/point/models/tile.js +0 -217
- package/es/point/models/tileText.d.ts +0 -52
- package/es/point/models/tileText.js +0 -544
- package/es/point/shaders/tile/fill_tile_frag.glsl +0 -76
- package/es/point/shaders/tile/fill_tile_vert.glsl +0 -78
- package/es/point/shaders/tile/text_frag.glsl +0 -33
- package/es/point/shaders/tile/text_map_frag.glsl +0 -31
- package/es/point/shaders/tile/text_map_vert.glsl +0 -38
- package/es/point/shaders/tile/text_vert.glsl +0 -48
- package/es/polygon/models/tile.d.ts +0 -12
- package/es/polygon/models/tile.js +0 -141
- package/es/polygon/shaders/tile/polygon_tile_map_vert.glsl +0 -16
- package/es/polygon/shaders/tile/polygon_tile_vert.glsl +0 -42
- package/es/raster/models/rasterTile.d.ts +0 -18
- package/es/raster/models/rasterTile.js +0 -180
- package/es/tile/tileFactory/layers/RasterDataLayer.d.ts +0 -11
- package/es/tile/tileFactory/layers/RasterDataLayer.js +0 -89
- package/lib/line/models/tile.js +0 -217
- package/lib/line/shaders/tile/line_tile_map_vert.glsl +0 -25
- package/lib/line/shaders/tile/line_tile_vert.glsl +0 -52
- package/lib/line/shaders/tile/simpleline_map_vert.glsl +0 -15
- package/lib/line/shaders/tile/simpleline_vert.glsl +0 -21
- package/lib/point/models/tile.js +0 -233
- package/lib/point/models/tileText.js +0 -560
- package/lib/point/shaders/tile/fill_tile_frag.glsl +0 -76
- package/lib/point/shaders/tile/fill_tile_vert.glsl +0 -78
- package/lib/point/shaders/tile/text_frag.glsl +0 -33
- package/lib/point/shaders/tile/text_map_frag.glsl +0 -31
- package/lib/point/shaders/tile/text_map_vert.glsl +0 -38
- package/lib/point/shaders/tile/text_vert.glsl +0 -48
- package/lib/polygon/models/tile.js +0 -156
- package/lib/polygon/shaders/tile/polygon_tile_map_vert.glsl +0 -16
- package/lib/polygon/shaders/tile/polygon_tile_vert.glsl +0 -42
- package/lib/raster/models/rasterTile.js +0 -196
- package/lib/tile/tileFactory/layers/RasterDataLayer.js +0 -105
|
@@ -1,560 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.TextTriangulation = TextTriangulation;
|
|
9
|
-
exports.default = void 0;
|
|
10
|
-
|
|
11
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
-
|
|
13
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
-
|
|
15
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
16
|
-
|
|
17
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
18
|
-
|
|
19
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
20
|
-
|
|
21
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
22
|
-
|
|
23
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
24
|
-
|
|
25
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
26
|
-
|
|
27
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
28
|
-
|
|
29
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
30
|
-
|
|
31
|
-
var _l7Core = require("@antv/l7-core");
|
|
32
|
-
|
|
33
|
-
var _l7Utils = require("@antv/l7-utils");
|
|
34
|
-
|
|
35
|
-
var _lodash = require("lodash");
|
|
36
|
-
|
|
37
|
-
var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
|
|
38
|
-
|
|
39
|
-
var _collisionIndex = _interopRequireDefault(require("../../utils/collision-index"));
|
|
40
|
-
|
|
41
|
-
var _symbolLayout = require("../../utils/symbol-layout");
|
|
42
|
-
|
|
43
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
44
|
-
|
|
45
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
46
|
-
|
|
47
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
48
|
-
|
|
49
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
50
|
-
|
|
51
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
52
|
-
|
|
53
|
-
/* babel-plugin-inline-import '../shaders/tile/text_frag.glsl' */
|
|
54
|
-
var text_frag = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 48.0\nuniform sampler2D u_sdf_map;\nuniform float u_gamma_scale : 0.5;\n// uniform float u_font_size : 24.0;\nuniform float u_opacity : 1.0;\nuniform vec4 u_stroke_color : [0, 0, 0, 1];\nuniform float u_stroke_width : 2.0;\nuniform float u_halo_blur : 0.5;\nuniform float u_DevicePixelRatio;\n\nvarying vec4 v_color;\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying float v_fontScale;\n\n#pragma include \"picking\"\nvoid main() {\n // get sdf from atlas\n float dist = texture2D(u_sdf_map, v_uv).a;\n\n lowp float buff = (6.0 - u_stroke_width / v_fontScale) / SDF_PX;\n highp float gamma = (u_halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (v_fontScale * u_gamma_scale) / 1.0;\n\n highp float gamma_scaled = gamma * v_gamma_scale;\n\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\n \n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), vec4(u_stroke_color.rgb, u_stroke_color.a * u_opacity), smoothstep(0., 0.5, 1. - dist));\n gl_FragColor.a= gl_FragColor.a * alpha;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
55
|
-
|
|
56
|
-
/* babel-plugin-inline-import '../shaders/tile/text_vert.glsl' */
|
|
57
|
-
var text_vert = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 24.0\nattribute vec3 a_Position;\nattribute vec2 a_tex;\nattribute vec2 a_textOffsets;\nattribute vec4 a_Color;\nattribute float a_Size;\n\nuniform vec2 u_sdf_map_size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying vec4 v_color;\nvarying float v_fontScale;\n\nuniform float u_opacity : 1;\nuniform float u_stroke_width : 2;\nuniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvoid main() {\n v_color = a_Color;\n v_uv = a_tex / u_sdf_map_size;\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = a_Size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n vec4 projected_position;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n projected_position = u_Mvp * (vec4(a_Position.xyz, 1.0));\n } else { // else\n projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n setPickingColor(a_PickingColor);\n\n}\n";
|
|
58
|
-
|
|
59
|
-
/* babel-plugin-inline-import '../shaders/tile/text_map_frag.glsl' */
|
|
60
|
-
var text_map_frag = "#define SDF_PX 8.0\n#define EDGE_GAMMA 0.105\n#define FONT_SIZE 48.0\nuniform sampler2D u_sdf_map;\nuniform float u_gamma_scale : 0.5;\n\nuniform float u_opacity : 1.0;\nuniform vec4 u_stroke_color : [0, 0, 0, 1];\nuniform float u_stroke_width : 2.0;\nuniform float u_halo_blur : 0.5;\nuniform float u_DevicePixelRatio;\n\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying float v_fontScale;\nuniform vec4 u_color;\n\nvoid main() {\n // get sdf from atlas\n float dist = texture2D(u_sdf_map, v_uv).a;\n\n lowp float buff = (6.0 - u_stroke_width / v_fontScale) / SDF_PX;\n highp float gamma = (u_halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (v_fontScale * u_gamma_scale) / 1.0;\n\n highp float gamma_scaled = gamma * v_gamma_scale;\n\n highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);\n \n gl_FragColor = mix(vec4(u_color.rgb, u_color.a * u_opacity), vec4(u_stroke_color.rgb, u_stroke_color.a * u_opacity), smoothstep(0., 0.5, 1. - dist));\n gl_FragColor.a= gl_FragColor.a * alpha;\n}\n";
|
|
61
|
-
|
|
62
|
-
/* babel-plugin-inline-import '../shaders/tile/text_map_vert.glsl' */
|
|
63
|
-
var text_map_vert = "#define FONT_SIZE 24.0\nattribute vec3 a_Position;\nattribute vec2 a_tex;\nattribute vec2 a_textOffsets;\n\nuniform vec2 u_sdf_map_size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nuniform float u_size;\n\nvarying vec2 v_uv;\nvarying float v_gamma_scale;\nvarying float v_fontScale;\n\n#pragma include \"projection\"\n\nvoid main() {\n v_uv = a_tex / u_sdf_map_size;\n\n // \u6587\u672C\u7F29\u653E\u6BD4\u4F8B\n float fontScale = u_size / FONT_SIZE;\n v_fontScale = fontScale;\n\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n vec4 projected_position;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n projected_position = u_Mvp * (vec4(a_Position.xyz, 1.0));\n } else { // else\n projected_position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n gl_Position = vec4(\n projected_position.xy / projected_position.w + a_textOffsets * fontScale / u_ViewportSize * 2.0 * u_DevicePixelRatio, 0.0, 1.0);\n v_gamma_scale = gl_Position.w;\n\n}\n";
|
|
64
|
-
|
|
65
|
-
function TextTriangulation(feature) {
|
|
66
|
-
// @ts-ignore
|
|
67
|
-
var that = this;
|
|
68
|
-
var id = feature.id;
|
|
69
|
-
var vertices = [];
|
|
70
|
-
var indices = [];
|
|
71
|
-
|
|
72
|
-
if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {
|
|
73
|
-
return {
|
|
74
|
-
vertices: [],
|
|
75
|
-
// [ x, y, z, tex.x,tex.y, offset.x. offset.y]
|
|
76
|
-
indices: [],
|
|
77
|
-
size: 7
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
var centroid = that.glyphInfoMap[id].centroid; // 计算中心点
|
|
82
|
-
|
|
83
|
-
var coord = centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;
|
|
84
|
-
that.glyphInfoMap[id].glyphQuads.forEach(function (quad, index) {
|
|
85
|
-
vertices.push.apply(vertices, (0, _toConsumableArray2.default)(coord).concat([quad.tex.x, quad.tex.y + quad.tex.height, quad.tl.x, quad.tl.y], (0, _toConsumableArray2.default)(coord), [quad.tex.x + quad.tex.width, quad.tex.y + quad.tex.height, quad.tr.x, quad.tr.y], (0, _toConsumableArray2.default)(coord), [quad.tex.x + quad.tex.width, quad.tex.y, quad.br.x, quad.br.y], (0, _toConsumableArray2.default)(coord), [quad.tex.x, quad.tex.y, quad.bl.x, quad.bl.y]));
|
|
86
|
-
indices.push(0 + index * 4, 1 + index * 4, 2 + index * 4, 2 + index * 4, 3 + index * 4, 0 + index * 4);
|
|
87
|
-
});
|
|
88
|
-
return {
|
|
89
|
-
vertices: vertices,
|
|
90
|
-
// [ x, y, z, tex.x,tex.y, offset.x. offset.y]
|
|
91
|
-
indices: indices,
|
|
92
|
-
size: 7
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
var TextModel = /*#__PURE__*/function (_BaseModel) {
|
|
97
|
-
(0, _inherits2.default)(TextModel, _BaseModel);
|
|
98
|
-
|
|
99
|
-
var _super = _createSuper(TextModel);
|
|
100
|
-
|
|
101
|
-
function TextModel() {
|
|
102
|
-
var _this;
|
|
103
|
-
|
|
104
|
-
(0, _classCallCheck2.default)(this, TextModel);
|
|
105
|
-
|
|
106
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
107
|
-
args[_key] = arguments[_key];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
111
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "glyphInfoMap", {});
|
|
112
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "currentZoom", -1);
|
|
113
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "textureHeight", 0);
|
|
114
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "textCount", 0);
|
|
115
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "preTextStyle", {});
|
|
116
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapping", function () {
|
|
117
|
-
_this.initGlyph();
|
|
118
|
-
|
|
119
|
-
_this.updateTexture();
|
|
120
|
-
|
|
121
|
-
_this.filterGlyphs();
|
|
122
|
-
|
|
123
|
-
_this.reBuildModel();
|
|
124
|
-
});
|
|
125
|
-
return _this;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
(0, _createClass2.default)(TextModel, [{
|
|
129
|
-
key: "getUninforms",
|
|
130
|
-
value: function getUninforms() {
|
|
131
|
-
var _ref = this.layer.getLayerConfig(),
|
|
132
|
-
_ref$opacity = _ref.opacity,
|
|
133
|
-
opacity = _ref$opacity === void 0 ? 1.0 : _ref$opacity,
|
|
134
|
-
_ref$stroke = _ref.stroke,
|
|
135
|
-
stroke = _ref$stroke === void 0 ? '#fff' : _ref$stroke,
|
|
136
|
-
_ref$strokeWidth = _ref.strokeWidth,
|
|
137
|
-
strokeWidth = _ref$strokeWidth === void 0 ? 0 : _ref$strokeWidth,
|
|
138
|
-
_ref$textAnchor = _ref.textAnchor,
|
|
139
|
-
textAnchor = _ref$textAnchor === void 0 ? 'center' : _ref$textAnchor,
|
|
140
|
-
_ref$textAllowOverlap = _ref.textAllowOverlap,
|
|
141
|
-
textAllowOverlap = _ref$textAllowOverlap === void 0 ? false : _ref$textAllowOverlap,
|
|
142
|
-
_ref$halo = _ref.halo,
|
|
143
|
-
halo = _ref$halo === void 0 ? 0.5 : _ref$halo,
|
|
144
|
-
_ref$gamma = _ref.gamma,
|
|
145
|
-
gamma = _ref$gamma === void 0 ? 2.0 : _ref$gamma,
|
|
146
|
-
usage = _ref.usage,
|
|
147
|
-
_ref$color = _ref.color,
|
|
148
|
-
color = _ref$color === void 0 ? '#fff' : _ref$color,
|
|
149
|
-
_ref$size = _ref.size,
|
|
150
|
-
size = _ref$size === void 0 ? 1 : _ref$size;
|
|
151
|
-
|
|
152
|
-
var _this$fontService = this.fontService,
|
|
153
|
-
canvas = _this$fontService.canvas,
|
|
154
|
-
mapping = _this$fontService.mapping;
|
|
155
|
-
|
|
156
|
-
if (Object.keys(mapping).length !== this.textCount) {
|
|
157
|
-
this.updateTexture();
|
|
158
|
-
this.textCount = Object.keys(mapping).length;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
this.preTextStyle = {
|
|
162
|
-
textAnchor: textAnchor,
|
|
163
|
-
textAllowOverlap: textAllowOverlap
|
|
164
|
-
};
|
|
165
|
-
return {
|
|
166
|
-
u_opacity: (0, _lodash.isNumber)(opacity) ? opacity : 1.0,
|
|
167
|
-
u_stroke_width: (0, _lodash.isNumber)(strokeWidth) ? strokeWidth : 1.0,
|
|
168
|
-
u_stroke_color: this.getStrokeColor(stroke),
|
|
169
|
-
u_sdf_map: this.texture,
|
|
170
|
-
u_halo_blur: halo,
|
|
171
|
-
u_gamma_scale: gamma,
|
|
172
|
-
u_sdf_map_size: [canvas.width, canvas.height],
|
|
173
|
-
u_color: usage === 'basemap' ? (0, _l7Utils.rgb2arr)(color) : [0, 0, 0, 0],
|
|
174
|
-
u_size: usage === 'basemap' ? size : 1
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
}, {
|
|
178
|
-
key: "initModels",
|
|
179
|
-
value: function () {
|
|
180
|
-
var _initModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
181
|
-
var _ref2, _ref2$textAnchor, textAnchor, _ref2$textAllowOverla, textAllowOverlap;
|
|
182
|
-
|
|
183
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
184
|
-
while (1) {
|
|
185
|
-
switch (_context.prev = _context.next) {
|
|
186
|
-
case 0:
|
|
187
|
-
this.extent = this.textExtent();
|
|
188
|
-
_ref2 = this.layer.getLayerConfig(), _ref2$textAnchor = _ref2.textAnchor, textAnchor = _ref2$textAnchor === void 0 ? 'center' : _ref2$textAnchor, _ref2$textAllowOverla = _ref2.textAllowOverlap, textAllowOverlap = _ref2$textAllowOverla === void 0 ? true : _ref2$textAllowOverla;
|
|
189
|
-
this.preTextStyle = {
|
|
190
|
-
textAnchor: textAnchor,
|
|
191
|
-
textAllowOverlap: textAllowOverlap
|
|
192
|
-
};
|
|
193
|
-
_context.next = 5;
|
|
194
|
-
return this.buildModels();
|
|
195
|
-
|
|
196
|
-
case 5:
|
|
197
|
-
return _context.abrupt("return", _context.sent);
|
|
198
|
-
|
|
199
|
-
case 6:
|
|
200
|
-
case "end":
|
|
201
|
-
return _context.stop();
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}, _callee, this);
|
|
205
|
-
}));
|
|
206
|
-
|
|
207
|
-
function initModels() {
|
|
208
|
-
return _initModels.apply(this, arguments);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return initModels;
|
|
212
|
-
}()
|
|
213
|
-
}, {
|
|
214
|
-
key: "buildModels",
|
|
215
|
-
value: function () {
|
|
216
|
-
var _buildModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
217
|
-
var _this$layer$getLayerC, usage, model;
|
|
218
|
-
|
|
219
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
220
|
-
while (1) {
|
|
221
|
-
switch (_context2.prev = _context2.next) {
|
|
222
|
-
case 0:
|
|
223
|
-
this.mapping();
|
|
224
|
-
_this$layer$getLayerC = this.layer.getLayerConfig(), usage = _this$layer$getLayerC.usage;
|
|
225
|
-
_context2.next = 4;
|
|
226
|
-
return this.layer.buildLayerModel({
|
|
227
|
-
moduleName: 'pointTileText_' + usage,
|
|
228
|
-
vertexShader: usage === 'basemap' ? text_map_vert : text_vert,
|
|
229
|
-
fragmentShader: usage === 'basemap' ? text_map_frag : text_frag,
|
|
230
|
-
triangulation: TextTriangulation.bind(this),
|
|
231
|
-
depth: {
|
|
232
|
-
enable: false
|
|
233
|
-
},
|
|
234
|
-
blend: this.getBlend(),
|
|
235
|
-
pick: usage !== 'basemap'
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
case 4:
|
|
239
|
-
model = _context2.sent;
|
|
240
|
-
return _context2.abrupt("return", [model]);
|
|
241
|
-
|
|
242
|
-
case 6:
|
|
243
|
-
case "end":
|
|
244
|
-
return _context2.stop();
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}, _callee2, this);
|
|
248
|
-
}));
|
|
249
|
-
|
|
250
|
-
function buildModels() {
|
|
251
|
-
return _buildModels.apply(this, arguments);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
return buildModels;
|
|
255
|
-
}()
|
|
256
|
-
}, {
|
|
257
|
-
key: "clearModels",
|
|
258
|
-
value: function clearModels() {
|
|
259
|
-
var _this$texture;
|
|
260
|
-
|
|
261
|
-
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
262
|
-
}
|
|
263
|
-
}, {
|
|
264
|
-
key: "registerBuiltinAttributes",
|
|
265
|
-
value: function registerBuiltinAttributes() {
|
|
266
|
-
var _this$layer$getLayerC2 = this.layer.getLayerConfig(),
|
|
267
|
-
usage = _this$layer$getLayerC2.usage;
|
|
268
|
-
|
|
269
|
-
this.styleAttributeService.registerStyleAttribute({
|
|
270
|
-
name: 'textOffsets',
|
|
271
|
-
type: _l7Core.AttributeType.Attribute,
|
|
272
|
-
descriptor: {
|
|
273
|
-
name: 'a_textOffsets',
|
|
274
|
-
buffer: {
|
|
275
|
-
usage: _l7Core.gl.STATIC_DRAW,
|
|
276
|
-
data: [],
|
|
277
|
-
type: _l7Core.gl.FLOAT
|
|
278
|
-
},
|
|
279
|
-
size: 2,
|
|
280
|
-
update: function update(feature, featureIdx, vertex) {
|
|
281
|
-
return [vertex[5], vertex[6]];
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
if (usage !== 'basemap') {
|
|
287
|
-
this.styleAttributeService.registerStyleAttribute({
|
|
288
|
-
name: 'size',
|
|
289
|
-
type: _l7Core.AttributeType.Attribute,
|
|
290
|
-
descriptor: {
|
|
291
|
-
name: 'a_Size',
|
|
292
|
-
buffer: {
|
|
293
|
-
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
294
|
-
data: [],
|
|
295
|
-
type: _l7Core.gl.FLOAT
|
|
296
|
-
},
|
|
297
|
-
size: 1,
|
|
298
|
-
update: function update(feature) {
|
|
299
|
-
var _feature$size = feature.size,
|
|
300
|
-
size = _feature$size === void 0 ? 12 : _feature$size;
|
|
301
|
-
return Array.isArray(size) ? [size[0]] : [size];
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
this.styleAttributeService.registerStyleAttribute({
|
|
308
|
-
name: 'textUv',
|
|
309
|
-
type: _l7Core.AttributeType.Attribute,
|
|
310
|
-
descriptor: {
|
|
311
|
-
name: 'a_tex',
|
|
312
|
-
buffer: {
|
|
313
|
-
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
314
|
-
data: [],
|
|
315
|
-
type: _l7Core.gl.FLOAT
|
|
316
|
-
},
|
|
317
|
-
size: 2,
|
|
318
|
-
update: function update(feature, featureIdx, vertex) {
|
|
319
|
-
return [vertex[3], vertex[4]];
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
}, {
|
|
325
|
-
key: "textExtent",
|
|
326
|
-
value: function textExtent() {
|
|
327
|
-
var bounds = this.mapService.getBounds();
|
|
328
|
-
return (0, _l7Utils.padBounds)(bounds, 0.5);
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* 生成文字纹理(生成文字纹理字典)
|
|
332
|
-
*/
|
|
333
|
-
|
|
334
|
-
}, {
|
|
335
|
-
key: "initTextFont",
|
|
336
|
-
value: function initTextFont() {
|
|
337
|
-
var _ref3 = this.layer.getLayerConfig(),
|
|
338
|
-
_ref3$fontWeight = _ref3.fontWeight,
|
|
339
|
-
fontWeight = _ref3$fontWeight === void 0 ? '400' : _ref3$fontWeight,
|
|
340
|
-
_ref3$fontFamily = _ref3.fontFamily,
|
|
341
|
-
fontFamily = _ref3$fontFamily === void 0 ? 'sans-serif' : _ref3$fontFamily;
|
|
342
|
-
|
|
343
|
-
var data = this.layer.getEncodedData();
|
|
344
|
-
var characterSet = [];
|
|
345
|
-
data.forEach(function (item) {
|
|
346
|
-
var _item$shape = item.shape,
|
|
347
|
-
shape = _item$shape === void 0 ? '' : _item$shape;
|
|
348
|
-
shape = shape.toString();
|
|
349
|
-
|
|
350
|
-
var _iterator = _createForOfIteratorHelper(shape),
|
|
351
|
-
_step;
|
|
352
|
-
|
|
353
|
-
try {
|
|
354
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
355
|
-
var char = _step.value;
|
|
356
|
-
|
|
357
|
-
// 去重
|
|
358
|
-
if (characterSet.indexOf(char) === -1) {
|
|
359
|
-
characterSet.push(char);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
} catch (err) {
|
|
363
|
-
_iterator.e(err);
|
|
364
|
-
} finally {
|
|
365
|
-
_iterator.f();
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
|
-
this.fontService.setFontOptions({
|
|
369
|
-
characterSet: characterSet,
|
|
370
|
-
fontWeight: fontWeight,
|
|
371
|
-
fontFamily: fontFamily,
|
|
372
|
-
iconfont: false
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)
|
|
377
|
-
*/
|
|
378
|
-
|
|
379
|
-
}, {
|
|
380
|
-
key: "generateGlyphLayout",
|
|
381
|
-
value: function generateGlyphLayout() {
|
|
382
|
-
var _this2 = this;
|
|
383
|
-
|
|
384
|
-
var mapping = this.fontService.mapping;
|
|
385
|
-
|
|
386
|
-
var _ref4 = this.layer.getLayerConfig(),
|
|
387
|
-
_ref4$spacing = _ref4.spacing,
|
|
388
|
-
spacing = _ref4$spacing === void 0 ? 2 : _ref4$spacing,
|
|
389
|
-
_ref4$textAnchor = _ref4.textAnchor,
|
|
390
|
-
textAnchor = _ref4$textAnchor === void 0 ? 'center' : _ref4$textAnchor;
|
|
391
|
-
|
|
392
|
-
var data = this.layer.getEncodedData();
|
|
393
|
-
this.glyphInfo = data.map(function (feature) {
|
|
394
|
-
var _feature$shape = feature.shape,
|
|
395
|
-
shape = _feature$shape === void 0 ? '' : _feature$shape,
|
|
396
|
-
id = feature.id,
|
|
397
|
-
_feature$size2 = feature.size,
|
|
398
|
-
size = _feature$size2 === void 0 ? 1 : _feature$size2,
|
|
399
|
-
_feature$textOffset = feature.textOffset,
|
|
400
|
-
textOffset = _feature$textOffset === void 0 ? [0, 0] : _feature$textOffset;
|
|
401
|
-
var shaping = (0, _symbolLayout.shapeText)(shape.toString(), mapping, // @ts-ignore
|
|
402
|
-
size, textAnchor, 'left', spacing, textOffset, false);
|
|
403
|
-
var glyphQuads = (0, _symbolLayout.getGlyphQuads)(shaping, textOffset, false);
|
|
404
|
-
feature.shaping = shaping;
|
|
405
|
-
feature.glyphQuads = glyphQuads;
|
|
406
|
-
feature.centroid = (0, _l7Utils.calculateCentroid)(feature.coordinates); // 此时地图高德2.0 originCentroid == centroid
|
|
407
|
-
|
|
408
|
-
feature.originCentroid = feature.version === 'GAODE2.x' ? (0, _l7Utils.calculateCentroid)(feature.originCoordinates) : feature.originCentroid = feature.centroid;
|
|
409
|
-
_this2.glyphInfoMap[id] = {
|
|
410
|
-
shaping: shaping,
|
|
411
|
-
glyphQuads: glyphQuads,
|
|
412
|
-
centroid: (0, _l7Utils.calculateCentroid)(feature.coordinates)
|
|
413
|
-
};
|
|
414
|
-
return feature;
|
|
415
|
-
});
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* 文字避让 depend on originCentorid
|
|
419
|
-
*/
|
|
420
|
-
|
|
421
|
-
}, {
|
|
422
|
-
key: "filterGlyphs",
|
|
423
|
-
value: function filterGlyphs() {
|
|
424
|
-
var _this3 = this;
|
|
425
|
-
|
|
426
|
-
var _ref5 = this.layer.getLayerConfig(),
|
|
427
|
-
_ref5$padding = _ref5.padding,
|
|
428
|
-
padding = _ref5$padding === void 0 ? [4, 4] : _ref5$padding,
|
|
429
|
-
_ref5$textAllowOverla = _ref5.textAllowOverlap,
|
|
430
|
-
textAllowOverlap = _ref5$textAllowOverla === void 0 ? false : _ref5$textAllowOverla;
|
|
431
|
-
|
|
432
|
-
if (textAllowOverlap) {
|
|
433
|
-
// 如果允许文本覆盖
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
this.glyphInfoMap = {};
|
|
438
|
-
this.currentZoom = this.mapService.getZoom();
|
|
439
|
-
this.extent = this.textExtent();
|
|
440
|
-
|
|
441
|
-
var _this$rendererService = this.rendererService.getViewportSize(),
|
|
442
|
-
width = _this$rendererService.width,
|
|
443
|
-
height = _this$rendererService.height;
|
|
444
|
-
|
|
445
|
-
var collisionIndex = new _collisionIndex.default(width, height);
|
|
446
|
-
var filterData = this.glyphInfo.filter(function (feature) {
|
|
447
|
-
var shaping = feature.shaping,
|
|
448
|
-
_feature$id = feature.id,
|
|
449
|
-
id = _feature$id === void 0 ? 0 : _feature$id;
|
|
450
|
-
var centroid = feature.version === 'GAODE2.x' ? feature.originCentroid : feature.centroid;
|
|
451
|
-
var size = feature.size;
|
|
452
|
-
var fontScale = size / 24;
|
|
453
|
-
|
|
454
|
-
var pixels = _this3.mapService.lngLatToContainer(centroid);
|
|
455
|
-
|
|
456
|
-
var _collisionIndex$place = collisionIndex.placeCollisionBox({
|
|
457
|
-
x1: shaping.left * fontScale - padding[0],
|
|
458
|
-
x2: shaping.right * fontScale + padding[0],
|
|
459
|
-
y1: shaping.top * fontScale - padding[1],
|
|
460
|
-
y2: shaping.bottom * fontScale + padding[1],
|
|
461
|
-
anchorPointX: pixels.x,
|
|
462
|
-
anchorPointY: pixels.y
|
|
463
|
-
}),
|
|
464
|
-
box = _collisionIndex$place.box;
|
|
465
|
-
|
|
466
|
-
if (box && box.length) {
|
|
467
|
-
collisionIndex.insertCollisionBox(box, id);
|
|
468
|
-
return true;
|
|
469
|
-
} else {
|
|
470
|
-
return false;
|
|
471
|
-
}
|
|
472
|
-
});
|
|
473
|
-
filterData.forEach(function (item) {
|
|
474
|
-
// @ts-ignore
|
|
475
|
-
_this3.glyphInfoMap[item.id] = item;
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
* 初始化文字布局
|
|
480
|
-
*/
|
|
481
|
-
|
|
482
|
-
}, {
|
|
483
|
-
key: "initGlyph",
|
|
484
|
-
value: function initGlyph() {
|
|
485
|
-
// 1.生成文字纹理
|
|
486
|
-
this.initTextFont(); // 2.生成文字布局
|
|
487
|
-
|
|
488
|
-
this.generateGlyphLayout();
|
|
489
|
-
}
|
|
490
|
-
/**
|
|
491
|
-
* 更新文字纹理
|
|
492
|
-
*/
|
|
493
|
-
|
|
494
|
-
}, {
|
|
495
|
-
key: "updateTexture",
|
|
496
|
-
value: function updateTexture() {
|
|
497
|
-
var createTexture2D = this.rendererService.createTexture2D;
|
|
498
|
-
var canvas = this.fontService.canvas;
|
|
499
|
-
this.textureHeight = canvas.height;
|
|
500
|
-
|
|
501
|
-
if (this.texture) {
|
|
502
|
-
this.texture.destroy();
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
this.texture = createTexture2D({
|
|
506
|
-
data: canvas,
|
|
507
|
-
mag: _l7Core.gl.LINEAR,
|
|
508
|
-
min: _l7Core.gl.LINEAR,
|
|
509
|
-
width: canvas.width,
|
|
510
|
-
height: canvas.height
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
}, {
|
|
514
|
-
key: "reBuildModel",
|
|
515
|
-
value: function () {
|
|
516
|
-
var _reBuildModel = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
517
|
-
var _this$layer$getLayerC3, usage, model;
|
|
518
|
-
|
|
519
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
520
|
-
while (1) {
|
|
521
|
-
switch (_context3.prev = _context3.next) {
|
|
522
|
-
case 0:
|
|
523
|
-
_this$layer$getLayerC3 = this.layer.getLayerConfig(), usage = _this$layer$getLayerC3.usage;
|
|
524
|
-
this.filterGlyphs();
|
|
525
|
-
_context3.next = 4;
|
|
526
|
-
return this.layer.buildLayerModel({
|
|
527
|
-
moduleName: 'pointTileText_' + usage,
|
|
528
|
-
vertexShader: usage === 'basemap' ? text_map_vert : text_vert,
|
|
529
|
-
fragmentShader: usage === 'basemap' ? text_map_frag : text_frag,
|
|
530
|
-
triangulation: TextTriangulation.bind(this),
|
|
531
|
-
depth: {
|
|
532
|
-
enable: false
|
|
533
|
-
},
|
|
534
|
-
blend: this.getBlend(),
|
|
535
|
-
pick: usage !== 'basemap'
|
|
536
|
-
});
|
|
537
|
-
|
|
538
|
-
case 4:
|
|
539
|
-
model = _context3.sent;
|
|
540
|
-
return _context3.abrupt("return", [model]);
|
|
541
|
-
|
|
542
|
-
case 6:
|
|
543
|
-
case "end":
|
|
544
|
-
return _context3.stop();
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
}, _callee3, this);
|
|
548
|
-
}));
|
|
549
|
-
|
|
550
|
-
function reBuildModel() {
|
|
551
|
-
return _reBuildModel.apply(this, arguments);
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
return reBuildModel;
|
|
555
|
-
}()
|
|
556
|
-
}]);
|
|
557
|
-
return TextModel;
|
|
558
|
-
}(_BaseModel2.default);
|
|
559
|
-
|
|
560
|
-
exports.default = TextModel;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
uniform float u_additive;
|
|
2
|
-
|
|
3
|
-
uniform float u_opacity : 1;
|
|
4
|
-
uniform float u_stroke_opacity : 1;
|
|
5
|
-
uniform float u_stroke_width : 2;
|
|
6
|
-
uniform vec4 u_stroke_color : [0.0, 0.0, 0.0, 0.0];
|
|
7
|
-
|
|
8
|
-
varying vec4 v_data;
|
|
9
|
-
varying vec4 v_color;
|
|
10
|
-
varying float v_radius;
|
|
11
|
-
|
|
12
|
-
#pragma include "sdf_2d"
|
|
13
|
-
#pragma include "picking"
|
|
14
|
-
|
|
15
|
-
void main() {
|
|
16
|
-
int shape = int(floor(v_data.w + 0.5));
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
lowp float antialiasblur = v_data.z;
|
|
20
|
-
float r = v_radius / (v_radius + u_stroke_width);
|
|
21
|
-
|
|
22
|
-
float outer_df;
|
|
23
|
-
float inner_df;
|
|
24
|
-
// 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'
|
|
25
|
-
if (shape == 0) {
|
|
26
|
-
outer_df = sdCircle(v_data.xy, 1.0);
|
|
27
|
-
inner_df = sdCircle(v_data.xy, r);
|
|
28
|
-
} else if (shape == 1) {
|
|
29
|
-
outer_df = sdEquilateralTriangle(1.1 * v_data.xy);
|
|
30
|
-
inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);
|
|
31
|
-
} else if (shape == 2) {
|
|
32
|
-
outer_df = sdBox(v_data.xy, vec2(1.));
|
|
33
|
-
inner_df = sdBox(v_data.xy, vec2(r));
|
|
34
|
-
} else if (shape == 3) {
|
|
35
|
-
outer_df = sdPentagon(v_data.xy, 0.8);
|
|
36
|
-
inner_df = sdPentagon(v_data.xy, r * 0.8);
|
|
37
|
-
} else if (shape == 4) {
|
|
38
|
-
outer_df = sdHexagon(v_data.xy, 0.8);
|
|
39
|
-
inner_df = sdHexagon(v_data.xy, r * 0.8);
|
|
40
|
-
} else if (shape == 5) {
|
|
41
|
-
outer_df = sdOctogon(v_data.xy, 1.0);
|
|
42
|
-
inner_df = sdOctogon(v_data.xy, r);
|
|
43
|
-
} else if (shape == 6) {
|
|
44
|
-
outer_df = sdHexagram(v_data.xy, 0.52);
|
|
45
|
-
inner_df = sdHexagram(v_data.xy, r * 0.52);
|
|
46
|
-
} else if (shape == 7) {
|
|
47
|
-
outer_df = sdRhombus(v_data.xy, vec2(1.0));
|
|
48
|
-
inner_df = sdRhombus(v_data.xy, vec2(r));
|
|
49
|
-
} else if (shape == 8) {
|
|
50
|
-
outer_df = sdVesica(v_data.xy, 1.1, 0.8);
|
|
51
|
-
inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
float opacity_t = smoothstep(0.0, antialiasblur, outer_df);
|
|
56
|
-
|
|
57
|
-
float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(
|
|
58
|
-
antialiasblur,
|
|
59
|
-
0.0,
|
|
60
|
-
inner_df
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
if(u_stroke_width < 0.01) {
|
|
64
|
-
gl_FragColor = vec4(v_color.rgb, v_color.a * u_opacity);
|
|
65
|
-
} else {
|
|
66
|
-
gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), u_stroke_color * u_stroke_opacity, color_t);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if(u_additive > 0.0) {
|
|
70
|
-
gl_FragColor *= opacity_t;
|
|
71
|
-
gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a);
|
|
72
|
-
} else {
|
|
73
|
-
gl_FragColor.a *= opacity_t;
|
|
74
|
-
gl_FragColor = filterColor(gl_FragColor);
|
|
75
|
-
}
|
|
76
|
-
}
|