Cesium 自定义Material 系列 (八)
- 对于电弧效果 我们先定义一下他的interface, 方便使用的人知道他的调用参数
-
export interface PMaterialElec{
-
color?:any,
-
speed?:number
-
}
- 对于电弧我们叫 MaterialElec
```javascript
import { MaterialProperty } from "./MaterialProperty";
const defaultOption: PMaterialElec = {
color: Cesium.Color.AQUA,
speed: 1,
}
//电弧效果
export class MaterialElec extends MaterialProperty {
protected _getType(option: any): string {
return "MaterialElec"
}
constructor(option=defaultOption){
super(MaterialElec.prototype,defaultOption,option);
}
protected getSource(option: any): string {
return `uniform vec4 color;
uniform float speed;
#define pi 3.1415926535
#define PI2RAD 0.01745329252
#define TWO_PI (2. * PI)
-
float rands(float p){
-
return fract(sin(p) * 10000.0);
-
}
-
-
float noise(vec2 p){
-
float time = fract( czm_frameNumber * speed / 1000.0);
-
float t = time / 20000.0;
-
if(t > 1.0) t -= floor(t);
-
return rands(p.x * 14. + p.y * sin(t) * 0.5);
-
}
-
-
vec2 sw(vec2 p){
-
return vec2(floor(p.x), floor(p.y));
-
}
-
-
vec2 se(vec2 p){
-
return vec2(ceil(p.x), floor(p.y));
-
}
-
-
vec2 nw(vec2 p){
-
return vec2(floor(p.x), ceil(p.y));
-
}
-
-
vec2 ne(vec2 p){
-
return vec2(ceil(p.x), ceil(p.y));
-
}
-
-
float smoothNoise(vec2 p){
-
vec2 inter = smoothstep(0.0, 1.0, fract(p));
-
float s = mix(noise(sw(p)), noise(se(p)), inter.x);
-
float n = mix(noise(nw(p)), noise(ne(p)), inter.x);
-
return mix(s, n, inter.y);
-
}
更多参考 https://xiaozhuanlan.com/topic/1809347256
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下