23 个版本 (8 个破坏性更新)

使用旧Rust 2015

0.11.0 2018年10月26日
0.9.0 2018年3月14日
0.7.2 2017年10月9日
0.5.6 2017年7月27日
0.3.2 2017年2月2日

#vulkan-api 中排名 9

Download history 146/week @ 2023-10-17 171/week @ 2023-10-24 161/week @ 2023-10-31 173/week @ 2023-11-07 111/week @ 2023-11-14 189/week @ 2023-11-21 181/week @ 2023-11-28 121/week @ 2023-12-05 160/week @ 2023-12-12 151/week @ 2023-12-19 157/week @ 2023-12-26 75/week @ 2024-01-02 156/week @ 2024-01-09 171/week @ 2024-01-16 92/week @ 2024-01-23 123/week @ 2024-01-30

每月下载 560
7 包中使用(5 个直接使用)

MIT/Apache

2KB

Vulkano

Build Status Discord Website/guide
vulkano crates.io vulkano-shaders crates.io vulkano-util crates.io vulkano-win crates.io
vulkano docs vulkano-shaders docs vulkano-util docs vulkano-win docs

Vulkano 是围绕 Vulkan 图形API 的 Rust 封装。它遵循 Rust 哲学,即只要你不使用不安全代码,你就不会触发任何未定义的行为。在 Vulkan 的情况下,这意味着非不安全代码应该始终符合有效API的使用。

Vulkano 做什么?

  • 提供了一组类似低级的 Vulkan API。它不会隐藏它的操作,但提供了一些舒适类型。
  • 计划防止所有无效的API使用,即使是那些最隐晦的。Vulkano 的目的不仅仅是让你画一个茶壶,而是要覆盖 Vulkan 的所有可能使用,并检测所有可能的问题,以便编写健壮的程序。通过编译时检查和运行时检查防止无效的API使用。
  • 可以为您处理 GPU 侧的同步(除非您选择自己处理),因为 Vulkan 的这一方面既令人烦恼又容易出错。自动检测提交之间的依赖关系,并自动管理信号量。通过不安全特质的实现可以自定义库的行为。
  • 试图便于使用。没有人会使用需要您为每次操作浏览文档数小时的库。

比较

与其他在 Rust 生态系统中的知名图形API进行比较。

名称 开源时间 API级别 显著功能
Vulkano 2016年3月 高级 Rust API 封装 Vulkan API。 类型安全的编译时着色器。在 Rust 代码中与 glsl 和 spir-v 着色器代码类型透明互操作。为着色器的 Layout 自动生成类型。
Wgpu 2019年5月 具有多个后端的 Rust 高级 API。 支持多个后端:Vulkan、Metal、DirectX、WebGPU 和其他。遵循 WebGPU 规范。具有异步/等待 API。
Miniquad 2020年3月 基于多个后端的高级简约Rust API。 相对简约的API,非常适合小型到中型图形项目。支持多个后端,包括浏览器目标。
Sierra 2021年3月 用于Vulkan/Metal API的高级Rust API。 在Rust代码中通过宏系统构建布局、描述符和着色器类型。基于Erupt构建。支持光线追踪管线。
Glium 2014年10月 封装OpenGL的高级Rust API 仅OpenGL。
Ash 2016年8月 Vulkan的低级API。 不安全的Vulkan API绑定。
Erupt 2020年4月 Vulkan的低级API。 不安全的Vulkan API绑定。

请注意,截至当前日期,生态系统中已知的所有项目(包括Vulkano)均未达到稳定版本和最终设计目标,它们的API经常以可破坏的方式频繁更改,也可能存在错误和不完整的特性。

然而,上述大多数项目都已经建立了明确的结构,所有功能破坏性更改都可能在用户代码中直接修复,并且它们大多数都在维护中。因此,我们可以推荐在第三方代码中使用其中任何一个。选择取决于最终项目的目标和需求,我们建议在 beforehand 考虑它们的实际功能集和API功能。

使用Vulkano的项目

我们最近才开始收集这个列表,如果您能通过贡献(打开PR)到README.md来帮助我们,我们将不胜感激。

项目名称 描述
Basalt 桌面应用程序的GUI框架
Ferret 兼容Doom的游戏引擎
Sandbox 2D像素物理模拟器
Egui Winit Vulkano 将Egui与Vulkano集成
VideowindoW 在底层使用Vulkano以启用异步视频流合成
Korangar 基于Vulkan的Ragnarok Online客户端
Krnl 安全、可移植、高性能计算(GPGPU)内核。
Vera 用Rust编写的动画引擎。

如果您通过将您的项目添加到这个列表来给我们反馈,我们将很乐意帮助您将您的项目与Vulkano的最新更改保持同步。

提前感谢!

文档和资源

要开始,建议使用以下资源

  • 此存储库中的examples文件夹。
  • docs.rs - 完整的Vulkano API文档
  • vulkano.rs上的指南 - 从简单的计算示例(约50行代码)开始,然后发展到渲染三角形和Mandelbrot。该指南目前有些过时。我们计划在未来更新它,但它是一个了解Vulkano API基本构建块的不错起点。
  • Github 问题 - 提出一个话题,提问或报告错误。那里的新话题会定期被维护者和其他社区用户监视。
  • Gitter 聊天 - 另一个提问的地方。然而,目前聊天没有得到定期维护。最好使用Github问题来达到这个目的。

贡献

非常欢迎贡献!请随时提交拉取请求,在问题部分打开问题或主题。

该项目最初由Pierre Krieger(Tomaka)开发,他确立了Vulkano的基本设计目标和代码结构。在此期间,开发由Vulkano社区成员推动。

