@antv/l7-layers 2.8.15 → 2.8.18
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/Geometry/models/plane.js +16 -4
- package/es/Geometry/models/plane.js.map +1 -1
- package/es/citybuliding/models/build.js +5 -1
- package/es/citybuliding/models/build.js.map +1 -1
- package/es/core/BaseLayer.js +0 -2
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/interface.d.ts +6 -0
- package/es/core/interface.js.map +1 -1
- package/es/heatmap/models/heatmap.js +5 -1
- package/es/heatmap/models/heatmap.js.map +1 -1
- package/es/line/models/line.js +11 -6
- package/es/line/models/line.js.map +1 -1
- package/es/plugins/DataMappingPlugin.js +1 -0
- package/es/plugins/DataMappingPlugin.js.map +1 -1
- package/es/point/models/extrude.js +2 -2
- package/es/point/models/extrude.js.map +1 -1
- package/es/point/models/fill.js +7 -3
- package/es/point/models/fill.js.map +1 -1
- package/es/point/models/fillmage.js +8 -4
- package/es/point/models/fillmage.js.map +1 -1
- package/es/point/models/radar.js +6 -2
- package/es/point/models/radar.js.map +1 -1
- package/es/point/models/text.js +5 -2
- package/es/point/models/text.js.map +1 -1
- package/es/polygon/models/extrude.d.ts +7 -2
- package/es/polygon/models/extrude.js +121 -8
- package/es/polygon/models/extrude.js.map +1 -1
- package/es/polygon/models/fill.js +4 -0
- package/es/polygon/models/fill.js.map +1 -1
- package/es/polygon/models/ocean.js +1 -1
- package/es/polygon/models/ocean.js.map +1 -1
- package/es/polygon/models/water.js +3 -3
- package/es/polygon/models/water.js.map +1 -1
- package/lib/Geometry/models/plane.js +16 -4
- package/lib/Geometry/models/plane.js.map +1 -1
- package/lib/citybuliding/models/build.js +5 -1
- package/lib/citybuliding/models/build.js.map +1 -1
- package/lib/core/BaseLayer.js +0 -2
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/heatmap/models/heatmap.js +4 -0
- package/lib/heatmap/models/heatmap.js.map +1 -1
- package/lib/line/models/line.js +11 -6
- package/lib/line/models/line.js.map +1 -1
- package/lib/plugins/DataMappingPlugin.js +1 -0
- package/lib/plugins/DataMappingPlugin.js.map +1 -1
- package/lib/point/models/extrude.js +1 -1
- package/lib/point/models/extrude.js.map +1 -1
- package/lib/point/models/fill.js +6 -2
- package/lib/point/models/fill.js.map +1 -1
- package/lib/point/models/fillmage.js +7 -3
- package/lib/point/models/fillmage.js.map +1 -1
- package/lib/point/models/radar.js +5 -1
- package/lib/point/models/radar.js.map +1 -1
- package/lib/point/models/text.js +5 -2
- package/lib/point/models/text.js.map +1 -1
- package/lib/polygon/models/extrude.js +122 -7
- package/lib/polygon/models/extrude.js.map +1 -1
- package/lib/polygon/models/fill.js +4 -0
- package/lib/polygon/models/fill.js.map +1 -1
- package/lib/polygon/models/ocean.js +1 -1
- package/lib/polygon/models/ocean.js.map +1 -1
- package/lib/polygon/models/water.js +3 -3
- package/lib/polygon/models/water.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/ocean.ts"],"names":["AttributeType","gl","getMask","rgb2arr","BaseModel","polygonTriangulation","OceanModel","layer","getLayerConfig","opacity","watercolor","watercolor2","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_texture1","texture1","u_texture2","texture2","u_texture3","texture3","u_watercolor","u_watercolor2","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","ocean_vert","fragmentShader","ocean_frag","triangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","rendererService","defaultTextureOptions","initImage","images","initTex","layerService","updateLayerRenderList","renderLayers","callback","loadedCount","loadedImages","map","imgSrc","image","Image","crossOrigin","src","push","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { create, isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport ocean_frag from '../shaders/water/polygon_ocean_frag.glsl';\nimport ocean_vert from '../shaders/water/polygon_ocean_vert.glsl';\nexport default class OceanModel extends BaseModel {\n private texture1: ITexture2D;\n private texture2: ITexture2D;\n private texture3: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n watercolor = '#6D99A8',\n watercolor2 = '#0F121C',\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\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_texture1: this.texture1,\n u_texture2: this.texture2,\n u_texture3: this.texture3,\n u_watercolor: rgb2arr(watercolor),\n u_watercolor2: rgb2arr(watercolor2),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_ocean',\n vertexShader: ocean_vert,\n fragmentShader: ocean_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture1.destroy();\n this.texture2.destroy();\n this.texture3.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'linear',\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.STATIC_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 normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const { createTexture2D } = this.rendererService;\n const defaultTextureOptions = { height: 0, width: 0 };\n // 默认索引为 undefined,所以单独赋值\n this.texture1 = createTexture2D(defaultTextureOptions);\n this.texture2 = createTexture2D(defaultTextureOptions);\n this.texture3 = createTexture2D(defaultTextureOptions);\n\n // 加载完 image 后单独给 texture f赋值\n initImage((images: HTMLImageElement[]) => {\n this.texture1 = initTex(images[0]);\n this.texture2 = initTex(images[1]);\n this.texture3 = initTex(images[2]);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n function initImage(callback: (loadedImages: HTMLImageElement[]) => void) {\n let loadedCount = 0;\n const loadedImages: HTMLImageElement[] = [];\n const images = [\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*MJ22QbpuCzIAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*-z2HSIVDsHIAAAAAAAAAAAAAARQnAQ',\n ];\n images.map((imgSrc: string) => {\n const image = new Image();\n image.crossOrigin = '';\n image.src = imgSrc;\n loadedImages.push(image);\n image.onload = () => {\n loadedCount++;\n if (loadedCount === 3) {\n callback(loadedImages);\n }\n };\n });\n }\n\n function initTex(image: HTMLImageElement) {\n return createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n }\n }\n}\n"],"file":"ocean.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/ocean.ts"],"names":["AttributeType","gl","getMask","rgb2arr","BaseModel","polygonTriangulation","OceanModel","layer","getLayerConfig","opacity","watercolor","watercolor2","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_texture1","texture1","u_texture2","texture2","u_texture3","texture3","u_watercolor","u_watercolor2","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","ocean_vert","fragmentShader","ocean_frag","triangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","rendererService","defaultTextureOptions","initImage","images","initTex","layerService","updateLayerRenderList","renderLayers","callback","loadedCount","loadedImages","map","imgSrc","image","Image","crossOrigin","src","push","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag"],"mappings":";;;;;;;;;;;;;;AAAA,SACEA,aADF,EAEEC,EAFF,QAOO,eAPP;AAQA,SAASC,OAAT,EAAkBC,OAAlB,QAAiC,gBAAjC;AAEA,OAAOC,SAAP,MAAsB,sBAAtB;AAEA,SAASC,oBAAT,QAAqC,0BAArC;;;;IAGqBC,U;;;;;;;;;;;;;;;;;;;;;;;;;;;WAInB,wBAAsB;AACpB,iBAII,KAAKC,KAAL,CAAWC,cAAX,EAJJ;AAAA,8BACEC,OADF;AAAA,UACEA,OADF,6BACY,CADZ;AAAA,iCAEEC,UAFF;AAAA,UAEEA,UAFF,gCAEe,SAFf;AAAA,kCAGEC,WAHF;AAAA,UAGEA,WAHF,iCAGgB,SAHhB;;AAKA,UAAI,KAAKC,eAAL,IAAwB,KAAKC,qBAAL,CAA2B;AAAEJ,QAAAA,OAAO,EAAPA;AAAF,OAA3B,CAA5B,EAAqE;AACnE,aAAKK,oBAAL,CAA0B;AAAEL,UAAAA,OAAO,EAAPA;AAAF,SAA1B;AACA,YAAMM,UAAU,GAAG,KAAKR,KAAL,CAAWS,cAAX,EAAnB;;AACA,iCAAgC,KAAKC,YAAL,CAC9B,KAAKC,UADyB,EAE9BH,UAF8B,EAG9B,KAAKI,cAHyB,CAAhC;AAAA,YAAQC,IAAR,sBAAQA,IAAR;AAAA,YAAcC,KAAd,sBAAcA,KAAd;AAAA,YAAqBC,MAArB,sBAAqBA,MAArB;;AAKA,aAAKC,QAAL,GAAgBD,MAAhB;AAEA,aAAKE,WAAL,GACE,KAAKN,UAAL,GAAkB,CAAlB,IAAuBE,IAAI,CAACK,MAAL,GAAc,CAArC,GACI,KAAKC,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAJA,IAFmB;AAGnBQ,UAAAA,MAAM,EAAE3B,EAAE,CAAC4B,SAHQ;AAInBC,UAAAA,IAAI,EAAE7B,EAAE,CAAC8B,KAJU;AAKnBV,UAAAA,KAAK,EAALA,KALmB;AAMnBC,UAAAA,MAAM,EAANA;AANmB,SAArB,CADJ,GASI,KAAKI,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAE,CAAC,CAAD,CAFa;AAGnBQ,UAAAA,MAAM,EAAE3B,EAAE,CAAC4B,SAHQ;AAInBC,UAAAA,IAAI,EAAE7B,EAAE,CAAC8B,KAJU;AAKnBV,UAAAA,KAAK,EAAE,CALY;AAMnBC,UAAAA,MAAM,EAAE;AANW,SAArB,CAVN;AAkBD;;AACD,aAAO;AACLU,QAAAA,UAAU,EAAE,KAAKC,QADZ;AAELC,QAAAA,UAAU,EAAE,KAAKC,QAFZ;AAGLC,QAAAA,UAAU,EAAE,KAAKC,QAHZ;AAILC,QAAAA,YAAY,EAAEnC,OAAO,CAACO,UAAD,CAJhB;AAKL6B,QAAAA,aAAa,EAAEpC,OAAO,CAACQ,WAAD,CALjB;AAML6B,QAAAA,aAAa,EAAE,KAAKhB,WANf;AAOLiB,QAAAA,gBAAgB,EAAE,KAAKC,iBAAL,EAPb;AAQLC,QAAAA,SAAS,EAAE,UAASlC,OAAT,IAAoBA,OAApB,GAA8B;AARpC,OAAP;AAUD;;;WAED,8BAA2C;AACzC,aAAO;AACLmC,QAAAA,MAAM,EAAE,KAAKrC,KAAL,CAAWsC,mBAAX;AADH,OAAP;AAGD;;;WAED,sBAA8B;AAC5B,WAAKC,WAAL;AACA,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,kBAGI,KAAKxC,KAAL,CAAWC,cAAX,EAHJ;AAAA,6BACEwC,IADF;AAAA,UACEA,IADF,2BACS,KADT;AAAA,mCAEEC,UAFF;AAAA,UAEEA,UAFF,iCAEe,IAFf;;AAIA,aAAO,CACL,KAAK1C,KAAL,CAAW2C,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,eADa;AAEzBC,QAAAA,YAAY,EAAEC,UAFW;AAGzBC,QAAAA,cAAc,EAAEC,UAHS;AAIzBC,QAAAA,aAAa,EAAEnD,oBAJU;AAKzBoD,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SALkB;AAOzBC,QAAAA,OAAO,EAAEzD,OAAO,CAAC8C,IAAD,EAAOC,UAAP;AAPS,OAA3B,CADK,CAAP;AAWD;;;WAED,uBAAqB;AAAA;;AACnB,WAAKhB,QAAL,CAAc2B,OAAd;AACA,WAAKzB,QAAL,CAAcyB,OAAd;AACA,WAAKvB,QAAL,CAAcuB,OAAd;AACA,gCAAKpC,WAAL,wEAAkBoC,OAAlB;AACD;;;WAED,qCAAsC;AACpC,UAAMC,IAAI,GAAG,KAAKtD,KAAL,CAAWuD,SAAX,GAAuBC,MAApC;;AACA,iCAAyCF,IAAzC;AAAA,UAAOG,MAAP;AAAA,UAAeC,MAAf;AAAA,UAAuBC,MAAvB;AAAA,UAA+BC,MAA/B;;AACA,UAAMC,MAAM,GAAGF,MAAM,GAAGF,MAAxB;AACA,UAAMK,MAAM,GAAGF,MAAM,GAAGF,MAAxB;AAEA,WAAKK,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,SAD0C;AAEhD1C,QAAAA,IAAI,EAAE9B,aAAa,CAACyE,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVF,UAAAA,IAAI,EAAE,MADI;AAEVG,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAE3E,EAAE,CAAC4E,WAFJ;AAGNzD,YAAAA,IAAI,EAAE,EAHA;AAINU,YAAAA,IAAI,EAAE7B,EAAE,CAAC8B;AAJH,WAFE;AAQV+C,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKNC,MALM,EAMH;AACH,yCAAmBF,MAAnB;AAAA,gBAAOG,GAAP;AAAA,gBAAYC,GAAZ;;AACA,mBAAO,CAAC,CAACD,GAAG,GAAGrB,MAAP,IAAiBI,MAAlB,EAA0B,CAACkB,GAAG,GAAGrB,MAAP,IAAiBI,MAA3C,CAAP;AACD;AAlBS;AAHoC,OAAlD;AAwBD;;;WAED,uBAAsB;AAAA;;AACpB,UAAQ3C,eAAR,GAA4B,KAAK6D,eAAjC,CAAQ7D,eAAR;AACA,UAAM8D,qBAAqB,GAAG;AAAElE,QAAAA,MAAM,EAAE,CAAV;AAAaD,QAAAA,KAAK,EAAE;AAApB,OAA9B;AAEA,WAAKY,QAAL,GAAgBP,eAAe,CAAC8D,qBAAD,CAA/B;AACA,WAAKrD,QAAL,GAAgBT,eAAe,CAAC8D,qBAAD,CAA/B;AACA,WAAKnD,QAAL,GAAgBX,eAAe,CAAC8D,qBAAD,CAA/B;AAGAC,MAAAA,SAAS,CAAC,UAACC,MAAD,EAAgC;AACxC,QAAA,MAAI,CAACzD,QAAL,GAAgB0D,OAAO,CAACD,MAAM,CAAC,CAAD,CAAP,CAAvB;AACA,QAAA,MAAI,CAACvD,QAAL,GAAgBwD,OAAO,CAACD,MAAM,CAAC,CAAD,CAAP,CAAvB;AACA,QAAA,MAAI,CAACrD,QAAL,GAAgBsD,OAAO,CAACD,MAAM,CAAC,CAAD,CAAP,CAAvB;;AACA,QAAA,MAAI,CAACE,YAAL,CAAkBC,qBAAlB;;AACA,QAAA,MAAI,CAACD,YAAL,CAAkBE,YAAlB;AACD,OANQ,CAAT;;AAQA,eAASL,SAAT,CAAmBM,QAAnB,EAAyE;AACvE,YAAIC,WAAW,GAAG,CAAlB;AACA,YAAMC,YAAgC,GAAG,EAAzC;AACA,YAAMP,MAAM,GAAG,CACb,uFADa,EAEb,uFAFa,EAGb,uFAHa,CAAf;AAKAA,QAAAA,MAAM,CAACQ,GAAP,CAAW,UAACC,MAAD,EAAoB;AAC7B,cAAMC,KAAK,GAAG,IAAIC,KAAJ,EAAd;AACAD,UAAAA,KAAK,CAACE,WAAN,GAAoB,EAApB;AACAF,UAAAA,KAAK,CAACG,GAAN,GAAYJ,MAAZ;AACAF,UAAAA,YAAY,CAACO,IAAb,CAAkBJ,KAAlB;;AACAA,UAAAA,KAAK,CAACK,MAAN,GAAe,YAAM;AACnBT,YAAAA,WAAW;;AACX,gBAAIA,WAAW,KAAK,CAApB,EAAuB;AACrBD,cAAAA,QAAQ,CAACE,YAAD,CAAR;AACD;AACF,WALD;AAMD,SAXD;AAYD;;AAED,eAASN,OAAT,CAAiBS,KAAjB,EAA0C;AACxC,eAAO1E,eAAe,CAAC;AACrBN,UAAAA,IAAI,EAAEgF,KADe;AAErB/E,UAAAA,KAAK,EAAE+E,KAAK,CAAC/E,KAFQ;AAGrBC,UAAAA,MAAM,EAAE8E,KAAK,CAAC9E,MAHO;AAIrBoF,UAAAA,KAAK,EAAEzG,EAAE,CAAC0G,eAJW;AAKrBC,UAAAA,KAAK,EAAE3G,EAAE,CAAC0G,eALW;AAMrBE,UAAAA,GAAG,EAAE5G,EAAE,CAAC6G,MANa;AAOrBC,UAAAA,GAAG,EAAE9G,EAAE,CAAC6G;AAPa,SAAD,CAAtB;AASD;AACF;;;;EAzKqC1G,S;;SAAnBE,U","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { create, isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport ocean_frag from '../shaders/water/polygon_ocean_frag.glsl';\nimport ocean_vert from '../shaders/water/polygon_ocean_vert.glsl';\nexport default class OceanModel extends BaseModel {\n private texture1: ITexture2D;\n private texture2: ITexture2D;\n private texture3: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n watercolor = '#6D99A8',\n watercolor2 = '#0F121C',\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\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_texture1: this.texture1,\n u_texture2: this.texture2,\n u_texture3: this.texture3,\n u_watercolor: rgb2arr(watercolor),\n u_watercolor2: rgb2arr(watercolor2),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_ocean',\n vertexShader: ocean_vert,\n fragmentShader: ocean_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture1.destroy();\n this.texture2.destroy();\n this.texture3.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'oceanUv',\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.STATIC_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 normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const { createTexture2D } = this.rendererService;\n const defaultTextureOptions = { height: 0, width: 0 };\n // 默认索引为 undefined,所以单独赋值\n this.texture1 = createTexture2D(defaultTextureOptions);\n this.texture2 = createTexture2D(defaultTextureOptions);\n this.texture3 = createTexture2D(defaultTextureOptions);\n\n // 加载完 image 后单独给 texture f赋值\n initImage((images: HTMLImageElement[]) => {\n this.texture1 = initTex(images[0]);\n this.texture2 = initTex(images[1]);\n this.texture3 = initTex(images[2]);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n function initImage(callback: (loadedImages: HTMLImageElement[]) => void) {\n let loadedCount = 0;\n const loadedImages: HTMLImageElement[] = [];\n const images = [\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*MJ22QbpuCzIAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*-z2HSIVDsHIAAAAAAAAAAAAAARQnAQ',\n ];\n images.map((imgSrc: string) => {\n const image = new Image();\n image.crossOrigin = '';\n image.src = imgSrc;\n loadedImages.push(image);\n image.onload = () => {\n loadedCount++;\n if (loadedCount === 3) {\n callback(loadedImages);\n }\n };\n });\n }\n\n function initTex(image: HTMLImageElement) {\n return createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n }\n }\n}\n"],"file":"ocean.js"}
|
|
@@ -124,9 +124,9 @@ var WaterModel = function (_BaseModel) {
|
|
|
124
124
|
}, {
|
|
125
125
|
key: "clearModels",
|
|
126
126
|
value: function clearModels() {
|
|
127
|
-
var _this$dataTexture;
|
|
127
|
+
var _this$texture, _this$dataTexture;
|
|
128
128
|
|
|
129
|
-
this.texture.destroy();
|
|
129
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
130
130
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
131
131
|
}
|
|
132
132
|
}, {
|
|
@@ -143,7 +143,7 @@ var WaterModel = function (_BaseModel) {
|
|
|
143
143
|
var lngLen = maxLng - minLng;
|
|
144
144
|
var latLen = maxLat - minLat;
|
|
145
145
|
this.styleAttributeService.registerStyleAttribute({
|
|
146
|
-
name: '
|
|
146
|
+
name: 'waterUv',
|
|
147
147
|
type: AttributeType.Attribute,
|
|
148
148
|
descriptor: {
|
|
149
149
|
name: 'a_uv',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/water.ts"],"names":["AttributeType","gl","getMask","BaseModel","polygonTriangulation","WaterModel","layer","getLayerConfig","opacity","speed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_texture","texture","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_speed","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","water_vert","fragmentShader","water_frag","triangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","waterTexture","rendererService","image","Image","crossOrigin","console","warn","src","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag","layerService","updateLayerRenderList","renderLayers"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport water_frag from '../shaders/water/polygon_water_frag.glsl';\nimport water_vert from '../shaders/water/polygon_water_vert.glsl';\nexport default class WaterModel extends BaseModel {\n private texture: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n speed = 0.5,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\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_texture: this.texture,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_speed: speed,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_water',\n vertexShader: water_vert,\n fragmentShader: water_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'linear',\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.STATIC_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 normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const {\n waterTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n const image = new Image();\n image.crossOrigin = '';\n if (waterTexture) {\n // custom texture\n console.warn(\n 'L7 recommend:https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n );\n image.src = waterTexture;\n } else {\n // default texture\n image.src =\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ';\n }\n\n image.onload = () => {\n this.texture = createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n }\n}\n"],"file":"water.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/water.ts"],"names":["AttributeType","gl","getMask","BaseModel","polygonTriangulation","WaterModel","layer","getLayerConfig","opacity","speed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_texture","texture","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_speed","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","water_vert","fragmentShader","water_frag","triangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","waterTexture","rendererService","image","Image","crossOrigin","console","warn","src","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag","layerService","updateLayerRenderList","renderLayers"],"mappings":";;;;;;;;;;;;;;AAAA,SACEA,aADF,EAEEC,EAFF,QAOO,eAPP;AAQA,SAASC,OAAT,QAAwB,gBAAxB;AAEA,OAAOC,SAAP,MAAsB,sBAAtB;AAEA,SAASC,oBAAT,QAAqC,0BAArC;;;;IAGqBC,U;;;;;;;;;;;;;;;;;;;;;;;WAEnB,wBAAsB;AACpB,iBAGI,KAAKC,KAAL,CAAWC,cAAX,EAHJ;AAAA,8BACEC,OADF;AAAA,UACEA,OADF,6BACY,CADZ;AAAA,4BAEEC,KAFF;AAAA,UAEEA,KAFF,2BAEU,GAFV;;AAIA,UAAI,KAAKC,eAAL,IAAwB,KAAKC,qBAAL,CAA2B;AAAEH,QAAAA,OAAO,EAAPA;AAAF,OAA3B,CAA5B,EAAqE;AACnE,aAAKI,oBAAL,CAA0B;AAAEJ,UAAAA,OAAO,EAAPA;AAAF,SAA1B;AACA,YAAMK,UAAU,GAAG,KAAKP,KAAL,CAAWQ,cAAX,EAAnB;;AACA,iCAAgC,KAAKC,YAAL,CAC9B,KAAKC,UADyB,EAE9BH,UAF8B,EAG9B,KAAKI,cAHyB,CAAhC;AAAA,YAAQC,IAAR,sBAAQA,IAAR;AAAA,YAAcC,KAAd,sBAAcA,KAAd;AAAA,YAAqBC,MAArB,sBAAqBA,MAArB;;AAKA,aAAKC,QAAL,GAAgBD,MAAhB;AAEA,aAAKE,WAAL,GACE,KAAKN,UAAL,GAAkB,CAAlB,IAAuBE,IAAI,CAACK,MAAL,GAAc,CAArC,GACI,KAAKC,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAJA,IAFmB;AAGnBQ,UAAAA,MAAM,EAAEzB,EAAE,CAAC0B,SAHQ;AAInBC,UAAAA,IAAI,EAAE3B,EAAE,CAAC4B,KAJU;AAKnBV,UAAAA,KAAK,EAALA,KALmB;AAMnBC,UAAAA,MAAM,EAANA;AANmB,SAArB,CADJ,GASI,KAAKI,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAE,CAAC,CAAD,CAFa;AAGnBQ,UAAAA,MAAM,EAAEzB,EAAE,CAAC0B,SAHQ;AAInBC,UAAAA,IAAI,EAAE3B,EAAE,CAAC4B,KAJU;AAKnBV,UAAAA,KAAK,EAAE,CALY;AAMnBC,UAAAA,MAAM,EAAE;AANW,SAArB,CAVN;AAkBD;;AACD,aAAO;AACLU,QAAAA,SAAS,EAAE,KAAKC,OADX;AAELC,QAAAA,aAAa,EAAE,KAAKV,WAFf;AAGLW,QAAAA,gBAAgB,EAAE,KAAKC,iBAAL,EAHb;AAILC,QAAAA,OAAO,EAAE1B,KAJJ;AAKL2B,QAAAA,SAAS,EAAE,UAAS5B,OAAT,IAAoBA,OAApB,GAA8B;AALpC,OAAP;AAOD;;;WAED,8BAA2C;AACzC,aAAO;AACL6B,QAAAA,MAAM,EAAE,KAAK/B,KAAL,CAAWgC,mBAAX;AADH,OAAP;AAGD;;;WAED,sBAA8B;AAC5B,WAAKC,WAAL;AACA,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,kBAGI,KAAKlC,KAAL,CAAWC,cAAX,EAHJ;AAAA,6BACEkC,IADF;AAAA,UACEA,IADF,2BACS,KADT;AAAA,mCAEEC,UAFF;AAAA,UAEEA,UAFF,iCAEe,IAFf;;AAIA,aAAO,CACL,KAAKpC,KAAL,CAAWqC,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,eADa;AAEzBC,QAAAA,YAAY,EAAEC,UAFW;AAGzBC,QAAAA,cAAc,EAAEC,UAHS;AAIzBC,QAAAA,aAAa,EAAE7C,oBAJU;AAKzB8C,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SALkB;AAOzBC,QAAAA,OAAO,EAAElD,OAAO,CAACuC,IAAD,EAAOC,UAAP;AAPS,OAA3B,CADK,CAAP;AAWD;;;WAED,uBAAqB;AAAA;;AACnB,4BAAKX,OAAL,gEAAcsB,OAAd;AACA,gCAAK/B,WAAL,wEAAkB+B,OAAlB;AACD;;;WAED,qCAAsC;AACpC,UAAMC,IAAI,GAAG,KAAKhD,KAAL,CAAWiD,SAAX,GAAuBC,MAApC;;AACA,iCAAyCF,IAAzC;AAAA,UAAOG,MAAP;AAAA,UAAeC,MAAf;AAAA,UAAuBC,MAAvB;AAAA,UAA+BC,MAA/B;;AACA,UAAMC,MAAM,GAAGF,MAAM,GAAGF,MAAxB;AACA,UAAMK,MAAM,GAAGF,MAAM,GAAGF,MAAxB;AAEA,WAAKK,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,SAD0C;AAEhDrC,QAAAA,IAAI,EAAE5B,aAAa,CAACkE,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVF,UAAAA,IAAI,EAAE,MADI;AAEVG,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAEpE,EAAE,CAACqE,WAFJ;AAGNpD,YAAAA,IAAI,EAAE,EAHA;AAINU,YAAAA,IAAI,EAAE3B,EAAE,CAAC4B;AAJH,WAFE;AAQV0C,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKNC,MALM,EAMH;AACH,yCAAmBF,MAAnB;AAAA,gBAAOG,GAAP;AAAA,gBAAYC,GAAZ;;AACA,mBAAO,CAAC,CAACD,GAAG,GAAGrB,MAAP,IAAiBI,MAAlB,EAA0B,CAACkB,GAAG,GAAGrB,MAAP,IAAiBI,MAA3C,CAAP;AACD;AAlBS;AAHoC,OAAlD;AAwBD;;;WAED,uBAAsB;AAAA;;AACpB,kBAEI,KAAKxD,KAAL,CAAWC,cAAX,EAFJ;AAAA,UACEyE,YADF,SACEA,YADF;;AAIA,UAAQxD,eAAR,GAA4B,KAAKyD,eAAjC,CAAQzD,eAAR;AACA,WAAKO,OAAL,GAAeP,eAAe,CAAC;AAC7BJ,QAAAA,MAAM,EAAE,CADqB;AAE7BD,QAAAA,KAAK,EAAE;AAFsB,OAAD,CAA9B;AAIA,UAAM+D,KAAK,GAAG,IAAIC,KAAJ,EAAd;AACAD,MAAAA,KAAK,CAACE,WAAN,GAAoB,EAApB;;AACA,UAAIJ,YAAJ,EAAkB;AAEhBK,QAAAA,OAAO,CAACC,IAAR,CACE,oGADF;AAGAJ,QAAAA,KAAK,CAACK,GAAN,GAAYP,YAAZ;AACD,OAND,MAMO;AAELE,QAAAA,KAAK,CAACK,GAAN,GACE,uFADF;AAED;;AAEDL,MAAAA,KAAK,CAACM,MAAN,GAAe,YAAM;AACnB,QAAA,MAAI,CAACzD,OAAL,GAAeP,eAAe,CAAC;AAC7BN,UAAAA,IAAI,EAAEgE,KADuB;AAE7B/D,UAAAA,KAAK,EAAE+D,KAAK,CAAC/D,KAFgB;AAG7BC,UAAAA,MAAM,EAAE8D,KAAK,CAAC9D,MAHe;AAI7BqE,UAAAA,KAAK,EAAExF,EAAE,CAACyF,eAJmB;AAK7BC,UAAAA,KAAK,EAAE1F,EAAE,CAACyF,eALmB;AAM7BE,UAAAA,GAAG,EAAE3F,EAAE,CAAC4F,MANqB;AAO7BC,UAAAA,GAAG,EAAE7F,EAAE,CAAC4F;AAPqB,SAAD,CAA9B;;AASA,QAAA,MAAI,CAACE,YAAL,CAAkBC,qBAAlB;;AACA,QAAA,MAAI,CAACD,YAAL,CAAkBE,YAAlB;AACD,OAZD;AAaD;;;;EApJqC9F,S;;SAAnBE,U","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport water_frag from '../shaders/water/polygon_water_frag.glsl';\nimport water_vert from '../shaders/water/polygon_water_vert.glsl';\nexport default class WaterModel extends BaseModel {\n private texture: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n speed = 0.5,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\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_texture: this.texture,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_speed: speed,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_water',\n vertexShader: water_vert,\n fragmentShader: water_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'waterUv',\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.STATIC_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 normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const {\n waterTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n const image = new Image();\n image.crossOrigin = '';\n if (waterTexture) {\n // custom texture\n console.warn(\n 'L7 recommend:https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n );\n image.src = waterTexture;\n } else {\n // default texture\n image.src =\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ';\n }\n\n image.onload = () => {\n this.texture = createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n }\n}\n"],"file":"water.js"}
|
|
@@ -173,8 +173,10 @@ var PlaneModel = function (_BaseModel) {
|
|
|
173
173
|
terrainTexture = _ref4.terrainTexture;
|
|
174
174
|
|
|
175
175
|
if (this.mapTexture !== mapTexture) {
|
|
176
|
+
var _this$texture;
|
|
177
|
+
|
|
176
178
|
this.mapTexture = mapTexture;
|
|
177
|
-
this.texture.destroy();
|
|
179
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
178
180
|
this.updateTexture(mapTexture);
|
|
179
181
|
}
|
|
180
182
|
|
|
@@ -188,7 +190,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
188
190
|
}, {
|
|
189
191
|
key: "clearModels",
|
|
190
192
|
value: function clearModels() {
|
|
191
|
-
|
|
193
|
+
var _this$texture2;
|
|
194
|
+
|
|
195
|
+
(_this$texture2 = this.texture) === null || _this$texture2 === void 0 ? void 0 : _this$texture2.destroy();
|
|
192
196
|
}
|
|
193
197
|
}, {
|
|
194
198
|
key: "initModels",
|
|
@@ -217,7 +221,11 @@ var PlaneModel = function (_BaseModel) {
|
|
|
217
221
|
enable: true
|
|
218
222
|
},
|
|
219
223
|
blend: this.getBlend(),
|
|
220
|
-
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
224
|
+
stencil: (0, _l7Utils.getMask)(mask, maskInside),
|
|
225
|
+
cull: {
|
|
226
|
+
enable: true,
|
|
227
|
+
face: _l7Core.gl.BACK
|
|
228
|
+
}
|
|
221
229
|
})];
|
|
222
230
|
}
|
|
223
231
|
}, {
|
|
@@ -294,7 +302,11 @@ var PlaneModel = function (_BaseModel) {
|
|
|
294
302
|
enable: true
|
|
295
303
|
},
|
|
296
304
|
blend: _this3.getBlend(),
|
|
297
|
-
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
305
|
+
stencil: (0, _l7Utils.getMask)(mask, maskInside),
|
|
306
|
+
cull: {
|
|
307
|
+
enable: true,
|
|
308
|
+
face: _l7Core.gl.BACK
|
|
309
|
+
}
|
|
298
310
|
})];
|
|
299
311
|
|
|
300
312
|
_this3.layerService.renderLayers();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["PlaneModel","layer","getLayerConfig","width","height","widthSegments","heightSegments","center","terrainTexture","initPlane","indices","positions","loadTerrainTexture","vertices","size","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","iy","y","ix","x","mapService","version","Version","lngLatToCoord","a","b","push","c","d","opacity","mapTexture","terrainClipHeight","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_terrainClipHeight","u_texture","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","img","canvas","document","createElement","ctx","getContext","drawImage","imageData","getImageData","rgb2height","r","g","terrainImage","Image","crossOrigin","onload","imgWidth","imgHeight","data","widthStep","heihgtStep","imgIndexY","imgLen","imgIndexX","imgDataIndex","z","models","planeGeometryUpdateTriangulation","layerService","renderLayers","src","initModels","wrapS","CLAMP_TO_EDGE","wrapT","updateLayerRenderList","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { getMask, isMini } from '@antv/l7-utils';\n// import { mat4, vec3 } from 'gl-matrix';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/plane_frag.glsl';\nimport planeVert from '../shaders/plane_vert.glsl';\n\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n protected positions: number[];\n protected indices: number[];\n\n public initPlane(\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n lng = 120,\n lat = 30,\n ) {\n // https://github.com/mrdoob/three.js/blob/dev/src/geometries/PlaneGeometry.js\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const indices = [];\n const positions = [];\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n if (this.mapService.version === Version['GAODE2.x']) {\n // @ts-ignore\n const [a, b] = this.mapService.lngLatToCoord([x + lng, -y + lat]) as [\n number,\n number,\n ];\n positions.push(a, b, 0);\n } else {\n positions.push(x + lng, -y + lat, 0);\n }\n\n positions.push(ix / gridX);\n positions.push(1 - iy / gridY);\n }\n }\n\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n return { indices, positions };\n }\n\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n const { indices, positions } = this.initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\n );\n this.positions = positions;\n this.indices = indices;\n\n if (terrainTexture) {\n // 存在地形贴图的时候会根据地形贴图对顶点进行偏移\n this.loadTerrainTexture();\n }\n\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n };\n public planeGeometryUpdateTriangulation = () => {\n return {\n vertices: this.positions,\n indices: this.indices,\n size: 5,\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n mapTexture,\n terrainClipHeight = 0,\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n if (this.mapTexture !== mapTexture) {\n this.mapTexture = mapTexture;\n this.texture.destroy();\n this.updateTexture(mapTexture);\n }\n return {\n u_opacity: opacity || 1,\n u_mapFlag: mapTexture ? 1 : 0,\n u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,\n u_texture: this.texture,\n // u_ModelMatrix: mat4.translate(mat4.create(), mat4.create(), [1, 0, 0])\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: this.rotateZ()\n };\n }\n\n public clearModels(): void {\n this.texture.destroy();\n }\n\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n mapTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n this.updateTexture(mapTexture);\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public getImageData(img: HTMLImageElement) {\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const { width, height } = img;\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(img, 0, 0, width, height);\n const imageData = ctx.getImageData(0, 0, width, height);\n\n return imageData;\n }\n\n /**\n * load terrain texture & offset attribute z\n */\n public loadTerrainTexture(): void {\n const {\n mask = false,\n maskInside = true,\n widthSegments = 1,\n heightSegments = 1,\n terrainTexture,\n rgb2height = (r: number, g: number, b: number) => r + g + b,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const terrainImage = new Image();\n terrainImage.crossOrigin = 'anonymous';\n terrainImage.onload = () => {\n const imgWidth = terrainImage.width;\n const imgHeight = terrainImage.height;\n\n const imageData = this.getImageData(terrainImage).data;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const widthStep = imgWidth / gridX;\n const heihgtStep = imgHeight / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const imgIndexY = Math.floor(iy * heihgtStep);\n const imgLen = imgIndexY * imgWidth;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const imgIndexX = Math.floor(ix * widthStep);\n const imgDataIndex = (imgLen + imgIndexX) * 4;\n\n const r = imageData[imgDataIndex];\n const g = imageData[imgDataIndex + 1];\n const b = imageData[imgDataIndex + 2];\n\n const z = (iy * gridX1 + ix) * 5 + 2;\n this.positions[z] = rgb2height(r, g, b);\n }\n }\n\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryUpdateTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n this.layerService.renderLayers();\n };\n terrainImage.src = terrainTexture as string;\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public updateTexture(mapTexture: string | undefined): void {\n const { createTexture2D } = this.rendererService;\n\n if (mapTexture) {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n img.src = mapTexture;\n } else {\n this.texture = createTexture2D({\n width: 0,\n height: 0,\n });\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\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 return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"plane.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Geometry/models/plane.ts"],"names":["PlaneModel","layer","getLayerConfig","width","height","widthSegments","heightSegments","center","terrainTexture","initPlane","indices","positions","loadTerrainTexture","vertices","size","lng","lat","widthHalf","heightHalf","gridX","Math","floor","gridY","gridX1","gridY1","segmentWidth","segmentHeight","iy","y","ix","x","mapService","version","Version","lngLatToCoord","a","b","push","c","d","opacity","mapTexture","terrainClipHeight","texture","destroy","updateTexture","u_opacity","u_mapFlag","u_terrainClipHeight","u_texture","mask","maskInside","createTexture2D","rendererService","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","cull","face","BACK","img","canvas","document","createElement","ctx","getContext","drawImage","imageData","getImageData","rgb2height","r","g","terrainImage","Image","crossOrigin","onload","imgWidth","imgHeight","data","widthStep","heihgtStep","imgIndexY","imgLen","imgIndexX","imgDataIndex","z","models","planeGeometryUpdateTriangulation","layerService","renderLayers","src","initModels","wrapS","CLAMP_TO_EDGE","wrapT","updateLayerRenderList","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { Version } from '@antv/l7-maps';\nimport { getMask, isMini } from '@antv/l7-utils';\n// import { mat4, vec3 } from 'gl-matrix';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/plane_frag.glsl';\nimport planeVert from '../shaders/plane_vert.glsl';\n\nexport default class PlaneModel extends BaseModel {\n protected texture: ITexture2D;\n protected mapTexture: string | undefined;\n protected positions: number[];\n protected indices: number[];\n\n public initPlane(\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n lng = 120,\n lat = 30,\n ) {\n // https://github.com/mrdoob/three.js/blob/dev/src/geometries/PlaneGeometry.js\n const widthHalf = width / 2;\n const heightHalf = height / 2;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const segmentWidth = width / gridX;\n const segmentHeight = height / gridY;\n\n const indices = [];\n const positions = [];\n\n for (let iy = 0; iy < gridY1; iy++) {\n const y = iy * segmentHeight - heightHalf;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const x = ix * segmentWidth - widthHalf;\n if (this.mapService.version === Version['GAODE2.x']) {\n // @ts-ignore\n const [a, b] = this.mapService.lngLatToCoord([x + lng, -y + lat]) as [\n number,\n number,\n ];\n positions.push(a, b, 0);\n } else {\n positions.push(x + lng, -y + lat, 0);\n }\n\n positions.push(ix / gridX);\n positions.push(1 - iy / gridY);\n }\n }\n\n for (let iy = 0; iy < gridY; iy++) {\n for (let ix = 0; ix < gridX; ix++) {\n const a = ix + gridX1 * iy;\n const b = ix + gridX1 * (iy + 1);\n const c = ix + 1 + gridX1 * (iy + 1);\n const d = ix + 1 + gridX1 * iy;\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n return { indices, positions };\n }\n\n public planeGeometryTriangulation = () => {\n const {\n width = 1,\n height = 1,\n widthSegments = 1,\n heightSegments = 1,\n center = [120, 30],\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n const { indices, positions } = this.initPlane(\n width,\n height,\n widthSegments,\n heightSegments,\n ...center,\n );\n this.positions = positions;\n this.indices = indices;\n\n if (terrainTexture) {\n // 存在地形贴图的时候会根据地形贴图对顶点进行偏移\n this.loadTerrainTexture();\n }\n\n return {\n vertices: positions,\n indices,\n size: 5,\n };\n };\n public planeGeometryUpdateTriangulation = () => {\n return {\n vertices: this.positions,\n indices: this.indices,\n size: 5,\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n mapTexture,\n terrainClipHeight = 0,\n terrainTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n if (this.mapTexture !== mapTexture) {\n this.mapTexture = mapTexture;\n this.texture?.destroy();\n this.updateTexture(mapTexture);\n }\n return {\n u_opacity: opacity || 1,\n u_mapFlag: mapTexture ? 1 : 0,\n u_terrainClipHeight: terrainTexture ? terrainClipHeight : -1,\n u_texture: this.texture,\n // u_ModelMatrix: mat4.translate(mat4.create(), mat4.create(), [1, 0, 0])\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: mat4.rotateZ(mat4.create(), mat4.create(), 10)\n // u_ModelMatrix: this.rotateZ()\n };\n }\n\n public clearModels(): void {\n this.texture?.destroy();\n }\n\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n mapTexture,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n this.updateTexture(mapTexture);\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK, // gl.FRONT | gl.BACK;\n },\n }),\n ];\n }\n\n public getImageData(img: HTMLImageElement) {\n const canvas: HTMLCanvasElement = document.createElement('canvas');\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const { width, height } = img;\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(img, 0, 0, width, height);\n const imageData = ctx.getImageData(0, 0, width, height);\n\n return imageData;\n }\n\n /**\n * load terrain texture & offset attribute z\n */\n public loadTerrainTexture(): void {\n const {\n mask = false,\n maskInside = true,\n widthSegments = 1,\n heightSegments = 1,\n terrainTexture,\n rgb2height = (r: number, g: number, b: number) => r + g + b,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const terrainImage = new Image();\n terrainImage.crossOrigin = 'anonymous';\n terrainImage.onload = () => {\n const imgWidth = terrainImage.width;\n const imgHeight = terrainImage.height;\n\n const imageData = this.getImageData(terrainImage).data;\n\n const gridX = Math.floor(widthSegments);\n const gridY = Math.floor(heightSegments);\n\n const gridX1 = gridX + 1;\n const gridY1 = gridY + 1;\n\n const widthStep = imgWidth / gridX;\n const heihgtStep = imgHeight / gridY;\n\n for (let iy = 0; iy < gridY1; iy++) {\n const imgIndexY = Math.floor(iy * heihgtStep);\n const imgLen = imgIndexY * imgWidth;\n\n for (let ix = 0; ix < gridX1; ix++) {\n const imgIndexX = Math.floor(ix * widthStep);\n const imgDataIndex = (imgLen + imgIndexX) * 4;\n\n const r = imageData[imgDataIndex];\n const g = imageData[imgDataIndex + 1];\n const b = imageData[imgDataIndex + 2];\n\n const z = (iy * gridX1 + ix) * 5 + 2;\n this.positions[z] = rgb2height(r, g, b);\n }\n }\n\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'geometry_plane',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryUpdateTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK,\n },\n }),\n ];\n this.layerService.renderLayers();\n };\n terrainImage.src = terrainTexture as string;\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public updateTexture(mapTexture: string | undefined): void {\n const { createTexture2D } = this.rendererService;\n\n if (mapTexture) {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n this.texture = createTexture2D({\n data: img,\n width: img.width,\n height: img.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n img.src = mapTexture;\n } else {\n this.texture = createTexture2D({\n width: 0,\n height: 0,\n });\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\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 return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"plane.js"}
|
|
@@ -124,7 +124,11 @@ var CityBuildModel = function (_BaseModel) {
|
|
|
124
124
|
moduleName: 'cityBuilding',
|
|
125
125
|
vertexShader: buildVert,
|
|
126
126
|
fragmentShader: buildFrag,
|
|
127
|
-
triangulation: _triangulation.PolygonExtrudeTriangulation
|
|
127
|
+
triangulation: _triangulation.PolygonExtrudeTriangulation,
|
|
128
|
+
cull: {
|
|
129
|
+
enable: true,
|
|
130
|
+
face: _l7Core.gl.BACK
|
|
131
|
+
}
|
|
128
132
|
})];
|
|
129
133
|
}
|
|
130
134
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/citybuliding/models/build.ts"],"names":["CityBuildModel","layer","getLayerConfig","opacity","baseColor","brightColor","windowColor","time","sweep","enable","sweepRadius","sweepColor","sweepSpeed","sweepCenter","cityCenter","u_cityCenter","u_cityMinSize","cityMinSize","u_circleSweep","u_circleSweepColor","slice","u_circleSweepSpeed","u_opacity","u_baseColor","u_brightColor","u_windowColor","u_time","getLayerAnimateTime","getSource","extent","minLng","minLat","maxLng","maxLat","mapService","version","lngLatToCoord","l1","l2","Math","sqrt","pow","w","h","calCityGeo","startModelAnimate","buildLayerModel","moduleName","vertexShader","buildVert","fragmentShader","buildFrag","triangulation","PolygonExtrudeTriangulation","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","gl","STATIC_DRAW","data","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport buildFrag from '../shaders/build_frag.glsl';\nimport buildVert from '../shaders/build_vert.glsl';\ninterface ICityBuildLayerStyleOptions {\n opacity: number;\n baseColor: string;\n brightColor: string;\n windowColor: string;\n time: number;\n sweep: {\n enable: boolean;\n sweepRadius: number;\n sweepColor: string;\n sweepSpeed: number;\n sweepCenter?: [number, number];\n };\n}\nexport default class CityBuildModel extends BaseModel {\n private cityCenter: [number, number];\n private cityMinSize: number;\n\n public getUninforms() {\n const {\n opacity = 1,\n baseColor = 'rgb(16,16,16)',\n brightColor = 'rgb(255,176,38)',\n windowColor = 'rgb(30,60,89)',\n time = 0,\n sweep = {\n enable: false,\n sweepRadius: 1,\n sweepColor: 'rgb(255, 255, 255)',\n sweepSpeed: 0.4,\n sweepCenter: this.cityCenter,\n },\n } = this.layer.getLayerConfig() as ICityBuildLayerStyleOptions;\n return {\n u_cityCenter: sweep.sweepCenter || this.cityCenter,\n u_cityMinSize: this.cityMinSize * sweep.sweepRadius,\n u_circleSweep: sweep.enable ? 1.0 : 0.0,\n u_circleSweepColor: rgb2arr(sweep.sweepColor).slice(0, 3),\n u_circleSweepSpeed: sweep.sweepSpeed,\n\n u_opacity: opacity,\n u_baseColor: rgb2arr(baseColor),\n u_brightColor: rgb2arr(brightColor),\n u_windowColor: rgb2arr(windowColor),\n u_time: this.layer.getLayerAnimateTime() || time,\n };\n }\n\n public calCityGeo() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n if (this.mapService.version === 'GAODE2.x') {\n // @ts-ignore\n this.cityCenter = this.mapService.lngLatToCoord([\n (maxLng + minLng) / 2,\n (maxLat + minLat) / 2,\n ]);\n // @ts-ignore\n const l1 = this.mapService.lngLatToCoord([maxLng, maxLat]);\n // @ts-ignore\n const l2 = this.mapService.lngLatToCoord([minLng, minLat]);\n this.cityMinSize =\n Math.sqrt(Math.pow(l1[0] - l2[0], 2) + Math.pow(l1[1] - l2[1], 2)) / 4;\n } else {\n const w = maxLng - minLng;\n const h = maxLat - minLat;\n this.cityCenter = [(maxLng + minLng) / 2, (maxLat + minLat) / 2];\n this.cityMinSize = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)) / 4;\n }\n }\n\n public initModels(): IModel[] {\n this.calCityGeo();\n\n this.startModelAnimate();\n return [\n this.layer.buildLayerModel({\n moduleName: 'cityBuilding',\n vertexShader: buildVert,\n fragmentShader: buildFrag,\n triangulation: PolygonExtrudeTriangulation,\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_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 normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\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 = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\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 { size } = feature;\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"build.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/citybuliding/models/build.ts"],"names":["CityBuildModel","layer","getLayerConfig","opacity","baseColor","brightColor","windowColor","time","sweep","enable","sweepRadius","sweepColor","sweepSpeed","sweepCenter","cityCenter","u_cityCenter","u_cityMinSize","cityMinSize","u_circleSweep","u_circleSweepColor","slice","u_circleSweepSpeed","u_opacity","u_baseColor","u_brightColor","u_windowColor","u_time","getLayerAnimateTime","getSource","extent","minLng","minLat","maxLng","maxLat","mapService","version","lngLatToCoord","l1","l2","Math","sqrt","pow","w","h","calCityGeo","startModelAnimate","buildLayerModel","moduleName","vertexShader","buildVert","fragmentShader","buildFrag","triangulation","PolygonExtrudeTriangulation","cull","face","gl","BACK","styleAttributeService","registerStyleAttribute","name","type","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","data","FLOAT","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport buildFrag from '../shaders/build_frag.glsl';\nimport buildVert from '../shaders/build_vert.glsl';\ninterface ICityBuildLayerStyleOptions {\n opacity: number;\n baseColor: string;\n brightColor: string;\n windowColor: string;\n time: number;\n sweep: {\n enable: boolean;\n sweepRadius: number;\n sweepColor: string;\n sweepSpeed: number;\n sweepCenter?: [number, number];\n };\n}\nexport default class CityBuildModel extends BaseModel {\n private cityCenter: [number, number];\n private cityMinSize: number;\n\n public getUninforms() {\n const {\n opacity = 1,\n baseColor = 'rgb(16,16,16)',\n brightColor = 'rgb(255,176,38)',\n windowColor = 'rgb(30,60,89)',\n time = 0,\n sweep = {\n enable: false,\n sweepRadius: 1,\n sweepColor: 'rgb(255, 255, 255)',\n sweepSpeed: 0.4,\n sweepCenter: this.cityCenter,\n },\n } = this.layer.getLayerConfig() as ICityBuildLayerStyleOptions;\n return {\n u_cityCenter: sweep.sweepCenter || this.cityCenter,\n u_cityMinSize: this.cityMinSize * sweep.sweepRadius,\n u_circleSweep: sweep.enable ? 1.0 : 0.0,\n u_circleSweepColor: rgb2arr(sweep.sweepColor).slice(0, 3),\n u_circleSweepSpeed: sweep.sweepSpeed,\n\n u_opacity: opacity,\n u_baseColor: rgb2arr(baseColor),\n u_brightColor: rgb2arr(brightColor),\n u_windowColor: rgb2arr(windowColor),\n u_time: this.layer.getLayerAnimateTime() || time,\n };\n }\n\n public calCityGeo() {\n // @ts-ignore\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n if (this.mapService.version === 'GAODE2.x') {\n // @ts-ignore\n this.cityCenter = this.mapService.lngLatToCoord([\n (maxLng + minLng) / 2,\n (maxLat + minLat) / 2,\n ]);\n // @ts-ignore\n const l1 = this.mapService.lngLatToCoord([maxLng, maxLat]);\n // @ts-ignore\n const l2 = this.mapService.lngLatToCoord([minLng, minLat]);\n this.cityMinSize =\n Math.sqrt(Math.pow(l1[0] - l2[0], 2) + Math.pow(l1[1] - l2[1], 2)) / 4;\n } else {\n const w = maxLng - minLng;\n const h = maxLat - minLat;\n this.cityCenter = [(maxLng + minLng) / 2, (maxLat + minLat) / 2];\n this.cityMinSize = Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)) / 4;\n }\n }\n\n public initModels(): IModel[] {\n this.calCityGeo();\n\n this.startModelAnimate();\n return [\n this.layer.buildLayerModel({\n moduleName: 'cityBuilding',\n vertexShader: buildVert,\n fragmentShader: buildFrag,\n triangulation: PolygonExtrudeTriangulation,\n cull: {\n enable: true,\n face: gl.BACK,\n },\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_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 normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\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 = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\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 { size } = feature;\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n}\n"],"file":"build.js"}
|
package/lib/core/BaseLayer.js
CHANGED