乐趣区

关于cesium:Cesium-191-更新日志-MSAA-与原生-Promise-来了

不兼容式更新📣

  • 在下一个版本,也就是 Cesium 1.92,第三方库 when.js 将被原生 Promise API 代替。Cesium.when 将被废除,且于下个版本移除。对于如何降级,请参考下方集体点评,我转载了官网领导文档。
  • 修复了当 Scene 没有渲染时(例如 css 款式设为 none)相机对象的获取射线办法(camera.getPickRay())引发的异样,这个函数会返回 undefined 了。

新增🎉

  • 为 WebGL 2.0 增加 MSAA(多重采样抗锯齿)反对。你能够在创立 Viewer 时传递 msaaSamples 选项,也能够用 Scene.msaaSamples 属性管制。
  • 当初,glTF 模型默认应用 ModelExperimental 架构解决。
  • ModelExpertimental 架构中反对切换反面裁剪。
  • 向 Viewer 和 Scene 类的结构参数中增加 depthPlaneEllipsoidOffset,以解决椭球体立体之下的奇怪渲染问题
  • ModelExperimental 架构中反对了 debugColorTiles
  • ModelExperimental 架构中反对了暗影
  • 在所有的矩阵类中增加了 packArrayunpackArray 办法
  • 为矩阵类增加一些仿射变换帮忙函数

    • Matrix2:setScalesetUniformScalesetRotationgetRotationmultiplyByUniformScale
    • Matrix3:setScalesetUniformScalesetRotationmultiplyByUniformScale
    • Matrix4:setUniformScalesetRotationgetRotationfromRotation
  • AxisAlignedBoundBox 类增加 fromCorners 办法
  • BoundingSphere 类增加 fromTransformation 办法
  • OrientedBoundingBox 类增加 fromTransformationcomputeCOrnerscomputeTransformation 办法
  • Rectangle 类增加 subsection 办法
  • glTF 的版权信息会标注至版权区域
  • 为 3D Tiles 减少一个选项,它能够决定数据集的版权信息是否显示在屏幕上
  • 批改了版权排序规定为呈现的频率

问题修复🔧

  • 修复了应用 ModelExperimental 架构的模型在更新其模型矩阵时不会更新范畴球的谬误
  • 修复了在 Safari 浏览器中 FeatureID 纹理的伪影
  • 修复了应用 ModelExpertimental 架构的不通明模型应用半透明着色器,然而未正确渲染的谬误

集体点评🖊

① MSAA

MSAA 就不用说了,举荐条件不错的机器都开,配合 FXAA 晋升显示成果。

const viewer = new Viewer('cesiumContainer', {msaaSamples: 4 // 1, 2, 4, 8, 默认 1, 越高成果越好, 也越吃性能})
viewer.postProcessStages.fxaa.enabled = true

二者有什么区别?

  • msaa 产生在管线完结前,精确的说是光栅化阶段对片元进行多重采样,输入到渲染缓冲,而后才绘制到屏幕上
  • fxaa 产生在管线完结后的后处理阶段,对渲染的后果进行图像算法解决

MSAA 在 WebGL 2.0 才有,WebGPU 原生就反对。目前 WebGPU 尚不成熟,WebGL 2.0 前阵子才刚刚齐全适配所有支流浏览器,所以 Cesium 对抗锯齿成果的 MSAA 性能反对就比较慢。

② 相机获取射线

获取射线的函数当初返回值类型产生了扭转

const ray = viewer.camera.getPickRay() // Ray 或 undefined

③ ModelExperimental

即试验中的 Model,是对原有 Model 类的架构降级,这是为了适配更弱小的 glTF,以及为下一代 3D Tiles 筹备的。

预计 2022 年这个新架构会转正。

④ 逐步 ES6

仔细的敌人兴许察看到了,源代码曾经把 var 切换至 let/const 申明变量了。在下一个版本(1.92),CesiumJS 有打算地将第三方异步库 when.js 替换为 ES6 原生 Promise 实现。不过,间隔源代码齐全应用 async/await 预计还有一段路要走。

对于迁徙 Cesium.when,官网是这么说的:

  • 移除所有应用了 Cesium.when 的代码
  • Cesium.defer 代替了 when.defer
  • Promise.all 代替了 when.join
  • 在 Promise 链式调用中,catch 代替了 otherwisefinally 代替了 always;如果你用 async/await 而不是 Promise 链,那这里不须要扭转

除此之外,还心愿官网团队实现 ES6 的 class、模板字符串的转换。

退出移动版