csharp
let customShader = new Cesium.CustomShader({
......
// 设置着色器模式为完全替换原始材质。
mode: Cesium.CustomShaderMode.MODIFY_MATERIAL,
......
})
Cesium 自定义着色器有两种模式:
1. REPLACE_MATERIAL - 完全替换材质
arduino
// 当:完全不需要原始材质,要自己从头创建外观
mode: Cesium.CustomShaderMode.REPLACE_MATERIAL
使用场景:
- 程序化生成的材质(条纹、波浪、渐变等)
- 特殊效果(X光、热力图、扫描线)
- 完全自定义的颜色和纹理
2. MODIFY_MATERIAL - 修改原始材质
arduino
// 当:想要保留原始材质,只是稍作调整
mode: Cesium.CustomShaderMode.MODIFY_MATERIAL
使用场景:
- 给原有模型添加发光效果
- 调整原始纹理的亮度/对比度
- 在原有基础上添加高光或阴影
- 颜色校正或滤镜效果
3. 示例对比
a. REPLACE_MATERIAL 示例:
scss
// 完全忽略原始纹理,创建自己的材质
mode: Cesium.CustomShaderMode.REPLACE_MATERIAL,
fragmentShaderText: `
void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {
// 完全自定义的颜色,不关心原始材质是什么
material.diffuse = vec3(1.0, 0.0, 0.0); // 纯红色
}
`
原本材质

完全替换材质效果

b. MODIFY_MATERIAL 示例:
arduino
// 在原始材质基础上添加效果
mode: Cesium.CustomShaderMode.MODIFY_MATERIAL,
fragmentShaderText: `
void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {
// 在原始颜色基础上添加红色分量
material.diffuse.r += 0.9; // 让原始材质更红一些
}
`
修改材质效果

c. 选择建议:
- 想完全重做外观 →
REPLACE_MATERIAL - 想微调现有外观 →
MODIFY_MATERIAL