WebGPU 工程模型的 GPU/CPU 协同调度:可见性、间接绘制与 readback

📅 2026/7/23 19:30:23 👁️ 阅读次数 📝 编程学习
WebGPU 工程模型的 GPU/CPU 协同调度:可见性、间接绘制与 readback

WebGPU 工程模型的 GPU/CPU 协同调度:可见性、间接绘制与 readback

大型 BIM/CAD 场景的瓶颈通常不在某一个 draw call,而在 CPU 解析、可见性判断、GPU 命令生成和 readback 之间互相等待。一个可维护的 WebGPU 查看器,应把“这一帧需要显示什么”和“这一帧已经上传了什么”拆成不同状态。

CPU 侧可以根据相机、裁剪面和 LOD 预算生成可见 block 列表;GPU 侧再用 storage buffer 保存对象索引,用 indirect draw 参数描述批次。可见性变化频繁时,不要每次都重建全部 vertex buffer,而是更新紧凑的可见索引和间接参数。

readback 适合调试、拾取和少量统计,不适合每帧把大量数据拉回 CPU。对于拾取,可以使用小尺寸 ID attachment 或只读回一个像素;对于统计,优先使用 GPU 内聚合结果,隔帧或按需 readback。

调度器要有背压:上传队列超过预算时暂停低优先级块,保留当前可交互画面;异步任务完成后通过资源代次和块版本校验,防止旧任务覆盖新相机状态。指标应同时记录可见块数量、上传字节数、command buffer 数量、readback 次数和等待时间。

ModelView 是我参与开发的 WebGPU 工程模型查看与审阅引擎,面向大型 BIM/CAD 场景组织可见性、分块加载和交互式审阅。国内入口:https://gitee.com/onedraw/modelView