#graphics #vulkan #web-gpu #image-processing #gamedev #platform

mepeyew

mepeyew - 小巧但功能强大的图形库

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

BSD-2-Clause

7MB
8K SLoC

Mepeyew

Version Badge Docs Badge License Badge Downloads Badge

计算机图形学已经发展到不能直接在屏幕上绘制像素的程度了。相反,为了高效利用硬件,我们使用渲染API进行绘制。每个平台都有自己的首选API(Windows上的DirectX、MacOS上的Metal等),这些平台都有自己独特的特点和技巧。

用Rust编写,mepeyew旨在将这些问题隐藏在整洁的包装中,同时尽可能赋予你最大的权力!mepeyew封装了多个图形API,如wgpu,但有一个非常明确的API,类似于Vulkan。

Hello Triangle 轮廓立方体 PBR球体

平台支持

你可以在Windows、MacOS、Linux和Web上运行mepeyew。目前,我们支持VulkanWebGpu。在着色语言方面,我们支持GlslSpirvWgsl,均借助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上使用

务必查看有关 WebGpuInitWebGpuInitFromWindow 的文档。

设置起来最容易的方法是在你的 Cargo.toml 中创建一个额外的工作空间成员。

[workspace]
members = [
    "run_wasm"
]

然后,按照本仓库中所示,准确实现 run_wasm。这一点非常重要,因为这个项目依赖于我的 run_wasm 分支,而不是原始的 crate。

当然,你可以使用 wasm-packtrunk 或其他你想要的任何工具。

路线图

这个项目基本完成,但仍然可能存在错误和变更。API 设计为稳定,但我当然不能保证一切。

  • 基本统一变量
  • 纹理
  • 着色器附加组件
  • 文档
  • v0.1 版本发布!
  • WGSL 和 Naga
  • WebGPU
  • 深度缓冲区
  • 模板缓冲区
  • MSAA
  • 更多附件格式
  • 动态视口 + 剪裁
  • 动态统一变量
  • 着色器存储缓冲区对象
  • 计算
  • 混合和剔除
  • 米普图和 LOD
  • 实例化
  • 替换着色器统一频率
  • 更多文档
  • (Debug, Clone, Copy, Hash, PartialEq, Eq) 化一切
  • v0.2 版本发布!
  • 立方体贴图
  • 异步 / 等待
  • WebGPU 调整大小
  • 删除 prelude
  • v0.3 版本发布!

依赖项

~0–12MB
~139K SLoC