2 个版本
| 0.1.1 | 2020 年 4 月 9 日 |
|---|---|
| 0.1.0 | 2020 年 4 月 9 日 |
#377 在 渲染 中
每月 24 次下载
120KB
1.5K SLoC
lib.rs:
emu_core 是一个作为 WebGPU 之上的计算抽象库。尽管它的名字是 WebGPU,但 WebGPU 允许 Emu 支持大多数平台(通过 Vulkan、Metal、DX)并最终甚至可以支持 Web(通过 WebAssembly - 支持此功能的 API 变化应该是最小的)。
有关如何将 Emu 添加到 Rust 项目的说明,请参阅 crates.io 上的 crate 以及 示例,了解如何使用 Emu。以下链接提供了 Emu 的构建块文档。
- 请参阅
Device和pool以获取直接抽象 WebGPU 的最低级核心原语。 - 请参阅
DeviceBox、AsDeviceBoxed和IntoDeviceBoxed以了解 GPU 上的数据装箱。 - 请参阅
SpirvBuilder,Glsl,GlslKernel,了解用于编写计算内核的简单源语言 - 请参阅
compile,了解将源语言编译为SpirvOrFinished,然后完成到DeviceFnMut - 请参阅
spawn,了解在 GPU 上生成线程并启动编译后的内核(DeviceFnMut) - 请参阅
pool的pool/select/take,了解管理全局设备池 - 请参阅
assert_device_pool_initialized
请注意,Device 和 pool 是 Emu 的最低级构建模块,因此您可以使用 Device 和 pool 或 Emu 的其余部分。然而,在实际应用中,您可能两者都会用到。您将使用 Emu 的其余部分来构建大部分应用程序/库,然后在需要与底层 WebGPU 数据(可能是要混合图形与计算)结构或更精细地控制某些参数时,才降级到低级的 Device-和-pool 使用。
关于功能,默认情况下关闭了 1 个功能 - glsl-compile。如果您想使用 Glsl 或 GlslKernel,应 启用此功能。此功能有一个重要的依赖项 - shaderc。在未来,当基于 Rust 的 GLSL-to-SPIR-V 编译器完成时(有相关工作正在进行),将有一个更简单的纯 Rust 依赖项,但在此之前,您应遵循 此处 的步骤,以确保您要针对的平台将具有 shaderc。当然,如果您真的不想使用 shaderc,您始终可以在编译时 编译您的代码为 SPIR-V,然后使用 SPIR-V 作为 Emu 的输入。
此外,以下是一些可能有助于使用 Emu 的一些基本指南。
- 如何使用 CUDA - 这解释了在三维线程空间上启动内核的概念,Emu 和 CUDA 都有此共享
- 如何编写 GLSL 计算着色器 - 这解释了 SPIR-V 的一些特定内容,Emu 使用它作为输入
依赖项
~6–14MB
~269K SLoC