新的拉取请求通常在每个周末结束时安排进行审查。 已在审查中的较老PR具有比新PR更高的优先级。我们正在努力尽快推进开发,但审查过程有时需要时间,请耐心等待,因为维护者需要时间来仔细检查一切。

如果需要紧急提升某些内容,请在PR或问题的评论中ping当前的Vulkano维护者(@Eliah-Lakhin)。

如果您对特性和函数进行了添加、删除或修改,请在拉取请求描述中指定变更日志条目(而不是直接在变更日志文件中)。它们将在PR合并后立即转移到变更日志中。

每个PR都必须通过测试才能合并到master

小版本发布通常发生在1到3个月之间,具体取决于master中未发布和破坏性更改的增长。

仓库结构

此仓库包含四个库

  • vulkano是主要的。
  • vulkano-shaders提供了用于编译GLSL着色器的shader!宏。
  • vulkano-util提供了一系列实用函数,以简化某些常见操作,例如创建设备和交换链。
  • vulkano-win提供了Vulkano与可以创建渲染窗口的winit库之间的安全链接。

要运行测试,请在仓库根目录下运行cargo test --all。在这样做之前,请确保您的Vulkan驱动程序是最新的。

名人堂

我们很乐意提及一些对项目做出重大贡献的成员

  • Pierre Krieger。初始开发者。 Patreon页面
  • Lucas Kent。维护者。 Patreon页面
  • Austin Johnson。维护者。 Patreon页面
  • Rua。一位活跃的开发者,他投入了大量精力来改进Vulkano,并始终使其保持最新。
  • 您!感谢您的帮助、贡献、改进、错误报告和用户体验,使本项目成为Rust图形API库的主要项目之一!

设置和故障排除

Vulkano使用shaderc-rs进行着色器编译。请参阅shaderc-rs文档,以提供预构建的libshaderc以加快构建时间。

请注意,通常vulkano不需要您安装官方的Vulkan SDK。这不仅仅是针对vulkano的(您不需要SDK来编写使用Vulkan的程序,即使没有vulkano也是如此),但许多人不知道这一点,并安装SDK以为它必不可少。然而,macOS和iOS平台需要对Vulkan进行一些额外的设置,因为它们不是原生支持的。下面有更多详细信息。

除非您提供libshaderc,否则为了使用shaderc-sys crate构建libshaderc,以下工具必须安装并在PATH中可用

  • CMake
  • Ninja是可选的,除非使用MSVC构建。它可能会加快libshaderc的构建时间。
  • Python(与Python 2.x和3.x兼容,在Windows上,可执行文件必须命名为python.exe

这些要求可以通过您喜欢的包管理器或从项目网站上的安装程序进行安装。以下是一些设置方法的示例。

windows-msvc特定设置

  1. rustupdefault stable-x86_64-pc-windows-msvc
  2. 安装Visual Studio 2017 Build Tools。如果您已经使用此工具链,则它可能已经安装。
  3. 安装msys2,按照所有说明操作。
  4. 然后在msys2终端中运行:pacman --noconfirm -Syu mingw-w64-x86_64-cmake mingw-w64-x86_64-python2 mingw-w64-x86_64-ninja
  5. 将msys2 mingw64二进制路径添加到PATH环境变量。

Windows-gnu特定设置

不支持windows-gnu工具链,但您可以从windows-msvc进行交叉编译到windows-gnu。

步骤1和2是为了解决https://github.com/rust-lang/rust/issues/49078,通过使用与rust相同的mingw。

  1. 下载并解压https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/x86_64-6.3.0-release-posix-seh-rt_v5-rev2.7z
  2. 将mingw64\bin的绝对路径添加到您的PATH环境变量中。(此路径需要在msys2路径之前)
  3. 运行以下命令:rustup default stable-x86_64-pc-windows-msvc
  4. 运行以下命令:rustup target install x86_64-pc-windows-gnu
  5. 安装Visual Studio 2017 Build Tools。如果您已经使用此工具链,则它可能已经安装。
  6. 安装msys2,按照所有说明操作。
  7. 然后在msys2终端中运行:pacman --noconfirm -Syu mingw64/mingw-w64-x86_64-pkg-config mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-make mingw-w64-x86_64-python2 mingw-w64-x86_64-ninja
  8. 将msys2 mingw64二进制路径添加到PATH环境变量。
  9. 需要构建项目的任何cargo命令都需要包含--target x86_64-pc-windows-gnu,例如运行:cargo run --target x86_64-pc-windows-gnu

Linux特定设置

使用您的包管理器安装所需的dev-tools和Vulkan驱动程序。

例如在ubuntu上

sudo apt-get install build-essential git python cmake libvulkan-dev vulkan-tools

在基于arch的系统上

sudo pacman -Sy base-devel git python cmake vulkan-devel --noconfirm

macOS和iOS特定设置

Vulkan在macOS和iOS上没有原生支持。然而,存在MoltenVK,这是一个基于Apple的Metal API的开源Vulkan实现。这允许vulkano在macOS和iOS平台上构建和运行。

使用MoltenVK使vulkano运行的最简单方法是安装macOS的Vulkan SDK。LunarG网站上提供了安装说明

在iOS上,vulkano直接链接到MoltenVK框架。除了安装它之外,没有其他要做的。请注意,macOS的Vulkan SDK还包括iOS框架。

许可证

根据您的选择,许可协议为以下之一

贡献

除非您明确声明,否则您有意提交以包含在作品中并由您提交的任何贡献都应按上述方式双许可,不附加任何额外条款或条件。

无运行时依赖项