@antv/l7-layers 2.7.34 → 2.8.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 +3 -0
- package/es/core/BaseLayer.js +40 -10
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/interface.d.ts +1 -0
- package/es/core/interface.js.map +1 -1
- package/es/plugins/MultiPassRendererPlugin.d.ts +0 -13
- package/es/plugins/MultiPassRendererPlugin.js +2 -36
- package/es/plugins/MultiPassRendererPlugin.js.map +1 -1
- package/es/point/models/fillmage.d.ts +1 -0
- package/es/point/models/fillmage.js +14 -2
- package/es/point/models/fillmage.js.map +1 -1
- package/es/utils/multiPassRender.d.ts +16 -0
- package/es/utils/multiPassRender.js +34 -0
- package/es/utils/multiPassRender.js.map +1 -0
- package/lib/core/BaseLayer.js +42 -12
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/plugins/MultiPassRendererPlugin.js +3 -39
- package/lib/plugins/MultiPassRendererPlugin.js.map +1 -1
- package/lib/point/models/fillmage.js +13 -2
- package/lib/point/models/fillmage.js.map +1 -1
- package/lib/utils/multiPassRender.js +46 -0
- package/lib/utils/multiPassRender.js.map +1 -0
- package/package.json +5 -5
|
@@ -6,9 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
-
exports.normalizePasses = normalizePasses;
|
|
10
|
-
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
9
|
|
|
13
10
|
var _initializerDefineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/initializerDefineProperty"));
|
|
14
11
|
|
|
@@ -28,17 +25,9 @@ var _inversify = require("inversify");
|
|
|
28
25
|
|
|
29
26
|
require("reflect-metadata");
|
|
30
27
|
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
function normalizePasses(passes) {
|
|
34
|
-
return passes.map(function (pass) {
|
|
35
|
-
if (typeof pass === 'string') {
|
|
36
|
-
pass = [pass, {}];
|
|
37
|
-
}
|
|
28
|
+
var _multiPassRender = require("../utils/multiPassRender");
|
|
38
29
|
|
|
39
|
-
|
|
40
|
-
});
|
|
41
|
-
}
|
|
30
|
+
var _dec, _dec2, _class, _class2, _descriptor;
|
|
42
31
|
|
|
43
32
|
var MultiPassRendererPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inversify.inject)(_l7Core.TYPES.IGlobalConfigService), _dec(_class = (_class2 = function () {
|
|
44
33
|
function MultiPassRendererPlugin() {
|
|
@@ -64,7 +53,7 @@ var MultiPassRendererPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0,
|
|
|
64
53
|
_this.enabled = !!enableMultiPassRenderer && layer.getLayerConfig().enableMultiPassRenderer !== false;
|
|
65
54
|
|
|
66
55
|
if (_this.enabled) {
|
|
67
|
-
layer.multiPassRenderer =
|
|
56
|
+
layer.multiPassRenderer = (0, _multiPassRender.createMultiPassRenderer)(layer, passes, postProcessingPassFactory, normalPassFactory);
|
|
68
57
|
layer.multiPassRenderer.setRenderFlag(true);
|
|
69
58
|
}
|
|
70
59
|
});
|
|
@@ -78,31 +67,6 @@ var MultiPassRendererPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0,
|
|
|
78
67
|
}
|
|
79
68
|
});
|
|
80
69
|
}
|
|
81
|
-
}, {
|
|
82
|
-
key: "createMultiPassRenderer",
|
|
83
|
-
value: function createMultiPassRenderer(layer, passes, postProcessingPassFactory, normalPassFactory) {
|
|
84
|
-
var multiPassRenderer = layer.multiPassRenderer;
|
|
85
|
-
|
|
86
|
-
var _layer$getLayerConfig3 = layer.getLayerConfig(),
|
|
87
|
-
enablePicking = _layer$getLayerConfig3.enablePicking,
|
|
88
|
-
enableTAA = _layer$getLayerConfig3.enableTAA;
|
|
89
|
-
|
|
90
|
-
if (enableTAA) {
|
|
91
|
-
multiPassRenderer.add(normalPassFactory('taa'));
|
|
92
|
-
} else {
|
|
93
|
-
multiPassRenderer.add(normalPassFactory('render'));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
normalizePasses(passes).forEach(function (pass) {
|
|
97
|
-
var _pass = (0, _slicedToArray2.default)(pass, 2),
|
|
98
|
-
passName = _pass[0],
|
|
99
|
-
initializationOptions = _pass[1];
|
|
100
|
-
|
|
101
|
-
multiPassRenderer.add(postProcessingPassFactory(passName), initializationOptions);
|
|
102
|
-
});
|
|
103
|
-
multiPassRenderer.add(postProcessingPassFactory('copy'));
|
|
104
|
-
return multiPassRenderer;
|
|
105
|
-
}
|
|
106
70
|
}]);
|
|
107
71
|
return MultiPassRendererPlugin;
|
|
108
72
|
}(), (_descriptor = (0, _applyDecoratedDescriptor2.default)(_class2.prototype, "configService", [_dec2], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/MultiPassRendererPlugin.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/MultiPassRendererPlugin.ts"],"names":["MultiPassRendererPlugin","TYPES","IGlobalConfigService","layer","rendererService","postProcessingPassFactory","normalPassFactory","hooks","init","tap","getLayerConfig","enableMultiPassRenderer","passes","enabled","multiPassRenderer","setRenderFlag","beforeRender","getViewportSize","width","height","resize"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AASA;;AACA;;AACA;;;;IAgBqBA,uB,WADpB,4B,UAEE,uBAAOC,cAAMC,oBAAb,C;;;;;;;;;WAKD,eACEC,KADF,QAWE;AAAA;;AAAA,UAREC,eAQF,QAREA,eAQF;AAAA,UAPEC,yBAOF,QAPEA,yBAOF;AAAA,UANEC,iBAMF,QANEA,iBAMF;AACAH,MAAAA,KAAK,CAACI,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,yBAArB,EAAgD,YAAM;AACpD,oCAAiDN,KAAK,CAACO,cAAN,EAAjD;AAAA,YAAQC,uBAAR,yBAAQA,uBAAR;AAAA,2DAAiCC,MAAjC;AAAA,YAAiCA,MAAjC,uCAA0C,EAA1C;;AAGA,QAAA,KAAI,CAACC,OAAL,GACE,CAAC,CAACF,uBAAF,IACAR,KAAK,CAACO,cAAN,GAAuBC,uBAAvB,KAAmD,KAFrD;;AAKA,YAAI,KAAI,CAACE,OAAT,EAAkB;AAChBV,UAAAA,KAAK,CAACW,iBAAN,GAA0B,8CACxBX,KADwB,EAExBS,MAFwB,EAGxBP,yBAHwB,EAIxBC,iBAJwB,CAA1B;AAMAH,UAAAA,KAAK,CAACW,iBAAN,CAAwBC,aAAxB,CAAsC,IAAtC;AACD;AACF,OAlBD;AAoBAZ,MAAAA,KAAK,CAACI,KAAN,CAAYS,YAAZ,CAAyBP,GAAzB,CAA6B,yBAA7B,EAAwD,YAAM;AAC5D,YAAI,KAAI,CAACI,OAAT,EAAkB;AAEhB,sCAA0BT,eAAe,CAACa,eAAhB,EAA1B;AAAA,cAAQC,KAAR,yBAAQA,KAAR;AAAA,cAAeC,MAAf,yBAAeA,MAAf;;AACAhB,UAAAA,KAAK,CAACW,iBAAN,CAAwBM,MAAxB,CAA+BF,KAA/B,EAAsCC,MAAtC;AACD;AACF,OAND;AAOD","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IPass,\n IPostProcessingPass,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\nimport { createMultiPassRenderer } from '../utils/multiPassRender';\n\n/**\n * 自定义渲染管线:\n * ClearPass -> PixelPickingPass(可选) -> RenderPass/TAAPass -> PostProcessing -> CopyPass\n * 根据 Layer 配置的 passes 创建 PostProcessing\n * @example\n * new PolygonLayer({\n * enableMultiPassRenderer: true,\n * passes: [\n * 'blurH',\n * ['blurV', { radius: 10 }],\n * ],\n * })\n */\n@injectable()\nexport default class MultiPassRendererPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n private enabled: boolean;\n\n public apply(\n layer: ILayer,\n {\n rendererService,\n postProcessingPassFactory,\n normalPassFactory,\n }: {\n rendererService: IRendererService;\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>;\n normalPassFactory: (name: string) => IPass<unknown>;\n },\n ) {\n layer.hooks.init.tap('MultiPassRendererPlugin', () => {\n const { enableMultiPassRenderer, passes = [] } = layer.getLayerConfig();\n\n // SceneConfig 的 enableMultiPassRenderer 配置项可以统一关闭\n this.enabled =\n !!enableMultiPassRenderer &&\n layer.getLayerConfig().enableMultiPassRenderer !== false;\n\n // 根据 LayerConfig passes 配置项初始化\n if (this.enabled) {\n layer.multiPassRenderer = createMultiPassRenderer(\n layer,\n passes,\n postProcessingPassFactory,\n normalPassFactory,\n );\n layer.multiPassRenderer.setRenderFlag(true);\n }\n });\n\n layer.hooks.beforeRender.tap('MultiPassRendererPlugin', () => {\n if (this.enabled) {\n // 渲染前根据 viewport 调整 FBO size\n const { width, height } = rendererService.getViewportSize();\n layer.multiPassRenderer.resize(width, height);\n }\n });\n }\n}\n"],"file":"MultiPassRendererPlugin.js"}
|
|
@@ -40,7 +40,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
40
40
|
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; } }
|
|
41
41
|
|
|
42
42
|
var pointFillFrag = "uniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv;\n\nvoid main() {\n\n float opacity = styleMappingMat[0][0];\n\n vec2 pos = v_Iconuv / u_textSize + v_uv / u_textSize * 64.;\n gl_FragColor = texture2D(u_texture, pos);\n gl_FragColor.a *= opacity;\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
43
|
-
var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute vec2 a_Uv;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_isMeter;\n\nvarying float v_radius;\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv; // icon \u8D34\u56FE\u7684 uv \u5750\u6807\n\nuniform float u_opacity : 1;\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n\n v_uv = (a_Extrude.xy + 1.0)/2.0;\n v_uv.y = 1.0 - v_uv.y;\n v_Iconuv = a_Uv;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // empty - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // radius(16-bit)\n v_radius = a_Size;\n\n // TODO: billboard\n // anti-alias\n \n\n vec2 offset = (extrude.xy * (a_Size) + textrueOffsets);\n vec3 aPosition = a_Position;\n if(u_isMeter < 1.0) {\n // \u4E0D\u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n offset = project_pixel(offset);\n } else {\n // \u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n aPosition.xy += offset;\n offset.x = 0.0;\n offset.y = 0.0;\n }\n }\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
43
|
+
var pointFillVert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Extrude;\nattribute float a_Size;\nattribute vec2 a_Uv;\n\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform mat2 u_RotateMatrix;\nuniform float u_isMeter;\n\nvarying float v_radius;\nvarying vec2 v_uv; // \u672C\u8EAB\u7684 uv \u5750\u6807\nvarying vec2 v_Iconuv; // icon \u8D34\u56FE\u7684 uv \u5750\u6807\n\nuniform float u_opacity : 1;\nuniform vec2 u_offsets;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\n\nvoid main() {\n vec3 extrude = a_Extrude;\n\n v_uv = (a_Extrude.xy + 1.0)/2.0;\n v_uv.y = 1.0 - v_uv.y;\n v_Iconuv = a_Uv;\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // empty - empty - empty - empty\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping\n\n // radius(16-bit)\n v_radius = a_Size;\n\n // TODO: billboard\n // anti-alias\n \n\n vec2 offset = (u_RotateMatrix * extrude.xy * (a_Size) + textrueOffsets);\n vec3 aPosition = a_Position;\n if(u_isMeter < 1.0) {\n // \u4E0D\u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n offset = project_pixel(offset);\n } else {\n // \u4EE5\u7C73\u4E3A\u5B9E\u9645\u5355\u4F4D\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n aPosition.xy += offset;\n offset.x = 0.0;\n offset.y = 0.0;\n }\n }\n\n\n // vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n vec4 project_pos = project_position(vec4(aPosition.xy, 0.0, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(project_pos.xy + offset, 0.0, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, project_pixel(setPickingOrder(0.0)), 1.0));\n }\n \n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, 0.0, 1.0));\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
44
44
|
|
|
45
45
|
var FillImageModel = function (_BaseModel) {
|
|
46
46
|
(0, _inherits2.default)(FillImageModel, _BaseModel);
|
|
@@ -60,6 +60,7 @@ var FillImageModel = function (_BaseModel) {
|
|
|
60
60
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meter2coord", 1);
|
|
61
61
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
|
|
62
62
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isMeter", false);
|
|
63
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "radian", 0);
|
|
63
64
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateTexture", function () {
|
|
64
65
|
var createTexture2D = _this.rendererService.createTexture2D;
|
|
65
66
|
|
|
@@ -103,12 +104,21 @@ var FillImageModel = function (_BaseModel) {
|
|
|
103
104
|
stroke = _ref$stroke === void 0 ? 'rgba(0,0,0,0)' : _ref$stroke,
|
|
104
105
|
_ref$offsets = _ref.offsets,
|
|
105
106
|
offsets = _ref$offsets === void 0 ? [0, 0] : _ref$offsets,
|
|
106
|
-
blend = _ref.blend
|
|
107
|
+
blend = _ref.blend,
|
|
108
|
+
rotation = _ref.rotation;
|
|
107
109
|
|
|
108
110
|
if (this.rendererService.getDirty()) {
|
|
109
111
|
this.texture.bind();
|
|
110
112
|
}
|
|
111
113
|
|
|
114
|
+
var rotateFlag = 1;
|
|
115
|
+
|
|
116
|
+
if (this.mapService.version === 'GAODE2.x' || this.mapService.version === 'GAODE1.x') {
|
|
117
|
+
rotateFlag = -1;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
this.radian = rotation ? rotateFlag * Math.PI * rotation / 180 : rotateFlag * Math.PI * (this.mapService.getRotation() % 360) / 180;
|
|
121
|
+
|
|
112
122
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
113
123
|
opacity: opacity,
|
|
114
124
|
strokeOpacity: strokeOpacity,
|
|
@@ -150,6 +160,7 @@ var FillImageModel = function (_BaseModel) {
|
|
|
150
160
|
|
|
151
161
|
return {
|
|
152
162
|
u_isMeter: Number(this.isMeter),
|
|
163
|
+
u_RotateMatrix: new Float32Array([Math.cos(this.radian), Math.sin(this.radian), -Math.sin(this.radian), Math.cos(this.radian)]),
|
|
153
164
|
u_additive: blend === 'additive' ? 1.0 : 0.0,
|
|
154
165
|
u_dataTexture: this.dataTexture,
|
|
155
166
|
u_cellTypeLayout: this.getCellTypeLayout(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","gl","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","getDirty","bind","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","updateTexture","on","unit","version","mapService","Version","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","pointFillFrag","pointFillVert","destroy","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_isMeter: Number(this.isMeter),\n\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill-' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/fillmage.ts"],"names":["FillImageModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","mag","min","mipmap","layer","renderLayers","gl","LINEAR","LINEAR_MIPMAP_LINEAR","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","strokeOpacity","strokeWidth","stroke","offsets","blend","rotation","getDirty","bind","rotateFlag","mapService","version","radian","Math","PI","getRotation","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_RotateMatrix","Float32Array","cos","sin","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_texture","u_textSize","u_opacity","u_offsets","isOffsetStatic","styleAttributeService","createAttributesAndIndices","PointFillTriangulation","updateTexture","on","unit","Version","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","enable","getBlend","stencil","pointFillFrag","pointFillVert","destroy","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","iconMap","getIconMap","shape","extrude","extrudeIndex","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttribute,\n IElements,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n// static pointLayer shader - not support animate\nimport pointFillFrag from '../shaders/image/fillImage_frag.glsl';\nimport pointFillVert from '../shaders/image/fillImage_vert.glsl';\n\nimport { isNumber } from 'lodash';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class FillImageModel extends BaseModel {\n public meter2coord: number = 1;\n private texture: ITexture2D;\n private isMeter: boolean = false;\n private radian: number = 0; // 旋转的弧度\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n strokeOpacity = 1,\n strokeWidth = 0,\n stroke = 'rgba(0,0,0,0)',\n offsets = [0, 0],\n blend,\n rotation,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian = rotation\n ? (rotateFlag * Math.PI * rotation) / 180\n : (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n strokeOpacity,\n strokeWidth,\n stroke,\n offsets,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_isMeter: Number(this.isMeter),\n u_RotateMatrix: new Float32Array([\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_texture: this.texture,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointfill-' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'normal',\n };\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { shape } = feature;\n const { x, y } = iconMap[shape as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 5 } = feature;\n // console.log('featureIdx', featureIdx, feature)\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n mag: 'linear',\n min: 'linear mipmap nearest',\n mipmap: true,\n });\n // this.layer.render();\n // TODO: 更新完纹理后在更新的图层的时候需要更新所有的图层\n this.layer.renderLayers();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.LINEAR,\n // min: gl.LINEAR,\n min: gl.LINEAR_MIPMAP_LINEAR,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n mipmap: true,\n });\n };\n}\n"],"file":"fillmage.js"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createMultiPassRenderer = createMultiPassRenderer;
|
|
9
|
+
exports.normalizePasses = normalizePasses;
|
|
10
|
+
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
|
|
13
|
+
function normalizePasses(passes) {
|
|
14
|
+
return passes.map(function (pass) {
|
|
15
|
+
if (typeof pass === 'string') {
|
|
16
|
+
pass = [pass, {}];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return pass;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function createMultiPassRenderer(layer, passes, postProcessingPassFactory, normalPassFactory) {
|
|
24
|
+
var multiPassRenderer = layer.multiPassRenderer;
|
|
25
|
+
|
|
26
|
+
var _layer$getLayerConfig = layer.getLayerConfig(),
|
|
27
|
+
enablePicking = _layer$getLayerConfig.enablePicking,
|
|
28
|
+
enableTAA = _layer$getLayerConfig.enableTAA;
|
|
29
|
+
|
|
30
|
+
if (enableTAA) {
|
|
31
|
+
multiPassRenderer.add(normalPassFactory('taa'));
|
|
32
|
+
} else {
|
|
33
|
+
multiPassRenderer.add(normalPassFactory('render'));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
normalizePasses(passes).forEach(function (pass) {
|
|
37
|
+
var _pass = (0, _slicedToArray2.default)(pass, 2),
|
|
38
|
+
passName = _pass[0],
|
|
39
|
+
initializationOptions = _pass[1];
|
|
40
|
+
|
|
41
|
+
multiPassRenderer.add(postProcessingPassFactory(passName), initializationOptions);
|
|
42
|
+
});
|
|
43
|
+
multiPassRenderer.add(postProcessingPassFactory('copy'));
|
|
44
|
+
return multiPassRenderer;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=multiPassRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/multiPassRender.ts"],"names":["normalizePasses","passes","map","pass","createMultiPassRenderer","layer","postProcessingPassFactory","normalPassFactory","multiPassRenderer","getLayerConfig","enablePicking","enableTAA","add","forEach","passName","initializationOptions"],"mappings":";;;;;;;;;;;;AAaO,SAASA,eAAT,CACLC,MADK,EAEL;AACA,SAAOA,MAAM,CAACC,GAAP,CAAW,UAACC,IAAD,EAAyD;AACzE,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,MAAAA,IAAI,GAAG,CAACA,IAAD,EAAO,EAAP,CAAP;AACD;;AACD,WAAOA,IAAP;AACD,GALM,CAAP;AAMD;;AAMM,SAASC,uBAAT,CACLC,KADK,EAELJ,MAFK,EAGLK,yBAHK,EAILC,iBAJK,EAKL;AACA,MAAMC,iBAAiB,GAAGH,KAAK,CAACG,iBAAhC;;AACA,8BAAqCH,KAAK,CAACI,cAAN,EAArC;AAAA,MAAQC,aAAR,yBAAQA,aAAR;AAAA,MAAuBC,SAAvB,yBAAuBA,SAAvB;;AAQA,MAAIA,SAAJ,EAAe;AACbH,IAAAA,iBAAiB,CAACI,GAAlB,CAAsBL,iBAAiB,CAAC,KAAD,CAAvC;AACD,GAFD,MAEO;AAELC,IAAAA,iBAAiB,CAACI,GAAlB,CAAsBL,iBAAiB,CAAC,QAAD,CAAvC;AACD;;AAGDP,EAAAA,eAAe,CAACC,MAAD,CAAf,CAAwBY,OAAxB,CACE,UAACV,IAAD,EAAgD;AAC9C,6CAA0CA,IAA1C;AAAA,QAAOW,QAAP;AAAA,QAAiBC,qBAAjB;;AACAP,IAAAA,iBAAiB,CAACI,GAAlB,CACEN,yBAAyB,CAACQ,QAAD,CAD3B,EAEEC,qBAFF;AAID,GAPH;AAWAP,EAAAA,iBAAiB,CAACI,GAAlB,CAAsBN,yBAAyB,CAAC,MAAD,CAA/C;AAEA,SAAOE,iBAAP;AACD","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IPass,\n IPostProcessingPass,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\n\n/**\n * 'blurH' -> ['blurH', {}]\n */\nexport function normalizePasses(\n passes: Array<string | [string, { [key: string]: unknown }]>,\n) {\n return passes.map((pass: string | [string, { [key: string]: unknown }]) => {\n if (typeof pass === 'string') {\n pass = [pass, {}];\n }\n return pass;\n });\n}\n\n/**\n * 默认添加 ClearPass、RenderPass\n * 以及 PostProcessing 中的最后一个 CopyPass\n */\nexport function createMultiPassRenderer(\n layer: ILayer,\n passes: Array<string | [string, { [key: string]: unknown }]>,\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>,\n normalPassFactory: (name: string) => IPass<unknown>,\n) {\n const multiPassRenderer = layer.multiPassRenderer;\n const { enablePicking, enableTAA } = layer.getLayerConfig();\n\n // picking pass if enabled\n // if (enablePicking) {\n // multiPassRenderer.add(normalPassFactory('pixelPicking'));\n // }\n\n // use TAA pass if enabled instead of render pass\n if (enableTAA) {\n multiPassRenderer.add(normalPassFactory('taa'));\n } else {\n // render all layers in this pass\n multiPassRenderer.add(normalPassFactory('render'));\n }\n\n // post processing\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const [passName, initializationOptions] = pass;\n multiPassRenderer.add(\n postProcessingPassFactory(passName),\n initializationOptions,\n );\n },\n );\n\n // 末尾为固定的 CopyPass\n multiPassRenderer.add(postProcessingPassFactory('copy'));\n\n return multiPassRenderer;\n}\n"],"file":"multiPassRender.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-layers",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "L7's collection of built-in layers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/geo-coord": "^1.0.8",
|
|
27
|
-
"@antv/l7-core": "^2.
|
|
28
|
-
"@antv/l7-source": "^2.
|
|
29
|
-
"@antv/l7-utils": "^2.
|
|
27
|
+
"@antv/l7-core": "^2.8.0",
|
|
28
|
+
"@antv/l7-source": "^2.8.0",
|
|
29
|
+
"@antv/l7-utils": "^2.8.0",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "bd91e9f9203a10fa305cbfb815ffe37c53c584ac",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|