Cesium如果链接着色器的?

Cesium的着色器是一个很庞大的技术体系,我们使用起来相对还是比较容易的。Cesium内置了很多以CZM_开头的函数和Uniform。这些着色器是如何关联,又是如何调用的呢?

为了方便表示,我们可以做一个想象。一堆货物需要经过码头 ,放到货轮 上,运往远处。

1、货物(JS代码生成的对象)

为啥需要走这个流程呢?这是因为WebGL跟OpenGL、DirectX不一样。在WebGL中并没有Camera、View这种实例类,你需要在GLSL中编写相关脚本。也就是说,离开着色器是写不了WebGL的,一个最简单的WebGL程序都需要定义顶点着色器和片元着色器。

2、UniformState(码头)

这个玩意相当于**码头。**在这个类中,积累了大量运行参数,包括摄像头、View信息,比如_view3D、_viewRotation、_lightColor等等。UniformState提供setView()等函数,可以将JS计算得到的投影矩阵存储到本类的属性中。

3、AutomaticUniforms(货轮)

这玩意相当于**货轮。**在这个类中,它会把UniformState的_view3D等对象转化为Cesium着色器对应的名词,通俗一点就是包装。比如uniformState.viewportCartesian4被包装成czm_viewport。看到这里,你应该差不多想到后面的操作了。

4、ShaderProgram(远方)

这玩意相当于远方的消费市场。当然,你也清楚,不同的Shader使用的CZM_的数量是不一样的,因此在这里,还会调用partitionUniforms方法找出哪些名词需要映射到Cesium着色器中。而不是把AutomaticUniforms所有的对象都映射过去。最后这个映射方法是_setUniforms。

相关推荐
时间的情敌1 天前
Vue3 + Cesium 实战:本地上传 GLB 模型、模型上叠加 GLB、点击控制透明度
前端·vue.js·cesium
LuHang2 天前
从天地图切换到高德地图:一次真实的底图迁移实战
前端·vue.js·cesium
总要学点什么3 天前
第92篇:三维特效-圆(逐渐消逝)——从圆心开始,让一个洞把整片光啃到只剩外圈
gis·webgl·cesium·空间分析·1024程序员节
总要学点什么3 天前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
vjmap3 天前
Cesium + MCP:在 Cursor、Claude Code 里一句话生成地图视频,唯杰 AI 地图动画上线
gis·cesium·mcp
总要学点什么6 天前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
刺客xs9 天前
GLSL Opengl着色器着色语言
着色器
总要学点什么9 天前
第79篇:数据可视化-模拟迁徙效果——把三十条航线画成会飞的弧
3d·信息可视化·数据挖掘·数据分析·gis·webgl·cesium
总要学点什么12 天前
第75篇:右键菜单控件——把一张会做事的菜单钉在鼠标落下的那点
前端·信息可视化·echarts·cesium·空间分析
Hello_Pyhx12 天前
SCSKiller v1.3.2 使用流程:从着色器预编译到检查缓存状态
缓存·着色器