3个版本

0.1.2 2022年3月8日
0.1.1 2021年11月28日
0.1.0 2021年11月16日

图形API中排名第343

MIT/Apache

165KB
3.5K SLoC

Logo

抽象GPU项目

最简单、最直观的GPU库
探索示例


agpu 是一个针对 wgpu 库的抽象库,旨在为小型应用程序和大型引擎 alike 提供GPU框架,同时最大限度地减少样板代码和提高可读性。

快速入门

要开始编写将渲染到屏幕的程序

fn main() -> Result<(), agpu::BoxError> {
    let program = agpu::GpuProgram::builder().build()?;

    let example_pipeline = program.gpu.create_pipeline().build();

    program.run_draw(move |mut frame| {
        frame
            .render_pass("Example render pass")
            .with_pipeline(&example_pipeline)
            .begin()
            .draw_triangle();
    })
}

更多示例在 examples 文件夹中。

目标

  • 最简单的GPU库
  • 不损失底层库的API功能
  • 零(理想)运行时成本

非目标

  • 托管渲染引擎
  • 严格遵循WebGPU标准

状态

agpu 处于非常早期的开发阶段。它努力与底层 wgpu 库一样稳定,但某些功能可能不完整或缺失。

当前目标是使用最少的代码复制所有 wgpu 示例。

风格

使用构建器风格的API

  • 避免样板代码和结构地狱
  • 允许用户选择功能
  • 使用合理的默认值,默认构造函数是一行代码

Deref 被滥用以向 wgpu 类型添加冗余/便利函数。这目前比添加函数到底层类型的实用特性更受欢迎,以避免需要包含各种未直接使用的特性。

集成

一些集成作为此crate的默认功能提供

  • winit 用于窗口(WIP)
  • egui 用于GUI(WIP)

您可以通过放弃默认功能来禁用它们,以及使用此库创建自己的集成。


许可证

根据您的选择,在 Apache License,版本2.0MIT许可证 下授权。
除非您明确说明,否则您根据Apache-2.0许可证定义的,有意提交以包含在本crate中的任何贡献,都将采用上述双授权方式,不附加任何其他条款或条件。

依赖项

~15–28MB
~427K SLoC