Python的下一代GPU API

wgpu的Python项目详细描述


CIDocumentation Status

wgpu py公司

Python的下一代GPU API

简介

简而言之,这是一个Python库包装wgpu-native 并使用类似于WebGPU spec的Pythonic API公开它。在

openglapi很旧,显示出它的裂缝。新的API就像Vulkan, Metal和DX12提供了一种控制GPU的现代方法,但是这些API 对于一般用途来说太低了。WebGPU API遵循相同的概念,但是 更简单(更高层次)的拼写。Pythonwgpu库带来了 WebGPU API到Python。在

要了解这个API是什么样子,请看一下triangle.py和另一个{a5}。在

状态

wgpu API尚未解决,请小心使用!

  • 关于WebGPU规范的报道已经接近尾声。在
  • API的测试覆盖率为100%。在
  • 支持Windows、Linux和MacOS。在
  • 在GPU规范确定之前 可能会改变,因此我们的API也可能会改变。升级时请检查changelog!在

安装

pip install wgpu
pip install pyshader  # optional - our examples use this

该库附带了用于Windows、MacOS和Linux的Rust二进制文件。如果你想用 作为自定义生成,您可以设置环境变量WGPU_LIB_PATH。在

平台要求

在引擎盖下,wgpu运行在Vulkan或Metal上,最终也运行在DX12或OpenGL上。在

在Windows10上,一切都应该正常。在旧版本的Windows上,您可能需要 安装Vulkan驱动程序(或等待DX12后端变得更加成熟)。在

在Linux上,最好安装GPU的专有驱动程序 (如果您有专用的GPU)。您可能需要apt install mesa-vulkan-drivers。 Wayland目前只适用于GLFW画布(并且不稳定)。在

在MacOS上,你需要至少10.13(高Sierra)才能得到Vulkan的支持。在

使用

另请参见online documentation。在

完整的API可通过主命名空间访问:

^{pr2}$

但要使用它,您需要先选择一个后端。你可以通过导入来实现。 当前只有一个后端:

importwgpu.backend.rs

要渲染到屏幕,可以使用各种GUI工具箱:

# GLFW is a great lightweight windowing toolkit. Install with `pip install glfw`fromwgpu.gui.glfwimportWgpuCanvas# Visualizations can be embedded as a widget in a Qt application.# Import PySide2, PyQt5, PySide or PyQt4 before running the line below.# The code will detect and use the library that is imported.fromwgpu.gui.qtimportWgpuCanvas

原始的wgpu-nativeAPI中的一些函数是异步的。在Python API中, 默认的函数都是sync(blocking),使事情更易于通用。 这些函数的异步版本可用,因此wgpu也可以工作 对Asyncio或Trio来说。在

Web支持

我们正在考虑将来对编译的支持(Python) 通过PScript和Flexx可视化到web上。我们尽量保持这种状态 只要不太碍事就可以选择。没有承诺。在

许可证

此代码是根据2条BSD许可证分发的。在

开发商

  • 克隆回购。在
  • 使用pip install -r dev-requirements.txt安装devtools(您可以将pip替换为pipenv以安装到virtualenv)。在
  • 通过运行python setup.py develop以可编辑模式安装wgpu py,这也将安装我们唯一的运行时依赖项cffi
  • 运行python download-wgpu-native.py下载上游wgpu本机二进制文件。
    • 或者将WGPU_LIB_PATH环境变量指向自定义生成。在
  • 使用black .应用自动格式化。在
  • 使用flake8 .检查薄片错误。在
  • 使用pytest .运行测试。在

更改上游wgpu本机版本

  • 使用python download-wgpu-native.py --help的可选参数来下载上游wgpu本机二进制文件的不同版本。在
  • 脚本将更新文件wgpu/resources/wgpu_native-version,以跟踪我们所依赖的版本。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何显示因用户而异的SQLite存储数据?   转换java。sql。将映射传递给Jackon的valueToTree方法时StringNode的时间戳   从java中的列表json获取值   unicode Java字符存储在什么编码中?   java如何让Spring数据存储库中的默认方法命中缓存?   java使用readClassDescriptor()和resolveClass()来允许序列化版本控制   数组通过另一个矩阵的一部分填充矩阵   如果包含使用正则表达式的字符串,则替换父XML标记的java   java清除SharedReference中的单个变量   java将变量值从一个jsp页面传输到另一个jsp页面   java JDBC+SQLite:DriveManager不加载所需的驱动程序   相同源代码的java Kotlin构建生成不同的二进制文件   Java中的元组枚举