通过cesium的postProcessStages接口改变fragmentShader来实现这些效果

addsnow() {
    //删除
      if (this.snow) this.viewer.scene.postProcessStages.remove(this.snow)
      this.snow = new Cesium.PostProcessStage({
        name: 'czm_snow',
        fragmentShader:
         '\n\
          uniform sampler2D colorTexture;\n\
          varying vec2 v_textureCoordinates;\n\
          float snow(vec2 uv,float scale)\n\
          {\n\
          float time = czm_frameNumber / 60.0;\n\
           float w=smoothstep(1.,0.,-uv.y*(scale/10.));if(w<.1)return 0.;\n\
           uv+=time/scale;uv.y+=time*2./scale;uv.x+=sin(uv.y+time*.5)/scale;\n\
            uv*=scale;vec2 s=floor(uv),f=fract(uv),p;float k=3.,d;\n\
            p=.5+.35*sin(11.*fract(sin((s+p+scale)*mat2(7,3,6,5))*5.))-f;d=length(p);k=min(d,k);\n\
           k=smoothstep(0.,k,sin(f.x+f.y)*0.01);\n\
          return k*w;\n\
          }\n\
          void main(void){\n\
           vec2 resolution = czm_viewport.zw;\n\
           vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\n\
           vec3 finalColor=vec3(0);\n\
             float c = 0.0;\n\
            c+=snow(uv,30.)*.0;\n\
            c+=snow(uv,20.)*.0;\n\
           c+=snow(uv,15.)*.0;\n\
           c+=snow(uv,10.);\n\
           c+=snow(uv,8.);\n\
            c+=snow(uv,6.);\n\
           c+=snow(uv,5.);\n\
            finalColor=(vec3(c)); \n\
          gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(finalColor,1), 0.5); \n\
          }'
      })

this.viewer.scene.postProcessStages.add(this.snow)
    },

Shader

//雨
 '\n\
   uniform sampler2D colorTexture;\n\
     varying vec2 v_textureCoordinates;\n\
     float hash(float x)\n\
     {\n\
      return fract(sin(x*133.3)*13.13);\n\
     }\n\
     void main(void){\n\
       float time = czm_frameNumber / 60.0;\n\
      vec2 resolution = czm_viewport.zw;\n\
       vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\n\
       vec3 c=vec3(.6,.7,.8);\n\
       float a=-.4;\n\
     float si=sin(a),co=cos(a);\n\
     uv*=mat2(co,-si,si,co);\n\
     uv*=length(uv+vec2(0,4.9))*.3+1.;\n\
      float v=1.-sin(hash(floor(uv.x*100.))*2.);\n\
     float b=clamp(abs(sin(20.*time*v+uv.y*(5./(2.+v))))-.95,0.,1.)*20.;\n\
     c*=v*b;\n\
     gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(c,1), 0.5);\n\
     }'

//雪
'\n\
    uniform sampler2D colorTexture;\n\
    varying vec2 v_textureCoordinates;\n\
    float snow(vec2 uv,float scale)\n\
    {\n\
    float time = czm_frameNumber / 60.0;\n\
     float w=smoothstep(1.,0.,-uv.y*(scale/10.));if(w<.1)return 0.;\n\
     uv+=time/scale;uv.y+=time*2./scale;uv.x+=sin(uv.y+time*.5)/scale;\n\
      uv*=scale;vec2 s=floor(uv),f=fract(uv),p;float k=3.,d;\n\
      p=.5+.35*sin(11.*fract(sin((s+p+scale)*mat2(7,3,6,5))*5.))-f;d=length(p);k=min(d,k);\n\
     k=smoothstep(0.,k,sin(f.x+f.y)*0.01);\n\
    return k*w;\n\
    }\n\
    void main(void){\n\
     vec2 resolution = czm_viewport.zw;\n\
     vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\n\
     vec3 finalColor=vec3(0);\n\
       float c = 0.0;\n\
      c+=snow(uv,30.)*.0;\n\
      c+=snow(uv,20.)*.0;\n\
     c+=snow(uv,15.)*.0;\n\
     c+=snow(uv,10.);\n\
     c+=snow(uv,8.);\n\
      c+=snow(uv,6.);\n\
     c+=snow(uv,5.);\n\
      finalColor=(vec3(c)); \n\
    gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(finalColor,1), 0.5); \n\
     }'
 
