18个版本
0.3.5 | 2024年4月28日 |
---|---|
0.3.4 | 2024年1月28日 |
0.3.3 | 2023年10月1日 |
0.3.2 | 2023年9月29日 |
0.1.8 | 2023年5月24日 |
#85 in 图形API
7MB
8K SLoC
Mepeyew
计算机图形学已经发展到不能直接在屏幕上绘制像素的程度了。相反,为了高效利用硬件,我们使用渲染API进行绘制。每个平台都有自己的首选API(Windows上的DirectX、MacOS上的Metal等),这些平台都有自己独特的特点和技巧。
用Rust编写,mepeyew
旨在将这些问题隐藏在整洁的包装中,同时尽可能赋予你最大的权力!mepeyew
封装了多个图形API,如wgpu
,但有一个非常明确的API,类似于Vulkan。
Hello Triangle | 轮廓立方体 | PBR球体 |
---|---|---|
平台支持
你可以在Windows、MacOS、Linux和Web上运行mepeyew
。目前,我们支持Vulkan和WebGpu。在着色语言方面,我们支持Glsl、Spirv和Wgsl,均借助naga实现。
入门指南
将以下内容添加到你的Cargo.toml
mepeyew = "0.3"
这将启用mepeyew
的以下功能
vulkan
webgpu
surface_extension
naga_translation
如果你不打算使用这些功能,禁用它们将减少你的依赖项数量。
要开始使用mepeyew
,请查看GitHub上的示例。它们假设你已经了解图形编程。
平台相关复杂性
不幸的是,并不是所有内容都可以完全抽象化!请在继续之前阅读文档!
在MacOS上使用
MacOS不支持Vulkan,因此你需要从这里安装LunarG的Vulkan SDK。然后,你需要以下导出才能正确编译。
VULKAN_SDK=$HOME/VulkanSDK/<version>/macOS
DYLD_FALLBACK_LIBRARY_PATH=$VULKAN_SDK/lib
VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json
VK_LAYER_PATH=$VULKAN_SDK/share/vulkan/explicit_layer.d
在Web上使用
务必查看有关
WebGpuInit
和WebGpuInitFromWindow
的文档。
设置起来最容易的方法是在你的 Cargo.toml
中创建一个额外的工作空间成员。
[workspace]
members = [
"run_wasm"
]
然后,按照本仓库中所示,准确实现 run_wasm
。这一点非常重要,因为这个项目依赖于我的 run_wasm
分支,而不是原始的 crate。
当然,你可以使用 wasm-pack
、trunk
或其他你想要的任何工具。
路线图
这个项目基本完成,但仍然可能存在错误和变更。API 设计为稳定,但我当然不能保证一切。
- 基本统一变量
- 纹理
- 着色器附加组件
- 文档
- v0.1 版本发布!
- WGSL 和 Naga
- WebGPU
- 深度缓冲区
- 模板缓冲区
- MSAA
- 更多附件格式
- 动态视口 + 剪裁
- 动态统一变量
- 着色器存储缓冲区对象
- 计算
- 混合和剔除
- 米普图和 LOD
- 实例化
- 替换着色器统一频率
- 更多文档
- (Debug, Clone, Copy, Hash, PartialEq, Eq) 化一切
- v0.2 版本发布!
- 立方体贴图
- 异步 / 等待
- WebGPU 调整大小
- 删除
prelude
- v0.3 版本发布!
依赖项
~0–12MB
~139K SLoC