Files
planet/docs/plans/earth-webgl-instancing-satellites-plan.md
2026-04-21 22:49:39 +08:00

1.7 KiB

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

当前卫星系统已经具备:

  • 数据加载
  • 轨迹
  • 选择/锁定
  • 图例
  • 相关区域联动

但当卫星数量持续增加时,渲染层会越来越接近瓶颈。

优先调研并原型验证:

  • 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. 图例、信息卡、相关卫星联动仍然成立