Android Jetpack WebGPU 库为 WebGPU 标准提供惯用的 Kotlin 绑定,可在 Android 应用中实现高性能的现代 3D 图形和计算功能。
WebGPU 是 WebGL 的后继产品,也是 OpenGL 的精神后代,从头开始构建,旨在反映现代 GPU 的工作方式,并以跨平台、安全且符合人体工程学的方式公开 GPU 功能。
为什么选择 WebGPU?
- 简化了易用性:虽然 Vulkan 是 Android 上的主要底层图形 API。WebGPU 提供了一种现代的高级 API,与 Vulkan 相比,它更易于使用,并且冗余程度也大大降低。
- 批处理和序列化 WebGPU 会将多条命令记录到命令缓冲区中,这是其旨在最大限度减少协议冗余的设计的一部分。这样还可以最大限度地减少在使用 Kotlin 绑定时调用外部方法的需要。
- 通用支持:WebGPU 着色器代码 (WGSL) 可直接在各个平台(包括 Web)的 WebGPU 实现之间共享。
- 优化计算:计算任务和图形任务之间实现无缝的无复制缓冲区共享,与旧版 API 相比,可提升性能并简化开发。
此库的适用对象
此库专为构建需要直接访问 GPU 的高性能应用而设计:
- 图片和视频处理滤镜
- 数据直观显示
- 机器学习推理
- 游戏和模拟
非目标:这是一个图形 API,而不是游戏引擎。您负责管理自己的渲染循环、相机矩阵和场景图。
核心 WebGPU 概念
了解基本的 WebGPU 对象及其交互方式对于 WebGPU 开发至关重要。
概念 |
说明 |
实例 |
WebGPU 的入口点,用于授予对适配器和 Surface 的访问权限 |
适配器 |
表示设备上的特定 GPU |
设备 |
您与创建资源的 GPU 之间的逻辑连接 |
队列 |
用于向 GPU 提交命令的机制 |
着色器模块 |
您的 GPU 代码,以 WebGPU 着色语言 (WGSL) 编写 |
流水线 |
描述任务的整个 GPU 状态(着色器、混合)的对象 |
绑定组 |
将数据缓冲区(例如纹理)与着色器相关联 |
命令编码器 |
用于将一系列 GPU 命令构建到命令缓冲区中的对象 |