Skip to main content

rillfacet

A fast 3D viewer for simulations. Feed it plain arrays; get an interactive scene in a native window or in your browser.

rillfacet showcase scene

  • Simple. Meshes, points, curves, volumes and arrows, colored by any quantity you attach.
  • Fast. WebGPU rendering with soft shadows, ambient occlusion and transparency.
  • Everywhere. Python, C++, and a browser client that streams from a running process.
  • Independent. It never depends on a simulator. NumPy and torch tensors (CUDA too) just work.

The name: a rill is a small stream, like the stream of poses and meshes flowing from your simulator. A facet is one flat face of a mesh, or the flat near and far planes that bound what a camera sees.

Python

pip install rillfacet

Start with examples/hello.py: a rippling sheet colored by height, in about 50 lines with no simulator.

A rippling sheet colored by height

Plugging in your own simulator looks like this:

import rillfacet as viz

v = viz.Viewer()
cloth = v.scene.add_mesh("cloth")
cloth.set_geometry(verts, tris)
cloth.add_scalar("speed", viz.ElementKind.Vertex, speed)
cloth.color_source = viz.ColorSource.Quantity
cloth.color_quantity = "speed"
cloth.colormap = "viridis"

def callback():              # runs every frame
    sim.step()
    cloth.set_positions(sim.positions)

v.set_callback(callback)
v.run()

Cloth in the wind

Use Viewer(headless=True) to render offscreen, for screenshots and CI. Your own panels use the familiar imgui API.

Look closer

Switch styles and themes, see through to the wireframe, or slice a volume open to inspect what is inside.

Select vertices, edges, faces or bodies. Measure distances and angles. Drag objects with the mouse. Controls follow Blender.

C++

Link the static library and use the same scene API. The bundled demo needs no simulator:

./build/showcase

In the browser

Stream a live run, or replay saved ones, in any WebGPU browser. The browser renders the same shaders as the native window.

from rillfacet.scene_api import Scene
from rillfacet.web.server import StreamBackend, VizServer

server = VizServer("0.0.0.0", 8080)
backend = StreamBackend(server.stream("live"))
scene = Scene(backend)

if backend.wanted():             # a browser is watching
    backend.commit(scene, time=step)

Open http://<host>:8080/. It suits physical simulation and reinforcement learning alike; the clip below shows robots from a training run.

Robots from a training run in the browser

Requirements

  • Linux x86-64 and Python 3.10 or newer.
  • A Vulkan driver (your GPU's, or Mesa's software one).
  • Optional: ffmpeg to record .mp4 video.

Build from source

./scripts/build_dawn.sh                      # once, about 10 minutes
cmake -S . -B build -G Ninja && cmake --build build
pip install .                                # the Python wheel

You need GCC 13 or newer (or Clang), CMake 3.24 or newer, Ninja and git. Full details, the complete API notes and the controls table are in docs/REFERENCE.md.

License

MIT. Wheels also bundle Dawn, GLFW, Dear ImGui, ImPlot, nanobind and fonts under their own licenses; see THIRD_PARTY_LICENSES.txt.

Metadata

Release files for rillfacet 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for rillfacet 0.1.3
File
rillfacet-0.1.3-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
rillfacet-0.1.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
rillfacet-0.1.3-cp312-abi3-macosx_12_0_arm64.whl CPython 3.12 abi3 macOS 12.0+ ARM64 Details
rillfacet-0.1.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
rillfacet-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
rillfacet-0.1.3-cp311-cp311-macosx_12_0_arm64.whl CPython 3.11 CPython 3.11 macOS 12.0+ ARM64 Details
rillfacet-0.1.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
rillfacet-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
rillfacet-0.1.3-cp310-cp310-macosx_12_0_arm64.whl CPython 3.10 CPython 3.10 macOS 12.0+ ARM64 Details

Total release size: 67.5 MB

Release files / rillfacet-0.1.3-cp312-abi3-win_amd64.whl

Download URL rillfacet-0.1.3-cp312-abi3-win_amd64.whl
Size 6.5 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
64a2e9feb86ba9951f65948df13b60aaba2f659ac39f7e63b466bfdca66c7636
BLAKE2b-256 checksum
How to use checksums
9aa83f1598ec1967c0cad77b83b0a83234bc2d9a8a91df249c39cba18f455d0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL rillfacet-0.1.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 10.8 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
371c6c831aa43310d2112a7001ce94b36b8e5753af23ce44ef57c9ce97793b70
BLAKE2b-256 checksum
How to use checksums
d1355ffb8517ba47c315734529b1ad33d73a49ab28439c636888819272537b41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp312-abi3-macosx_12_0_arm64.whl

Download URL rillfacet-0.1.3-cp312-abi3-macosx_12_0_arm64.whl
Size 5.2 MB
Tags CPython 3.12 abi3 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
c3935306543a71af559784055c1ef199d55d0b157328e3599a67a3eebe2f48fe
BLAKE2b-256 checksum
How to use checksums
03a70986171ebf7b743a0e394ca530d97341150dd73b02f41b9b03cc7762782f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp311-cp311-win_amd64.whl

Download URL rillfacet-0.1.3-cp311-cp311-win_amd64.whl
Size 6.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5503f35f3887034d2d8b02ef629b809c3e7c7f2ca9fd091c278b98f159abed3f
BLAKE2b-256 checksum
How to use checksums
b20b5cd9db1bc24b6e10517599f52bb4f081eb9026fc20050449c20dda72d25b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL rillfacet-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 10.8 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b333f2c4c84df2f1105e4d0146e3c7aae8dd2200a0b6c7ded74c38e8ca0a5f93
BLAKE2b-256 checksum
How to use checksums
7839b7363a7231e43fcae714e544e32660c06f42584f5e3588e2d3c803e8952b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp311-cp311-macosx_12_0_arm64.whl

Download URL rillfacet-0.1.3-cp311-cp311-macosx_12_0_arm64.whl
Size 5.2 MB
Tags CPython 3.11 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
d383ce95e989df6db5849801aee22c8b9d5fb8ffa50fcbb9ebd020011242b208
BLAKE2b-256 checksum
How to use checksums
c1cbb44e23048af08ef87571c36b49d0f95eed08dec88b101906f9f32266c3be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp310-cp310-win_amd64.whl

Download URL rillfacet-0.1.3-cp310-cp310-win_amd64.whl
Size 6.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b6f98683a5980bb307d860adca90ef1d73edaa4d47fbc3d249d2cccdc5e314d7
BLAKE2b-256 checksum
How to use checksums
2f575fe740ca12693daaabe5dc19771556cac331c3c24ab0b884d3451fa7d5b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL rillfacet-0.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 10.8 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fff9da320f2920b3e07c5ce2dc74dc600bddf03fc1587fcd0110ef3407b798ea
BLAKE2b-256 checksum
How to use checksums
adc3bcfc75d61b287399261d27ec5a23e0423391e4f3007e0faac825cc5318e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / rillfacet-0.1.3-cp310-cp310-macosx_12_0_arm64.whl

Download URL rillfacet-0.1.3-cp310-cp310-macosx_12_0_arm64.whl
Size 5.2 MB
Tags CPython 3.10 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
a92589b8e82de4ab8e273b7c16b42b42c674de3fadfa38e73d2e7726c67b87e0
BLAKE2b-256 checksum
How to use checksums
4beed86efe86fc3eb07265f7926cc0ed4a7086099141c65ae6961d1914e677ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for rillfacet 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for rillfacet-0.1.3-cp312-abi3-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page