Cesium高级-czm前缀的内置变量与函数初探

使用Cesium,避免不了会和WebGL打交道。而Cesium中很多特殊材质、后处理效果,都需要我们直接编写GLSL(OpenGL Shading language)来进行着色器编程。WebGL本身已经很难理解了,而Cesium也内置了很多变量和函数,用于glsl编程。

看了一些大佬的文章和示例,Cesium内置的用于glsl编程的函数和变量,大多是czm_前缀的。可是借鉴和自学起来很泪奔···因为相关的介绍非常少(可能是因为Cesium后续版本中要弱化czm的东西,所以官网介绍都去掉了[个人猜测,可能不对。也可能是我能力有限,确实没找到叫全面的介绍资料])。而三维运算中又涉及大量的矩阵、向量的运算。而WebGL中,大部分也需要进行归一化运算。整体看起来很抽象。

我个人也是在运用Cesium的glsl处理特效方面遇到了障碍,因此下决心收集和查找相关的资料。终于用科学的方式,收集到一些关于czm参数和方法的介绍。但因本人能力有限,收集到的还不是很全面,对于已收集的,也仅仅是介绍这些参数和方法的意思,具体如何使用,还需要后续不断深入研究。感谢理解。

一、常用的变量

1、czm_model:模型变换矩阵,将对象从模型空间变换到世界空间。

2、czm_view:视图变换矩阵,将世界空间中的对象变换到摄像机空间。

3、czm_projection:投影变换矩阵,将摄像机空间中的对象进行透视或正交投影,得到剪辑空间坐标。

4、czm_modelView:模型视图变换矩阵,即 czm_view * czm_model。

5、czm_modelViewProjection:模型视图投影变换矩阵,即 czm_projection * czm_view * czm_model,将对象从模型空间变换到剪辑空间。

6、czm_inverseModel:模型变换矩阵的逆矩阵,用于将世界空间中的坐标变换到模型空间中。

7、czm_inverseView:视图变换矩阵的逆矩阵,用于将摄像机空间中的坐标变换到世界空间中。

8、czm_inverseProjection:投影变换矩阵的逆矩阵,用于将剪辑空间中的坐标变换到摄像机空间中。

9、czm_normal:变换后的法线向量,用于进行光照计算。

10、czm_ellipsoid:椭球体参数,用于进行地球表面坐标系和笛卡尔坐标系之间的转换。

11、czm_frameNumber:帧计数器,每次渲染时自增1,可用于实现动画效果。

12、czm_pixelRatio:设备像素比,用于实现高分辨率屏幕上的渲染。

二、常用的函数

1、czm_unpackDepth:它用于将从深度纹理中读取到的深度值进行解压缩,以便在着色器中进行深度测试和深度值比较等操作。深度纹理通常用于实现阴影效果、深度检测等功能。在Cesium中,深度值通常被存储在一个16位的纹理单元中,这个值被压缩成0到1之间的浮点数,以便节省显存空间。

2、czm_inverseTranspose:返回一个矩阵的逆转置矩阵,通常用于变换法线向量。

3、czm_saturation:返回一个颜色的饱和度,通常用于实现色彩调整。

4、czm_sceneMode:返回当前场景的模式,例如二维地图、三维场景等。

5、czm_ellipsoidContainsPoint:判断一个点是否在当前椭球体内,通常用于进行鼠标拾取等操作。

6、czm_eastNorthUpToFixedFrame:返回从东-北-天坐标系到固定坐标系的变换矩阵,通常用于实现坐标系转换。

7、czm_geodeticSurfaceNormal:返回一个点在椭球体表面上的法线向量,通常用于进行光照计算。

8、czm_transformColor:将一个颜色从一种颜色空间转换为另一种颜色空间,通常用于进行色彩调整。

9、czm_decompressTextureCoordinates:解压缩纹理坐标,通常用于将纹理坐标从一个压缩格式转换为普通的二维坐标。

10、czm_eyeOffset:返回一个向量,表示摄像机视点在局部坐标系中的偏移量。

11、czm_fractionAndIntervalToIndex:根据插值系数和区间范围计算索引,通常用于实现纹理合并。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值