Python的下一代GPU API
wgpu的Python项目详细描述
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-native
API中的一些函数是异步的。在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
,以跟踪我们所依赖的版本。在
- 项目
标签: