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。

相关推荐
GIS遥遥5 小时前
Cesium进阶教程(2)|基于 Cesium 后处理Post Processing的图形绘制(上)
cesium·gis开发·webgis开发
幸会同学1 天前
在Cesium中实现飘动的红旗
javascript·three.js·cesium
落霞的思绪1 天前
Cesium里的postProcessStages实现暗黑样式的天地图
前端·gis·cesium
GIS兵墩墩4 天前
C1 ——cesium加载天地图瓦片
cesium·天地图
我是ed.5 天前
vue2 使用 cesium 展示 TLE 星历数据
vue.js·cesium
GisCoder9 天前
Cesium教程(9)---编辑Entity图形控制点、拖拽Entity移动、删除Entity
webgl·cesium
GISBox10 天前
BIM+GIS协同:RVT文件转3DTiles的技术路径与场景落地
cesium·3dtiles·gisbox·服务分发·gis server·切片转换·rvt
GISBox11 天前
高斯泼溅转3DTiles:GISBox高效转换全流程指南
免费·cesium·ply·3dtiles·高斯泼溅·gisbox·切片转换
王将近12 天前
Cesium 山洪流体模拟
前端·cesium
GisCoder13 天前
Cesium+Vue3学习教程系列(6)---实时显示鼠标三维坐标数据、实时显示相机姿态heading、pitch、roll数据
cesium