Skip to content
/ wpygfx Public
forked from pygfx/pygfx

A fork of pygfx/pygfx for circular & rectangular hollow section geometries

License

Notifications You must be signed in to change notification settings

k8yb8t/wpygfx

 
 

Repository files navigation

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 fork of pygfx/pygfx for circular & rectangular hollow section geometries

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • HTML 0.1%