Cesium自定义Shader中常用的常量、结构体和函数概览

1 前言

  众所周知,Cesium是基于WebGL的,并且封装了很多的自定义类型,其中包括常量、结构体和函数,本文将这些常用的类型进行罗列,以备查。这些变量所属的位置见下图
在这里插入图片描述

2 常量

类型含义对应js类
czm_degreesPerRadian每弧度的角度,用于弧度到角度的转换 (180/π)degreesPerRadian.js
czm_depthRange深度缓冲区的最小值和最大值,用于深度测试depthRange.js
czm_epsilon1非常小的数值(1e-1),用于处理浮点数精度误差epsilon1.js
czm_epsilon2非常小的数值(1e-2),用于精度要求稍高的浮点数比较epsilon2.js
czm_epsilon3更小的数值(1e-3),用于更加严格的浮点数比较epsilon3.js
czm_epsilon4(1e-4),处理更小的精度问题epsilon4.js
czm_epsilon5(1e-5),用于极高精度的浮点数计算epsilon5.js
czm_epsilon6(1e-6),用于极微小的数值精度控制epsilon6.js
czm_epsilon7(1e-7),用于更细微的浮点数比较epsilon7.js
czm_infinity正无穷大,用于表示无限的范围,如距离或光线追踪中的无穷远点infinity.js
czm_oneOverPi1/π 的常量,用于加快与圆周率相关的计算oneOverPi.js
czm_oneOverTwoPi1/(2π) 的常量,用于角度相关的计算优化oneOverTwoPi.js
czm_passCesium3DTile标识当前渲染的是Cesium 3D Tile的渲染通道passCesium3DTile.js
czm_passCesium3DTileClassification标识Cesium 3D Tile分类的渲染通道,用于对象分类passCesium3DTileClassification.js
czm_passCesium3DTileClassificationIgnoreShow类似于czm_passCesium3DTileClassification,但忽略显示状态的分类passCesium3DTileClassificationIgnoreShow.js
czm_passClassification标识分类渲染通道,通常用于地形、建筑物等的分类渲染passClassification.js
czm_passCompute用于计算着色器的渲染通道,专注于计算而非直接渲染passCompute.js
czm_passEnvironment用于环境效果的渲染通道,如天空、雾等passEnvironment.js
czm_passGlobe标识地球渲染通道,主要用于地球表面的渲染passGlobe.js
czm_passOpaque不透明物体的渲染通道passOpaque.js
czm_passOverlay覆盖物的渲染通道,例如UI覆盖图passOverlay.js
czm_passTerrainClassification地形分类的渲染通道passTerrainClassification.js
czm_passTranslucent半透明物体的渲染通道passTranslucent.js
czm_pi圆周率 π,用于几何和角度计算pi.js
czm_piOverFourπ/4,用于简化特定的角度计算piOverFour.js
czm_piOverSixπ/6,用于简化相关的三角计算piOverSix.js
czm_piOverThreeπ/3,用于特定角度的快速计算piOverThree.js
czm_piOverTwoπ/2,用于90度的快速计算piOverTwo.js
czm_radiansPerDegree每度的弧度,用于从角度转换到弧度 (π/180)radiansPerDegree.js
czm_sceneMode2D2D场景模式的标识,用于2D渲染场景sceneMode2D.js
czm_sceneMode3D3D场景模式的标识,用于3D场景的渲染sceneMode3D.js
czm_sceneModeColumbusViewColumbus视图模式标识,一种2.5D视图sceneModeColumbusView.js
czm_sceneModeMorphing场景模式过渡(变形)标识,用于模式转换时的过渡效果sceneModeMorphing.js
czm_solarRadius太阳半径常量,用于天文计算solarRadius.js
czm_threePiOver23π/2,用于270度的快速计算threePiOver2.js
czm_twoPi2π,用于360度或全圆的快速计算twoPi.js

3 结构体

