雾天特效,相对雨、雪来说要简单很多。利用postprogress后处理,可以很简单的实现雾天效果。
实现原理:雾由近及远,其可见度逐渐变弱。即,透明度逐渐减小。也就是随着地物距相机的距离由近到远,Alpha值从0到1的过程。
关键步骤分析:计算窗口中地物距场景相机的距离
根据距离远近,将alpha进行0-1之间插值
将雾颜色与场景纹理混合
前提条件:假设雾气为白色,能见度200米,前方10米内能够看清地物。
关键代码:
export function setFogEffect1(viewer: Cesium.Viewer) {
const fs = `
float getDistance(sampler2D depthTexture, vec2 texCoords)
{
//它用于将从深度纹理中读取到的深度值进行解压缩,以便在着色器中进行深度测试和深度值比较等操作。
//深度纹理通常用于实现阴影效果、深度检测等功能。
//在Cesium中,深度值通常被存储在一个16位的纹理单元中,这个值被压缩成0到1之间的浮点数,以便节省显存空间。
float depth = czm_unpackDepth(texture(depthTexture, texCoords));
//若深度值为0,则返回无穷远
if (depth == 0.0) {
return czm_infinity;
}
//将窗口坐标系(即屏幕坐标系)下的像素坐标转换为相机坐标系下的坐标
vec4 eyeCoordi

最低0.47元/天 解锁文章





