sadaszewski / pygfx

A python render engine running on wgpu.

Home Page:https://pygfx.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CI Documentation Status PyPI version

A python render engine targeting Vulkan/Metal/DX12.

drawing drawing drawing

[User Guide] [Example Gallery] [API Reference]

Installation

pip install -U pygfx glfw

To work correctly, pygfx needs some window to render to. Glfw is one lightweight option, but there are others, too. If you use a different wgpu-compatible window manager or only render offscreen you may choose to omit glfw. Examples of alternatives include: jupyter_rfb (rendering in jupyter), PyQt, PySide, or wx.

In addition there are some platform requirements, see the wgpu docs. In essence, you need modern (enough) graphics drivers, and pip>=20.3.

Usage Example

Note A walkthrough of this example can be found in the guide.

import pygfx as gfx

cube = gfx.Mesh(
    gfx.box_geometry(200, 200, 200),
    gfx.MeshPhongMaterial(color="#336699"),
)

def animate():
    rot = gfx.linalg.Quaternion().set_from_euler(
            gfx.linalg.Euler(0, 0.01)
        )
    cube.rotation.multiply(rot)

if __name__ == "__main__":
    gfx.show(cube, before_render=animate)

drawing

Feature Highlights

Some of pygfx's key features are:

  • SDF based text rendering (example)
  • order-independent transparency (OIT) (example)
  • lights, shadows, and physically based rendering (PBR) (example)
  • event system with built-in picking (example)
  • texture and color mapping supporting 1D, 2D and 3D data (example)

And many more! Check out our feature demos in the docs.

About pygfx

pygfx is a ThreeJS inspired graphics library that uses WGPU (the successor of OpenGL) to provide GPU acceleration to rendering workloads. It is mature enough to serve as a general-purpose rendering engine (Yes, you can write a game with it.) while being geared towards scientific and medical visualization. Thanks to its low level of abstraction it is flexible and can be adapted to various use-cases. In other words, pygfx emphasizes on hackability and correctness while maintaining the level of performance you would expect from a GPU accelerated library.

License

Pygfx is licensed under the BSD 2-Clause "Simplified" License. This means:

  • ✅ It is free (and open source) forever. 💘
  • ✅ You can use it commercially.
  • ✅ You can distribute it and freely make changes.
  • ❌ You can not hold us accountable for the results of using pygfx.

Contributing

We use a pull request (PR) based workflow similar to many other open-source libraries in the python ecosystem. You can read more about this workflow here; if you have previously contributed to open-source, a lot of this will look familiar already.

Development Install

To get a working dev install of pygfx you can use the following steps:

# Click the Fork button on GitHub and navigate to your fork
git clone <address_of_your_fork>
cd pygfx
# if you use a venv, create and activate it
pip install -e .[dev,docs,examples]
pytest

Testing

The test suite is divided into two parts; unit tests for the core, and unit tests for the examples.

  • pytest -v tests runs the core unit tests.
  • pytest -v examples tests the examples.

About

A python render engine running on wgpu.

https://pygfx.readthedocs.io

License:BSD 2-Clause "Simplified" License


Languages

Language:Python 99.9%Language:HTML 0.1%