Cesium三维抗锯齿

1 篇文章 0 订阅

实现Cesium抗锯齿前提条件
1.掌握Cesium离屏渲染并保存帧缓存;
2.掌握Cesium相机变换;
3.掌握Cesium后处理PostProcessStage;
4.掌握Cesium渲染机制render;
图一Cesium原生渲染(无FXAA)

viewer.scene.postProcessStages.fxaa.enabled = false

在这里插入图片描述

图二Cesium-FXAA

viewer.scene.postProcessStages.fxaa.enabled = true

在这里插入图片描述
3.Cesium抗锯齿,显卡:gtx1660,性能:加载同一个glb模型(200M)不开地图与threejs加载同一个模型帧率相同9帧。需要修改源码。
第一步,关闭原始帧渲染。
第二步,修改相机旋转偏移参数。以透视投影相机PerspectiveFrustum为例,修改相机xOffset与yOffset
第三步,初始化独立的帧缓存fbo = new Framebuffer();
第四步,重写整个渲染过程,包括倾斜帧调度,地图切片计算ComputeCommand等,为了提升性能,降低调度时间消耗。
第五步,根据相机偏移离屏绘制并存储在fbo中,根据偏移帧参数累加离屏结果。
第六步。。。
在这里插入图片描述

效果可能看不出来,后面会放比较链接。技术交流q1045372604

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
离屏渲染是一种将图形渲染到与屏幕不直接关联的缓冲区的技术。在Cesium中,离屏渲染可以通过使用WebGL的帧缓冲对象(Framebuffer Object,FBO)来实现。 离屏渲染在Cesium中的应用场景包括: 1. 生成纹理:可以将场景渲染到一个纹理中,然后将该纹理用于其他的图形操作,例如后期处理、投影等。 2. 阴影计算:可以将场景渲染到一个深度纹理中,然后使用该深度纹理来计算阴影效果。 3. 屏幕空间反射(Screen Space Reflection,SSR):可以将场景渲染到一个颜色纹理和一个法线纹理中,然后使用这些纹理来计算屏幕空间反射效果。 具体实现离屏渲染的步骤如下: 1. 创建一个帧缓冲对象(Framebuffer Object,FBO)。 2. 创建一个纹理附件(Texture Attachment),用于存储渲染结果。 3. 将帧缓冲对象绑定到渲染管线中。 4. 渲染场景到帧缓冲对象中的纹理附件。 5. 解绑帧缓冲对象,将渲染结果用于其他的图形操作。 以下是一个使用Cesium进行离屏渲染的示例代码: ```javascript // 创建帧缓冲对象 var framebuffer = new Cesium.Framebuffer({ context: viewer.scene.context, colorTextures: [new Cesium.Texture({ context: viewer.scene.context })], depthTexture: new Cesium.Texture({ context: viewer.scene.context, format: Cesium.PixelFormat.DEPTH_COMPONENT }) }); // 将帧缓冲对象绑定到渲染管线中 viewer.scene.frameState.framebuffer = framebuffer; // 渲染场景到帧缓冲对象中的纹理附件 viewer.scene.render(); // 解绑帧缓冲对象 viewer.scene.frameState.framebuffer = undefined; // 获取渲染结果的纹理 var resultTexture = framebuffer.getColorTexture(0); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值