雷达扫描-使用自定义纹理实现

雷达扫描-使用自定义纹理实现

截图

在这里插入图片描述

着色器代码

#define SMOOTH(r,R) (1.0-smoothstep(R-1.0,R+1.0, r))
#define M_PI 3.1415926535897932384626433832795
float movingLine(vec2 uv, vec2 center, float radius) {
   float theta0 = 90.0 * fract(czm_frameNumber/60.0 * speed) * 4.0;
   vec2 d = uv - center;
   float r = sqrt(dot(d, d));
   if(r < radius) {
     vec2 p = radius * vec2(cos(theta0 * M_PI / 180.0), -sin(theta0 * M_PI / 180.0));
     float l = length(d - p * clamp(dot(d, p) / dot(p, p), 0.0, 1.0));
     d = normalize(d);
     float theta = mod(180.0 * atan(d.y, d.x) / M_PI + theta0, 360.0);
     float gradient = clamp(1.0 - theta / 90.0, 0.0, 1.0);
     return SMOOTH(l, 1.0) + 0.25 * gradient;
   } else
     return 0.0;
   }
 czm_material czm_getMaterial(czm_materialInput materialInput) {
   czm_material material = czm_getDefaultMaterial(materialInput);
   vec2 st = materialInput.st;
   vec2 center = vec2(0.5,0.5);
   float fragValue = movingLine(st, center, 1.0);
   material.alpha = color.a;
   material.emission = fragValue * vec3(color.rgb);
   return material;
}

github中地址

https://github.com/c-lei-en/cesium_special_effect

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值