@antv/l7-layers 2.6.6 → 2.6.10

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.
Files changed (54) hide show
  1. package/es/core/BaseLayer.js +4 -0
  2. package/es/core/BaseLayer.js.map +1 -1
  3. package/es/core/BaseModel.d.ts +4 -0
  4. package/es/core/BaseModel.js +19 -2
  5. package/es/core/BaseModel.js.map +1 -1
  6. package/es/index.d.ts +2 -1
  7. package/es/index.js +2 -1
  8. package/es/index.js.map +1 -1
  9. package/es/line/models/arc.js +6 -4
  10. package/es/line/models/arc.js.map +1 -1
  11. package/es/utils/dataMappingStyle.d.ts +1 -0
  12. package/es/utils/dataMappingStyle.js +4 -0
  13. package/es/utils/dataMappingStyle.js.map +1 -1
  14. package/es/wind/index.d.ts +36 -0
  15. package/es/wind/index.js +91 -0
  16. package/es/wind/index.js.map +1 -0
  17. package/es/wind/models/index.d.ts +5 -0
  18. package/es/wind/models/index.js +6 -0
  19. package/es/wind/models/index.js.map +1 -0
  20. package/es/wind/models/utils.d.ts +19 -0
  21. package/es/wind/models/utils.js +201 -0
  22. package/es/wind/models/utils.js.map +1 -0
  23. package/es/wind/models/wind.d.ts +31 -0
  24. package/es/wind/models/wind.js +298 -0
  25. package/es/wind/models/wind.js.map +1 -0
  26. package/es/wind/models/windRender.d.ts +104 -0
  27. package/es/wind/models/windRender.js +346 -0
  28. package/es/wind/models/windRender.js.map +1 -0
  29. package/es/wind/models/windShader.d.ts +12 -0
  30. package/es/wind/models/windShader.js +7 -0
  31. package/es/wind/models/windShader.js.map +1 -0
  32. package/lib/core/BaseLayer.js +4 -0
  33. package/lib/core/BaseLayer.js.map +1 -1
  34. package/lib/core/BaseModel.js +19 -2
  35. package/lib/core/BaseModel.js.map +1 -1
  36. package/lib/index.js +8 -0
  37. package/lib/index.js.map +1 -1
  38. package/lib/line/models/arc.js +6 -4
  39. package/lib/line/models/arc.js.map +1 -1
  40. package/lib/utils/dataMappingStyle.js +4 -0
  41. package/lib/utils/dataMappingStyle.js.map +1 -1
  42. package/lib/wind/index.js +104 -0
  43. package/lib/wind/index.js.map +1 -0
  44. package/lib/wind/models/index.js +17 -0
  45. package/lib/wind/models/index.js.map +1 -0
  46. package/lib/wind/models/utils.js +228 -0
  47. package/lib/wind/models/utils.js.map +1 -0
  48. package/lib/wind/models/wind.js +310 -0
  49. package/lib/wind/models/wind.js.map +1 -0
  50. package/lib/wind/models/windRender.js +340 -0
  51. package/lib/wind/models/windRender.js.map +1 -0
  52. package/lib/wind/models/windShader.js +19 -0
  53. package/lib/wind/models/windShader.js.map +1 -0
  54. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/line/models/arc.ts"],"names":["lineStyleObj","solid","dash","ArcModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","forward","lineTexture","iconStep","segmentNumber","thetaOffset","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","push","useLinearColor","sourceColorArr","targetColorArr","getDirty","bind","u_thetaOffset","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_blur","u_lineDir","u_texture","u_line_texture","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_arc2d_vert","fragmentShader","line_arc_frag","triangulation","LineArcTriangulation","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineArcTriangulation } from '../../core/triangulation';\nimport line_arc_frag from '../shaders/line_arc_frag.glsl';\nimport line_arc2d_vert from '../shaders/line_arc_vert.glsl';\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class ArcModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5],\n forward = true,\n lineTexture = false,\n iconStep = 100,\n segmentNumber = 30,\n thetaOffset = 0.314,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\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\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n return {\n u_thetaOffset: thetaOffset,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n segmentNumber,\n u_line_type: lineStyleObj[lineType || 'solid'],\n u_dash_array: dashArray,\n u_blur: 0.9,\n u_lineDir: forward ? 1 : -1,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n // console.log('animateOption', animateOption)\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n segmentNumber = 30,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'arc2dline',\n vertexShader: line_arc2d_vert,\n fragmentShader: line_arc_frag,\n triangulation: LineArcTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n segmentNumber,\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\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 = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'instance', // 弧线起始点信息\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Instance',\n buffer: {\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 4,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4], vertex[5], vertex[6]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\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 { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\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 });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"arc.js"}
1
+ {"version":3,"sources":["../../../src/line/models/arc.ts"],"names":["lineStyleObj","solid","dash","ArcModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","forward","lineTexture","iconStep","segmentNumber","thetaOffset","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","push","useLinearColor","sourceColorArr","targetColorArr","getDirty","bind","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_thetaOffset","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_blur","u_lineDir","u_texture","u_line_texture","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_arc2d_vert","fragmentShader","line_arc_frag","triangulation","LineArcTriangulation","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineArcTriangulation } from '../../core/triangulation';\nimport line_arc_frag from '../shaders/line_arc_frag.glsl';\nimport line_arc2d_vert from '../shaders/line_arc_vert.glsl';\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class ArcModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5],\n forward = true,\n lineTexture = false,\n iconStep = 100,\n segmentNumber = 30,\n thetaOffset = 0.314,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({ opacity, thetaOffset })\n ) {\n this.judgeStyleAttributes({ opacity, thetaOffset });\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\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_thetaOffset: isNumber(thetaOffset) ? thetaOffset : 0.0,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n segmentNumber,\n u_line_type: lineStyleObj[lineType || 'solid'],\n u_dash_array: dashArray,\n u_blur: 0.9,\n u_lineDir: forward ? 1 : -1,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n // console.log('animateOption', animateOption)\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n segmentNumber = 30,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'arc2dline',\n vertexShader: line_arc2d_vert,\n fragmentShader: line_arc_frag,\n triangulation: LineArcTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n segmentNumber,\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\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 = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'instance', // 弧线起始点信息\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Instance',\n buffer: {\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 4,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4], vertex[5], vertex[6]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\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 { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\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 });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"arc.js"}
@@ -47,6 +47,10 @@ function handleStyleDataMapping(configToUpdate, layer) {
47
47
  if (configToUpdate.textOffset) {
48
48
  handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);
49
49
  }
50
+
51
+ if (configToUpdate.thetaOffset) {
52
+ handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);
53
+ }
50
54
  }
51
55
 
52
56
  function handleStyleFloat(fieldName, layer, styleFloat) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","styleFloat","value","undefined","length","styleOffsets","styleColor"],"mappings":"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","sourcesContent":["import {\n gl,\n ILayer,\n IStyleAttributeUpdateOptions,\n ITexture2D,\n StyleAttributeField,\n StyleAttributeOption,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isArray, isFunction, isNumber, isString } from 'lodash';\n/**\n * 该文件中的工具方法主要用于对 style 中的属性进行 数据映射\n */\n\ninterface IConfigToUpdate {\n opacity?: any;\n strokeOpacity?: any;\n stroke?: any;\n strokeWidth?: any;\n offsets?: any;\n textOffset?: any;\n}\n\n// 画布默认的宽度\nconst WIDTH = 1024;\n\n/**\n * 当 style 中使用的 opacity 不是常数的时候根据数据进行映射\n * @param field\n * @param values\n * @param updateOptions\n */\nfunction registerStyleAttribute(\n fieldName: string,\n layer: ILayer,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n) {\n layer.updateStyleAttribute(fieldName, field, values, updateOptions);\n}\n\n/**\n * 当样式发生变化时判断是否需要进行数据映射\n * @param configToUpdate\n * @param layer\n */\nfunction handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) {\n if (configToUpdate.opacity) {\n // 处理 style 中 opacity 属性的数据映射\n\n handleStyleFloat('opacity', layer, configToUpdate.opacity);\n }\n\n if (configToUpdate.strokeWidth) {\n // 处理 style 中 strokeWidth 属性的数据映射\n\n handleStyleFloat('strokeWidth', layer, configToUpdate.strokeWidth);\n }\n\n if (configToUpdate.strokeOpacity) {\n // 处理 style 中 strokeOpacity 属性的数据映射\n\n handleStyleFloat('strokeOpacity', layer, configToUpdate.strokeOpacity);\n }\n\n if (configToUpdate.stroke) {\n // 处理 style 中 stroke (strokeColor) 属性的数据映射\n handleStyleColor('stroke', layer, configToUpdate.stroke);\n }\n\n if (configToUpdate.offsets) {\n // 处理 style 中 offsets 属性的数据映射\n handleStyleOffsets('offsets', layer, configToUpdate.offsets);\n }\n\n if (configToUpdate.textOffset) {\n // 处理 style 中 textOffset 属性的数据映射\n handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);\n }\n}\n\n/**\n * 根据传入参数 float 的类型和值做相应的操作\n */\nfunction handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) {\n if (isString(styleFloat)) {\n // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => {\n return value;\n });\n } else if (isNumber(styleFloat)) {\n // 传入 number、默认值处理\n registerStyleAttribute(fieldName, layer, [styleFloat], undefined);\n } else if (isArray(styleFloat) && styleFloat.length === 2) {\n // 传入的 styleFloat 是长度为 2 的数组\n if (isString(styleFloat[0]) && isFunction(styleFloat[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else if (\n isString(styleFloat[0]) &&\n isArray(styleFloat[1]) &&\n isNumber(styleFloat[1][0]) &&\n isNumber(styleFloat[1][1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n}\n/**\n * 根据传入参数 offsets 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleOffsets\n */\nfunction handleStyleOffsets(\n fieldName: string,\n layer: ILayer,\n styleOffsets: any,\n) {\n if (isString(styleOffsets)) {\n // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => {\n return value;\n });\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isString(styleOffsets[0]) &&\n isFunction(styleOffsets[1])\n ) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isNumber(styleOffsets[0]) &&\n isNumber(styleOffsets[1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleOffsets, undefined);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [0, 0], undefined);\n }\n}\n\n/**\n * 根据传入参数 stroke / color 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleColor\n */\nfunction handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) {\n if (isString(styleColor)) {\n // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值\n registerStyleAttribute(fieldName, layer, styleColor, undefined);\n } else if (isArray(styleColor) && styleColor.length === 2) {\n // 传入的 styleColor 是长度为 2 的数组\n if (isString(styleColor[0]) && isFunction(styleColor[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else if (\n isString(styleColor[0]) &&\n isArray(styleColor[1]) &&\n styleColor[1].length > 0\n ) {\n // 字段映射 [string, [start: string, end: string]]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n}\n\nexport { handleStyleDataMapping, handleStyleFloat, handleStyleColor };\n"],"file":"dataMappingStyle.js"}
1
+ {"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","thetaOffset","styleFloat","value","undefined","length","styleOffsets","styleColor"],"mappings":"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","sourcesContent":["import {\n gl,\n ILayer,\n IStyleAttributeUpdateOptions,\n ITexture2D,\n StyleAttributeField,\n StyleAttributeOption,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isArray, isFunction, isNumber, isString } from 'lodash';\n/**\n * 该文件中的工具方法主要用于对 style 中的属性进行 数据映射\n */\n\ninterface IConfigToUpdate {\n thetaOffset?: any;\n opacity?: any;\n strokeOpacity?: any;\n stroke?: any;\n strokeWidth?: any;\n offsets?: any;\n textOffset?: any;\n}\n\n// 画布默认的宽度\nconst WIDTH = 1024;\n\n/**\n * 当 style 中使用的 opacity 不是常数的时候根据数据进行映射\n * @param field\n * @param values\n * @param updateOptions\n */\nfunction registerStyleAttribute(\n fieldName: string,\n layer: ILayer,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n) {\n layer.updateStyleAttribute(fieldName, field, values, updateOptions);\n}\n\n/**\n * 当样式发生变化时判断是否需要进行数据映射\n * @param configToUpdate\n * @param layer\n */\nfunction handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) {\n if (configToUpdate.opacity) {\n // 处理 style 中 opacity 属性的数据映射\n handleStyleFloat('opacity', layer, configToUpdate.opacity);\n }\n\n if (configToUpdate.strokeWidth) {\n // 处理 style 中 strokeWidth 属性的数据映射\n\n handleStyleFloat('strokeWidth', layer, configToUpdate.strokeWidth);\n }\n\n if (configToUpdate.strokeOpacity) {\n // 处理 style 中 strokeOpacity 属性的数据映射\n handleStyleFloat('strokeOpacity', layer, configToUpdate.strokeOpacity);\n }\n\n if (configToUpdate.stroke) {\n // 处理 style 中 stroke (strokeColor) 属性的数据映射\n handleStyleColor('stroke', layer, configToUpdate.stroke);\n }\n\n if (configToUpdate.offsets) {\n // 处理 style 中 offsets 属性的数据映射\n handleStyleOffsets('offsets', layer, configToUpdate.offsets);\n }\n\n if (configToUpdate.textOffset) {\n // 处理 style 中 textOffset 属性的数据映射\n handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);\n }\n\n if (configToUpdate.thetaOffset) {\n // 处理 style 中 thetaOffset 属性的数据映射\n handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);\n }\n}\n\n/**\n * 根据传入参数 float 的类型和值做相应的操作\n */\nfunction handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) {\n if (isString(styleFloat)) {\n // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => {\n return value;\n });\n } else if (isNumber(styleFloat)) {\n // 传入 number、默认值处理\n registerStyleAttribute(fieldName, layer, [styleFloat], undefined);\n } else if (isArray(styleFloat) && styleFloat.length === 2) {\n // 传入的 styleFloat 是长度为 2 的数组\n if (isString(styleFloat[0]) && isFunction(styleFloat[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else if (\n isString(styleFloat[0]) &&\n isArray(styleFloat[1]) &&\n isNumber(styleFloat[1][0]) &&\n isNumber(styleFloat[1][1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n}\n/**\n * 根据传入参数 offsets 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleOffsets\n */\nfunction handleStyleOffsets(\n fieldName: string,\n layer: ILayer,\n styleOffsets: any,\n) {\n if (isString(styleOffsets)) {\n // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => {\n return value;\n });\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isString(styleOffsets[0]) &&\n isFunction(styleOffsets[1])\n ) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isNumber(styleOffsets[0]) &&\n isNumber(styleOffsets[1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleOffsets, undefined);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [0, 0], undefined);\n }\n}\n\n/**\n * 根据传入参数 stroke / color 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleColor\n */\nfunction handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) {\n if (isString(styleColor)) {\n // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值\n registerStyleAttribute(fieldName, layer, styleColor, undefined);\n } else if (isArray(styleColor) && styleColor.length === 2) {\n // 传入的 styleColor 是长度为 2 的数组\n if (isString(styleColor[0]) && isFunction(styleColor[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else if (\n isString(styleColor[0]) &&\n isArray(styleColor[1]) &&\n styleColor[1].length > 0\n ) {\n // 字段映射 [string, [start: string, end: string]]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n}\n\nexport { handleStyleDataMapping, handleStyleFloat, handleStyleColor };\n"],"file":"dataMappingStyle.js"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
25
+
26
+ var _models = _interopRequireDefault(require("./models"));
27
+
28
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
29
+
30
+ 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; } }
31
+
32
+ var WindLayer = function (_BaseLayer) {
33
+ (0, _inherits2.default)(WindLayer, _BaseLayer);
34
+
35
+ var _super = _createSuper(WindLayer);
36
+
37
+ function WindLayer() {
38
+ var _this;
39
+
40
+ (0, _classCallCheck2.default)(this, WindLayer);
41
+
42
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
+ args[_key] = arguments[_key];
44
+ }
45
+
46
+ _this = _super.call.apply(_super, [this].concat(args));
47
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'WindLayer');
48
+ return _this;
49
+ }
50
+
51
+ (0, _createClass2.default)(WindLayer, [{
52
+ key: "buildModels",
53
+ value: function buildModels() {
54
+ var modelType = this.getModelType();
55
+ this.layerModel = new _models.default[modelType](this);
56
+ this.models = this.layerModel.initModels();
57
+ }
58
+ }, {
59
+ key: "rebuildModels",
60
+ value: function rebuildModels() {
61
+ this.models = this.layerModel.buildModels();
62
+ }
63
+ }, {
64
+ key: "renderModels",
65
+ value: function renderModels() {
66
+ if (this.layerModel) {
67
+ this.layerModel.render();
68
+ }
69
+
70
+ return this;
71
+ }
72
+ }, {
73
+ key: "getConfigSchema",
74
+ value: function getConfigSchema() {
75
+ return {
76
+ properties: {
77
+ opacity: {
78
+ type: 'number',
79
+ minimum: 0,
80
+ maximum: 1
81
+ }
82
+ }
83
+ };
84
+ }
85
+ }, {
86
+ key: "getDefaultConfig",
87
+ value: function getDefaultConfig() {
88
+ var type = this.getModelType();
89
+ var defaultConfig = {
90
+ wind: {}
91
+ };
92
+ return defaultConfig[type];
93
+ }
94
+ }, {
95
+ key: "getModelType",
96
+ value: function getModelType() {
97
+ return 'wind';
98
+ }
99
+ }]);
100
+ return WindLayer;
101
+ }(_BaseLayer2.default);
102
+
103
+ exports.default = WindLayer;
104
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/wind/index.ts"],"names":["WindLayer","modelType","getModelType","layerModel","WindModels","models","initModels","buildModels","render","properties","opacity","type","minimum","maximum","defaultConfig","wind","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAiBqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,SAAX,CAAJ,CAA0B,IAA1B,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WAED,wBAAsB;AACpB,UAAI,KAAKJ,UAAT,EAAqB;AACnB,aAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKT,YAAL,EAAb;AACA,UAAMY,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE;AADc,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EAvCoCK,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport WindModels, { WindModelType } from './models';\ninterface IWindLayerStyleOptions {\n uMin?: number;\n uMax?: number;\n vMin?: number;\n vMax?: number;\n fadeOpacity?: number;\n speedFactor?: number;\n dropRate?: number;\n dropRateBump?: number;\n opacity?: number;\n numParticles?: number;\n rampColors?: {\n [key: number]: string;\n };\n sizeScale?: number;\n}\nexport default class WindLayer extends BaseLayer<IWindLayerStyleOptions> {\n public type: string = 'WindLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new WindModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n public renderModels() {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n wind: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): WindModelType {\n return 'wind';\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _wind = _interopRequireDefault(require("./wind"));
11
+
12
+ var WindModels = {
13
+ wind: _wind.default
14
+ };
15
+ var _default = WindModels;
16
+ exports.default = _default;
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/wind/models/index.ts"],"names":["WindModels","wind","WindModel"],"mappings":";;;;;;;;;AAAA;;AAGA,IAAMA,UAA2C,GAAG;AAClDC,EAAAA,IAAI,EAAEC;AAD4C,CAApD;eAGeF,U","sourcesContent":["import WindModel from './wind';\nexport type WindModelType = 'wind';\n\nconst WindModels: { [key in WindModelType]: any } = {\n wind: WindModel,\n};\nexport default WindModels;\n"],"file":"index.js"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.bindAttriBuffer = bindAttriBuffer;
7
+ exports.bindAttriIndicesBuffer = bindAttriIndicesBuffer;
8
+ exports.bindTexture = bindTexture;
9
+ exports.bindUnifrom = bindUnifrom;
10
+ exports.createBuffer = createBuffer;
11
+ exports.createDataTexture = createDataTexture;
12
+ exports.createProgram = createProgram;
13
+ exports.createTexture = createTexture;
14
+ exports.initFramebuffer = initFramebuffer;
15
+ exports.loadShader = loadShader;
16
+ exports.setUnifrom = setUnifrom;
17
+
18
+ function createProgram(gl, vshader, fshader) {
19
+ var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader);
20
+ var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader);
21
+
22
+ if (!vertexShader || !fragmentShader) {
23
+ return null;
24
+ }
25
+
26
+ var program = gl.createProgram();
27
+
28
+ if (!program) {
29
+ return null;
30
+ }
31
+
32
+ gl.attachShader(program, vertexShader);
33
+ gl.attachShader(program, fragmentShader);
34
+ gl.linkProgram(program);
35
+ var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
36
+
37
+ if (!linked) {
38
+ var error = gl.getProgramInfoLog(program);
39
+ console.warn('Failed to link program: ' + error);
40
+ gl.deleteProgram(program);
41
+ gl.deleteShader(fragmentShader);
42
+ gl.deleteShader(vertexShader);
43
+ return null;
44
+ }
45
+
46
+ var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
47
+
48
+ for (var i = 0; i < numAttributes; i++) {
49
+ var attribute = gl.getActiveAttrib(program, i);
50
+ program[attribute.name] = gl.getAttribLocation(program, attribute.name);
51
+ }
52
+
53
+ var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
54
+
55
+ for (var i$1 = 0; i$1 < numUniforms; i$1++) {
56
+ var uniform = gl.getActiveUniform(program, i$1);
57
+ program[uniform.name] = gl.getUniformLocation(program, uniform.name);
58
+ }
59
+
60
+ program.vertexShader = vertexShader;
61
+ program.fragmentShader = fragmentShader;
62
+ return program;
63
+ }
64
+
65
+ function loadShader(gl, type, source) {
66
+ var shader = gl.createShader(type);
67
+
68
+ if (shader == null) {
69
+ console.warn('unable to create shader');
70
+ return null;
71
+ }
72
+
73
+ gl.shaderSource(shader, source);
74
+ gl.compileShader(shader);
75
+ var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
76
+
77
+ if (!compiled) {
78
+ var error = gl.getShaderInfoLog(shader);
79
+ console.warn('Failed to compile shader: ' + error);
80
+ gl.deleteShader(shader);
81
+ return null;
82
+ }
83
+
84
+ return shader;
85
+ }
86
+
87
+ function createTexture(gl, filter, data, width, height) {
88
+ var texture = gl.createTexture();
89
+ gl.bindTexture(gl.TEXTURE_2D, texture);
90
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
91
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
92
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);
93
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);
94
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);
95
+ gl.bindTexture(gl.TEXTURE_2D, null);
96
+ return texture;
97
+ }
98
+
99
+ function createDataTexture(gl, filter, data) {
100
+ var texture = gl.createTexture();
101
+ gl.bindTexture(gl.TEXTURE_2D, texture);
102
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
103
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
104
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);
105
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);
106
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, data);
107
+ gl.bindTexture(gl.TEXTURE_2D, null);
108
+ return texture;
109
+ }
110
+
111
+ function bindTexture(gl, texture, unit) {
112
+ gl.activeTexture(gl.TEXTURE0 + unit);
113
+ gl.bindTexture(gl.TEXTURE_2D, texture);
114
+ }
115
+
116
+ function createBuffer(gl, data) {
117
+ var buffer = gl.createBuffer();
118
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
119
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
120
+ return buffer;
121
+ }
122
+
123
+ function bindAttriBuffer(gl, attrName, vertices, count, program) {
124
+ var buffer = gl.createBuffer();
125
+
126
+ if (!buffer) {
127
+ console.warn('failed create vertex buffer');
128
+ }
129
+
130
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
131
+ gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
132
+ var attr = gl.getAttribLocation(program, attrName);
133
+ gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);
134
+ gl.enableVertexAttribArray(attr);
135
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
136
+ return {
137
+ buffer: buffer,
138
+ attr: attr,
139
+ count: count
140
+ };
141
+ }
142
+
143
+ function bindAttriIndicesBuffer(gl, indices) {
144
+ var buffer = gl.createBuffer();
145
+
146
+ if (!buffer) {
147
+ console.warn('failed create vertex buffer');
148
+ }
149
+
150
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
151
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
152
+ return buffer;
153
+ }
154
+
155
+ function bindUnifrom(gl, unifromName, data, program, vec) {
156
+ var uniform = gl.getUniformLocation(program, unifromName);
157
+
158
+ if (uniform < 0) {
159
+ console.warn('无法获取 uniform 变量的存储位置');
160
+ }
161
+
162
+ setUnifrom(gl, uniform, data, vec);
163
+ return uniform;
164
+ }
165
+
166
+ function setUnifrom(gl, location, data, vec) {
167
+ switch (vec) {
168
+ case 'float':
169
+ gl.uniform1f(location, data);
170
+ break;
171
+
172
+ case 'vec2':
173
+ gl.uniform2fv(location, data);
174
+ break;
175
+
176
+ case 'vec3':
177
+ gl.uniform3fv(location, data);
178
+ break;
179
+
180
+ case 'vec4':
181
+ gl.uniform4fv(location, data);
182
+ break;
183
+
184
+ case 'bool':
185
+ gl.uniform1i(location, data);
186
+ break;
187
+
188
+ case 'sampler2d':
189
+ break;
190
+
191
+ case 'mat4':
192
+ gl.uniformMatrix4fv(location, false, data);
193
+ break;
194
+ }
195
+ }
196
+
197
+ function initFramebuffer(gl) {
198
+ var drawingBufferWidth = gl.drawingBufferWidth,
199
+ drawingBufferHeight = gl.drawingBufferHeight;
200
+ var OFFER_SCREEN_WIDTH = drawingBufferWidth;
201
+ var OFFER_SCREEN_HEIGHT = drawingBufferHeight;
202
+ var FRAMEBUFFER = gl.createFramebuffer();
203
+ gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);
204
+ var depthbuffer = gl.createRenderbuffer();
205
+ gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);
206
+ gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT);
207
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthbuffer);
208
+ var texture = gl.createTexture();
209
+ var textureSize = 1024;
210
+ FRAMEBUFFER.texture = texture;
211
+ FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;
212
+ FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;
213
+ gl.bindTexture(gl.TEXTURE_2D, texture);
214
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
215
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
216
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
217
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
218
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
219
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
220
+ gl.bindTexture(gl.TEXTURE_2D, null);
221
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
222
+ return {
223
+ FRAMEBUFFER: FRAMEBUFFER,
224
+ OFFER_SCREEN_WIDTH: OFFER_SCREEN_WIDTH,
225
+ OFFER_SCREEN_HEIGHT: OFFER_SCREEN_HEIGHT
226
+ };
227
+ }
228
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/wind/models/utils.ts"],"names":["createProgram","gl","vshader","fshader","vertexShader","loadShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","program","attachShader","linkProgram","linked","getProgramParameter","LINK_STATUS","error","getProgramInfoLog","console","warn","deleteProgram","deleteShader","numAttributes","ACTIVE_ATTRIBUTES","i","attribute","getActiveAttrib","name","getAttribLocation","numUniforms","ACTIVE_UNIFORMS","i$1","uniform","getActiveUniform","getUniformLocation","type","source","shader","createShader","shaderSource","compileShader","compiled","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","createTexture","filter","data","width","height","texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","createDataTexture","unit","activeTexture","TEXTURE0","createBuffer","buffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","bindAttriBuffer","attrName","vertices","count","attr","vertexAttribPointer","FLOAT","enableVertexAttribArray","bindAttriIndicesBuffer","indices","ELEMENT_ARRAY_BUFFER","bindUnifrom","unifromName","vec","setUnifrom","location","uniform1f","uniform2fv","uniform3fv","uniform4fv","uniform1i","uniformMatrix4fv","initFramebuffer","drawingBufferWidth","drawingBufferHeight","OFFER_SCREEN_WIDTH","OFFER_SCREEN_HEIGHT","FRAMEBUFFER","createFramebuffer","bindFramebuffer","depthbuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","framebufferRenderbuffer","DEPTH_ATTACHMENT","textureSize","NEAREST","framebufferTexture2D","COLOR_ATTACHMENT0"],"mappings":"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","sourcesContent":["// @ts-nocheck\nexport function createProgram(gl, vshader, fshader) {\n // Create shader object\n const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象\n const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象\n if (!vertexShader || !fragmentShader) {\n return null;\n }\n\n // Create a program object\n const program = gl.createProgram(); // 创建程序对象\n if (!program) {\n return null;\n }\n\n // Attach the shader objects\n gl.attachShader(program, vertexShader); // 绑定着色器对象\n gl.attachShader(program, fragmentShader);\n\n // Link the program object\n gl.linkProgram(program); // 链接着色器对象\n\n // Check the result of linking\n const linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功\n if (!linked) {\n const error = gl.getProgramInfoLog(program);\n console.warn('Failed to link program: ' + error);\n gl.deleteProgram(program);\n gl.deleteShader(fragmentShader);\n gl.deleteShader(vertexShader);\n return null;\n }\n\n const numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < numAttributes; i++) {\n const attribute = gl.getActiveAttrib(program, i);\n program[attribute.name] = gl.getAttribLocation(program, attribute.name);\n }\n const numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i$1 = 0; i$1 < numUniforms; i$1++) {\n const uniform = gl.getActiveUniform(program, i$1);\n program[uniform.name] = gl.getUniformLocation(program, uniform.name);\n }\n\n program.vertexShader = vertexShader;\n program.fragmentShader = fragmentShader;\n\n return program;\n}\n\nexport function loadShader(gl: WebGLRenderingContext, type, source) {\n // Create shader object\n const shader = gl.createShader(type); // 生成着色器对象\n if (shader == null) {\n console.warn('unable to create shader');\n return null;\n }\n\n // Set the shader program\n gl.shaderSource(shader, source); // 载入着色器\n\n // Compile the shader\n gl.compileShader(shader); // 编译着色器代码\n\n // Check the result of compilation\n const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功\n // gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS\n if (!compiled) {\n const error = gl.getShaderInfoLog(shader);\n console.warn('Failed to compile shader: ' + error);\n gl.deleteShader(shader);\n return null;\n }\n\n return shader;\n}\n\nexport function createTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n width: number,\n height: number,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n data,\n );\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function createDataTexture(\n gl: WebGLRenderingContext,\n filter: any,\n data: any,\n) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, data);\n gl.bindTexture(gl.TEXTURE_2D, null);\n return texture;\n}\n\nexport function bindTexture(gl, texture, unit) {\n gl.activeTexture(gl.TEXTURE0 + unit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n}\n\nexport function createBuffer(gl, data) {\n const buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);\n return buffer;\n}\n\nexport function bindAttriBuffer(\n gl: WebGLRenderingContext,\n attrName: string,\n vertices,\n count,\n program,\n) {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n }\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据\n\n const attr = gl.getAttribLocation(program, attrName);\n gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(attr);\n gl.bindBuffer(gl.ARRAY_BUFFER, null);\n return { buffer, attr, count };\n}\n\nexport function bindAttriIndicesBuffer(\n gl: WebGLRenderingContext,\n indices: Uint8Array,\n): WebGLBuffer {\n const buffer = gl.createBuffer();\n if (!buffer) {\n console.warn('failed create vertex buffer');\n }\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);\n return buffer;\n}\n\nexport function bindUnifrom(gl, unifromName, data, program, vec) {\n const uniform = gl.getUniformLocation(program, unifromName);\n if (uniform < 0) {\n console.warn('无法获取 uniform 变量的存储位置');\n }\n setUnifrom(gl, uniform, data, vec);\n return uniform;\n}\n\nexport function setUnifrom(gl, location, data, vec) {\n switch (vec) {\n case 'float':\n gl.uniform1f(location, data);\n break;\n case 'vec2':\n gl.uniform2fv(location, data);\n break;\n case 'vec3':\n gl.uniform3fv(location, data);\n break;\n case 'vec4':\n gl.uniform4fv(location, data);\n break;\n case 'bool':\n gl.uniform1i(location, data); // 1 - true 0 - false\n break;\n case 'sampler2d':\n break;\n case 'mat4':\n gl.uniformMatrix4fv(location, false, data);\n break;\n }\n}\n\nexport function initFramebuffer(gl) {\n const { drawingBufferWidth, drawingBufferHeight } = gl;\n\n const OFFER_SCREEN_WIDTH = drawingBufferWidth;\n const OFFER_SCREEN_HEIGHT = drawingBufferHeight;\n\n const FRAMEBUFFER = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);\n const depthbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n depthbuffer,\n );\n\n const texture = gl.createTexture();\n const textureSize = 1024;\n FRAMEBUFFER.texture = texture;\n FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;\n FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;\n\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n OFFER_SCREEN_WIDTH,\n OFFER_SCREEN_HEIGHT,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null,\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0,\n );\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { FRAMEBUFFER, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT };\n}\n"],"file":"utils.js"}