经纬志
首页 / Cesium / 使用示例

3D Tiles 自定义着色器

给瓦片集挂 CustomShader,用节点局部坐标的高度改写材质颜色。

CesiumJS 1.121 · 更新 2026-10-28
源码与运行效果
运行效果

着色器入口

fragmentShaderText 里必须实现 fragmentMain,第二个参数是 czm_modelMaterial,改它的 diffuse、roughness 就改写了 PB​R 输入。

能拿到什么

fsInput.attributes.positionMC 是模型局部坐标,position 是世界坐标。按局部高度分层不受瓦片位置影响,按世界坐标则可以做城市级的统一渐变。

输入含义用途
positionMC模型局部坐标按单体高度分层
material.diffuse漫反射颜色着色主入口
normalEC相机空间法线自定义光照

CustomShader 编译失败时控制台会打印 GLSL 日志,瓦片会退回原始着色,不会黑屏;调试时先写最小可用的 fragmentMain。