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
}))