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