Skip to content

概述

fabric 是 Cesium 的“材质描述语言”,fabric 等于用 JSON 描述 Shader 逻辑的高级封装。

它不是 GLSL 本身,而是:

  • 对 GLSL 的一层抽象
  • 专门用来定义 Material(材质)
  • 主要作用在 片元着色器阶段
javascript
viewer.scene.primitives.add(
  new Cesium.Primitive({
    geometryInstances: instance,
    appearance: new Cesium.EllipsoidSurfaceAppearance({
      material: new Cesium.Material({
        fabric: {
          type: 'Pulse',
          uniforms: {
            color: Cesium.Color.RED,
            speed: 0.01,
          },
          source: `
            czm_material czm_getMaterial(czm_materialInput materialInput)
            {
              czm_material material = czm_getDefaultMaterial(materialInput);
              float t = fract(czm_frameNumber * speed);
              material.diffuse = color.rgb;
              material.alpha = t;
              return material;
            }
          `,
        },
        translucent: true,
      })
    }),
  })
)
/