Cesium 与 Babylon.js 可视化 glsl 特效篇(四十八)
我决定不从Babylonjs 基础来讲了 直接整合cesium与babylonjs可视化来讲
我整合一个类库 后续不断更新中
- npm i @haibalai/cesium-babylonjs
初始化cesium -babylonjs 类库, viewer 是cesium 的viewer对象
- import { BabylonMapManager } from "@haibalai/cesium-babylonjs";
- BabylonMapManager.init(viewer);
添加特效
- import { BabylonMapManager } from "@haibalai/cesium-babylonjs";
- const fragmentShader =
- `
- precision highp float;
- uniform float time; // time
- vec2 resolution = vec2(1.0,1.0);
- varying vec2 vUv;
- vec2 rotateTo(vec2 point, float rad){
- float x = sin(rad) * point.x - cos(rad) * point.y;
- float y = sin(rad) * point.y + cos(rad) * point.x;
- return vec2(x,y);
- }
- floatrand(float co) { return fract(sin(co*(91.3458)) * 47453.5453); }
- floattrail(float r) {
- vec2 p = (vUv - 0.5);
- float t = rand(r) * time;
- vec2 s = rotateTo(p, -t);
- float head = clamp(0.05 - length( p-rotateTo(vec2(0,r),t) ),0.,1.) * 10.;
- float tail = (clamp(0.006 / abs(length(p) - r )-0.1,0.0,2.)) ;
- float tailStrength = clamp(atan(s.x,s.y)-1.5+r,0.,1.);
- return head + tail * tailStrength;
- }
- voidmain(void){
- vec3 destColor = vec3(2, 4, 1);