//雾
'\n\
   uniform sampler2D colorTexture;\n\
        uniform sampler2D depthTexture;\n\
        varying vec2 v_textureCoordinates;\n\
        void main(void)\n\
        {\n\
           vec4 origcolor=texture2D(colorTexture, v_textureCoordinates);\n\
            vec4 fogcolor=vec4(0.8,0.8,0.8,0.5);\n\
            float depth = czm_readDepth(depthTexture, v_textureCoordinates);\n\
            vec4 depthcolor=texture2D(depthTexture, v_textureCoordinates);\n\
            float f=(depthcolor.r-0.7)/0.2;\n\
            if(f<0.0) f=0.0;\n\
            else if(f>1.0) f=1.0;\n\
            gl_FragColor = mix(origcolor,fogcolor,f);\n\
        }'
————————————————
原文链接:https://blog.csdn.net/skr_Rany/article/details/112601036

cesium加载气象数据相关推荐

  1. 首次使用Cesium加载3D数据不成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/110454547 参阅相关教程:Cesium加载3D数据是通过3D Tiles进行: 3D ...

  2. Cesium加载大数据量地下管线

    Cesium加载大数据量地下管线 Cesium优化加载 管线加载 管井.摄像头.交通信号灯等模型加载 与倾斜摄影模型结合加载 Cesium优化加载 管线.管井.路灯.交通信号灯.接电箱等模型使用Pri ...

  3. 首次使用Cesium加载3D数据成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/111305160 `代码同前文:加载不同的数据,都不能加载出来: var palaceTil ...

  4. Cesium加载GeoJson数据(shp转化的json数据)

    1.shp转换成json格式 此处整理了两种shp转为json格式的方式:一是使用工具:二是使用ArcGIS进行转换. 1.1.ArcGIS转换 1.使用ArcGIS将shp文件的地理坐标设置为WGS ...

  5. vite+cesium加载3DTile数据

    Cesium 3D Tile是Cesium的一种特有的3D模型格式,其文件名后缀为.b3dm,而要在自己开发的平台上调用这些3D Tile,一般为通过后缀为.json格式的文件来调用.b3dm格式的3 ...

  6. 自己写的Cesium加载天地图数据服务的方法(亲测可用)

    前提条件 1.首先需要了解天地图都有哪些数据服务,具体详见天地图API介绍,如下图所示: 如下地址我将加粗的"vec_c"成为图层标签. http://t0.tianditu.go ...

  7. cesium采用primitive方式加载geojson数据

    cesium采用primitive方式加载geojson数据 cesium加载geojson数据有自带的接口GeoJsonDataSource和演示 示例,使用的是entity方式来加载数据,而ent ...

  8. ceisum 加载geojson,使用 Cesium 动态加载 GeoJSON 数据

    前言 需求是这样的,我需要在地图中显示 08 年到现在的地震情况,地震都是发生在具体的时间点的,那么问题就来了,如何实现地震情况按照时间动态渲染而不是一次全部加载出来. 一. 方案分析 这里面牵扯到两 ...

  9. Cesium开发基础篇 | 02加载地形数据

    Cesium中的地形图层类 前面我们主要学习了cesium内置接口如何操作影像数据,但是在一些应用场景中我们需要操作地形数据,例如模拟逼真的三维场景.与高程相关的一些空间分析和计算等.Cesium提供 ...

最新文章

  1. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第7章-二阶时滞多智能体系统分组一致性
  2. 网易云信给您拜年啦!
  3. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)
  4. 哈密顿路径_检查图形是否为哈密顿量(哈密顿路径)
  5. disp语句怎么格式 matlab_Matlab使用技巧总结-1
  6. [codevs2597]团伙并查集
  7. Tomcat Post请求参数长度限制
  8. C语言经典算法100例-002-数轴的使用
  9. 比尔·盖茨推荐2020年度五本好书 你想读哪本?
  10. 【DataOps】- 数据开发治理一体化之网易数帆数据治理2.0实践分享
  11. linux目录结构全解,Linux目录结构详解(最全最详细版)
  12. 算法训练 - 黑色星期五 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又
  13. android o bln-al10,bln-al10是什么手机型号 bln-al10是啥手机型号
  14. 运用“孤独九剑”解决项目实际问题(三)
  15. java 从已知日期计算干支纪日_天干地支纪日怎么计算?
  16. apk 进行系统签名
  17. linux远程端口查看
  18. python内建函数是什么意思_python、什么是内建函数?
  19. 为什么电脑QQ的字体突然变小了
  20. 求e的近似值B-Python123编程题库答案-Python从入门到精通挑战台

热门文章

  1. Python初学者指南
  2. MongoDB的Morphia框架
  3. springboot整合webSocket(看完即入门)
  4. 长痘的原因及治疗方法
  5. AcWing周赛 72 场 LeetCode单周赛 314 场 总结
  6. 树莓派搭建百度云同步
  7. 正则表达式语法----re模块
  8. 数据分析师培训机构带你3分钟快速入门数据分析
  9. Python数学中裂项相消的计算-求前N项和
  10. Linux文件系统:minix文件系统二进制分析2