Atmospheric flow effect How to optimize the boundary?

123

this is my code.

const materialMain = new Cesium.Material({
    fabric: {
        type: 'Image',
        uniforms: {
            image: './map.png',
            radians: 100,
        },
        //shader
        source: `
  #define M_PI 3.1415926535897932384626433832795

  uniform sampler2D image;
  uniform float radians;

  czm_material czm_getMaterial(czm_materialInput materialInput)
  {
    czm_material material = czm_getDefaultMaterial(materialInput);
    vec2 st = vec2(materialInput.st.x - 0.5, materialInput.st.y - 0.5);
    float alpha = 1.3 - st.y-st.x -0.5;
    float current_radians = atan(st.y, st.x);
    float radius = sqrt( st.x * st.x+st.y * st.y);
    if (radius < 0.5) {
      current_radians = current_radians - radians;
      st = vec2(cos(current_radians) * radius, sin(current_radians) * radius);
      st = vec2(st.x + 0.5, st.y + 0.5);
      vec4 colorImage = texture2D(image, st);
      material.diffuse = colorImage.rgb;
      material.alpha = colorImage.a * alpha;
    }else {
      material.alpha = 0.0;
    }

    return material;
  }
  `
    }
});
   const worldRectangle1 = viewer.scene.primitives.add(new Cesium.Primitive({
        geometryInstances: new Cesium.GeometryInstance({
            geometry: new Cesium.RectangleGeometry({
                rectangle: Cesium.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),
                vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
                height: 1e6,
                // ellipsoid: {
                //     radii: new Cesium.Cartesian3(radius, radius, radius),
                // }
            })
        }),
        appearance: new Cesium.EllipsoidSurfaceAppearance({
            material: materialMain,
            aboveGround: true
        }),
        show: true
    }))