Cesium自定义着色器-模式

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
相关推荐
小飞侠在吗4 小时前
vue props
前端·javascript·vue.js
大怪v5 小时前
【Virtual World 03】上帝之手
前端·javascript
招来红月7 小时前
记录JS 实用API
javascript
霍夫曼7 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
꒰ঌ小武໒꒱8 小时前
文件上传全维度知识体系:从基础原理到高级优化
javascript·node.js
用户47949283569159 小时前
JavaScript 今天30 岁了,但连自己的名字都不属于自己
javascript
用户47949283569159 小时前
Vite8来啦,告别 esbuild + Rollup,Vite 8 统一用 Rolldown 了
前端·javascript·vite
草字10 小时前
uniapp 悬浮按钮支持可拖拽。可移动。
前端·javascript·uni-app
一位搞嵌入式的 genius10 小时前
Vue实例挂载:从原理到项目实践的全维度解析
前端·javascript·vue.js·前端框架
m0_7400437310 小时前
Vue Router中获取路由参数d两种方式:$route.query和$route.params
前端·javascript·vue.js