/*** * @class DEUGlobe.Scene.sceneEffects.weatherEffects * @category 场景 * @classdesc 场景特效-天气特效 * @param {Object} viewer - Cesium.viewer。 * @param {Object} options - 参数。 * @param {String} options.name - 天气特效名称。 * @param {String} options.type - 天气特效类型. (snow:雪 , rain:雨,fog:雾)。 */ class weatherEffects{ constructor(viewer,options){ this.viewer = viewer; var opt = options || {}; this.name = opt.name; this.type = opt.type; let stage = this.getStage(), fs = null; if(stage == null){ switch(this.type){ case "snow": fs = this.fs_snow(); break; case "rain": fs = this.fs_rain(); break; case "fog": fs = this.fs_fog(); break; } } stage = new Cesium.PostProcessStage({ name : this.name, fragmentShader:fs, uniforms : { color: Cesium.Color.fromAlpha(Cesium.Color.BLACK, parseFloat(1)), } }); viewer.scene.postProcessStages.add(stage); } removePostProcessStage(){ let stage = this.getStage(); if(stage){ this.viewer.scene.postProcessStages.remove(stage); } } getStage(){ let stage = null, stages = this.viewer.scene.postProcessStages; for(let i = 0;i1.0) f=1.0;\n' +' gl_FragColor = mix(origcolor,fogcolor,0.8);\n' +' }'; } }