83 lines
1.7 KiB
Markdown
83 lines
1.7 KiB
Markdown
# Earth WebGL Instancing Satellites Plan
|
|
|
|
> Source note: this plan absorbs useful ideas from a sisyphus-created draft formerly stored at `.sisyphus/plans/webgl-instancing-satellites.md`.
|
|
|
|
## Goal
|
|
|
|
把 Earth 卫星渲染从当前方案继续推进到更适合高数量卫星的 instancing 方向,目标是:
|
|
|
|
- 支持更多卫星
|
|
- 降低渲染压力
|
|
- 仍然保留当前数据层和交互层
|
|
|
|
## Why It Matters
|
|
|
|
当前卫星系统已经具备:
|
|
|
|
- 数据加载
|
|
- 轨迹
|
|
- 选择/锁定
|
|
- 图例
|
|
- 相关区域联动
|
|
|
|
但当卫星数量持续增加时,渲染层会越来越接近瓶颈。
|
|
|
|
## Recommended Direction
|
|
|
|
优先调研并原型验证:
|
|
|
|
- `InstancedBufferGeometry + custom shader`
|
|
|
|
而不是一开始就推倒重写成 raw WebGL。
|
|
|
|
原因:
|
|
|
|
- 仍能保留 Three.js 主架构
|
|
- 更容易渐进迁移
|
|
- 比继续堆普通点渲染更有上限
|
|
|
|
## What Should Stay
|
|
|
|
尽量保留这些层:
|
|
|
|
- 卫星数据获取
|
|
- 位置计算
|
|
- 锁定/悬停逻辑
|
|
- legend / info-card / 相关联动
|
|
|
|
主要替换的是:
|
|
|
|
- 卫星点渲染实现
|
|
- 颜色/大小等实例属性更新方式
|
|
|
|
## Phases
|
|
|
|
### Phase 1: Prototype
|
|
|
|
- 用 instancing 做最小原型
|
|
- 先只渲染卫星点
|
|
- 不碰轨迹系统
|
|
|
|
### Phase 2: Integrate
|
|
|
|
- 接入当前 `satellites.js` 数据层
|
|
- 保留当前选择和高亮语义
|
|
|
|
### Phase 3: Tune
|
|
|
|
- 调整可视大小
|
|
- 调整选中高亮方式
|
|
- 评估是否需要分层 LOD
|
|
|
|
## Risks
|
|
|
|
1. 透明度排序更复杂
|
|
2. Shader 调试成本更高
|
|
3. 选中态和 hover 态不能简单复用旧材质逻辑
|
|
|
|
## Acceptance
|
|
|
|
1. 在更高卫星数量下保持可接受帧率
|
|
2. 不破坏现有锁定/高亮语义
|
|
3. 图例、信息卡、相关卫星联动仍然成立
|