类型含义对应js类
czm_webMercatorMaxLatitudeWeb墨卡托投影中的最大纬度,用于地图投影计算webMercatorMaxLatitude.js
czm_depthRangeStruct深度范围结构体,用于在深度测试中表示最小和最大深度depthRangeStruct.js
czm_material材质结构体,定义用于渲染的材质属性(如颜色、纹理、光照反应等)material.js
czm_materialInput材质输入结构体,包含与材质相关的输入参数materialInput.js
czm_modelMaterial模型材质结构体,定义与3D模型相关的材质属性modelMaterial.js
czm_modelVertexOutput模型顶点输出结构体,包含顶点着色器的输出参数modelVertexOutput.js
czm_pbrParametersPBR(物理基础渲染)参数结构体,用于定义材质的金属度、粗糙度等物理属性pbrParameters.js
czm_ray射线结构体,用于光线追踪或碰撞检测中的射线表示ray.js
czm_raySegment射线段结构体,表示有限长度的射线,用于碰撞检测raySegment.js
czm_shadowParameters阴影参数结构体,用于阴影计算shadowParameters.js

4 函数

类型含义对应js类
czm_acesTonemappingACES色调映射函数,用于将HDR值映射到LDR输出acesTonemapping.js
czm_alphaWeight透明度权重计算函数,用于混合半透明物体alphaWeight.js
czm_antialias抗锯齿函数,用于边缘平滑处理antialias.js
czm_approximateSphericalCoordinates近似球面坐标计算函数,用于将笛卡尔坐标转换为球面坐标approximateSphericalCoordinates.js
czm_backFacing判断当前片元是否为背面,通常用于背面剔除backFacing.js
czm_branchFreeTernary无分支三元操作函数,优化分支判断branchFreeTernary.js
czm_cascadeColor用于阴影级联的颜色计算cascadeColor.js
czm_cascadeDistance计算阴影级联中不同级别的距离cascadeDistance.js
czm_cascadeMatrix阴影级联的矩阵计算,用于光源的分布cascadeMatrix.js
czm_cascadeWeights阴影级联的权重计算,用于平滑阴影过渡cascadeWeights.js
czm_columbusViewMorphColumbus视图模式下的场景变形函数columbusViewMorph.js
czm_computePosition计算模型或片元的空间位置computePosition.js
czm_cosineAndSine同时计算余弦和正弦值,优化性能cosineAndSine.js
czm_decompressTextureCoordinates解压缩纹理坐标的函数,用于压缩后的纹理解码decompressTextureCoordinates.js
czm_defaultPbrMaterial返回默认的PBR材质参数,用于物理基础渲染defaultPbrMaterial.js
czm_depthClamp限制深度值的函数,防止深度过大或过小depthClamp.js
czm_eastNorthUpToEyeCoordinates将东-北-上坐标系转换为眼睛空间坐标系eastNorthUpToEyeCoordinates.js
czm_ellipsoidContainsPoint判断某点是否在椭球体内,通常用于地球表面计算ellipsoidContainsPoint.js
czm_ellipsoidWgs84TextureCoordinates计算WGS84椭球的纹理坐标ellipsoidWgs84TextureCoordinates.js
czm_equalsEpsilon近似相等判断函数,带有一定误差范围的浮点数比较equalsEpsilon.js
czm_eyeOffset计算片元的视差,用于模拟深度效果eyeOffset.js
czm_eyeToWindowCoordinates将眼睛空间坐标转换为窗口坐标eyeToWindowCoordinates.js
czm_fastApproximateAtan快速近似计算反正切值,用于角度计算的优化fastApproximateAtan.js
czm_fog雾效果计算函数,用于模拟雾气效果fog.js
czm_gammaCorrectGamma校正函数,用于调整亮度和颜色显示gammaCorrect.js
czm_geodeticSurfaceNormal计算地理表面的法线方向,通常用于光照计算geodeticSurfaceNormal.js
czm_getDefaultMaterial获取默认材质函数,用于初始化材质参数getDefaultMaterial.js
czm_getLambertDiffuse计算朗伯漫反射光照,用于基本光照模型getLambertDiffuse.js
czm_getSpecular计算镜面反射光照,用于光照计算getSpecular.js
czm_getWaterNoise用于模拟水面噪声的计算函数getWaterNoise.js
czm_HSBToRGB将HSB颜色空间转换为RGB颜色空间HSBToRGB.js
czm_HSLToRGB将HSL颜色空间转换为RGB颜色空间HSLToRGB.js
czm_hue计算色调的函数,用于色彩调整hue.js
czm_inverseGamma反向Gamma校正函数inverseGamma.js
czm_isEmpty判断材质或对象是否为空isEmpty.js
czm_isFull判断材质或对象是否充满isFull.js
czm_latitudeToWebMercatorFraction将纬度转换为Web墨卡托投影的比例latitudeToWebMercatorFraction.js
czm_lineDistance计算两点之间的距离,通常用于射线或直线计算lineDistance.js
czm_luminance计算亮度,用于光照或HDR显示luminance.js
czm_metersPerPixel计算每像素对应的米数,用于缩放计算metersPerPixel.js
czm_modelToWindowCoordinates将模型空间坐标转换为窗口坐标modelToWindowCoordinates.js
czm_multiplyWithColorBalance计算颜色平衡的乘法操作multiplyWithColorBalance.js
czm_nearFarScalar根据近、远裁剪平面计算标量值nearFarScalar.js
czm_octDecode解码八面体投影的函数,通常用于解压缩法线octDecode.js
czm_packDepth将深度值打包为颜色数据,用于深度缓冲区优化packDepth.js
czm_pbrLighting物理基础渲染的光照计算函数pbrLighting.js
czm_pbrMetallicRoughnessMaterialPBR金属度/粗糙度材质计算函数pbrMetallicRoughnessMaterial.js
czm_pbrSpecularGlossinessMaterialPBR镜面反射/光泽度材质计算函数pbrSpecularGlossinessMaterial.js
czm_phongPhong光照模型计算函数,传统光照模型phong.js
czm_planeDistance计算点到平面的距离planeDistance.js
czm_pointAlongRay计算射线上某点的位置pointAlongRay.js
czm_rayEllipsoidIntersectionInterval计算射线与椭球体的交点rayEllipsoidIntersectionInterval.js
czm_readDepth从深度缓冲区读取深度值readDepth.js
czm_readNonPerspective读取非透视投影的深度值readNonPerspective.js
czm_reverseLogDepth反向对数深度的计算函数,用于避免精度问题reverseLogDepth.js
czm_RGBToHSB将RGB颜色空间转换为HSB颜色空间RGBToHSB.js
czm_RGBToHSL将RGB颜色空间转换为HSL颜色空间RGBToHSL.js
czm_RGBToXYZ将RGB颜色空间转换为XYZ颜色空间,用于色彩管理RGBToXYZ.js
czm_sampleOctahedralProjection对八面体投影进行采样sampleOctahedralProjection.js
czm_saturation计算颜色饱和度saturation.js
czm_shadowDepthCompare比较阴影深度值,用于阴影映射shadowDepthCompare.js
czm_shadowVisibility计算阴影可见性,用于处理阴影效果shadowVisibility.js
czm_signNotZero返回符号值,并确保不为零signNotZero.js
czm_sphericalHarmonics球谐函数计算,用于光照或反射sphericalHarmonics.js
czm_tangentToEyeSpaceMatrix将切线空间转换为眼睛空间的矩阵tangentToEyeSpaceMatrix.js
czm_transformPlane变换平面函数,用于几何变换transformPlane.js
czm_translateRelativeToEye将某点相对于视点进行平移translateRelativeToEye.js
czm_translucentPhong透明物体的Phong光照模型translucentPhong.js
czm_transpose矩阵转置函数transpose.js
czm_unpackDepth解包深度值,用于从颜色数据中提取深度unpackDepth.js
czm_unpackFloat解包浮点数,用于从压缩数据中解码浮点数unpackFloat.js
czm_vertexLogDepth顶点着色器的对数深度计算,用于避免深度冲突vertexLogDepth.js
czm_windowToEyeCoordinates将窗口坐标转换为眼睛空间坐标windowToEyeCoordinates.js
czm_writeDepthClamp写入深度值并进行深度限制writeDepthClamp.js
czm_writeLogDepth写入对数深度值,用于防止深度冲突writeLogDepth.js
czm_writeNonPerspective写入非透视投影的深度值writeNonPerspective.js
czm_XYZToRGB将XYZ颜色空间转换为RGB颜色空间XYZToRGB.js

5 总结

  本文列举了Cesium中编写GLSL时常用的常量、结构体及函数,因为Cesium的文档中并没有这些类的描述信息,因此这里列出以备查,方便编写自定义Shader时使用。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGIS.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值