Skip to main content

gs-madrona — A Fork of Madrona and Madrona-MJX for Genesis

It started as a fork of Madrona for the core C++ implementation, created in 2025. Since the fork, substantial modifications have been made to adapt the codebase for Genesis simulator, including:

  • Integrating Python interface based on Madrona-MJX and designed for Genesis.
  • Adding new features to support the continuous development. For more details, please refer to Features Added Since Fork
  • Removing features not used by Genesis. For more details, please refer to Removed Features

Due to the extent of these changes, gs-madrona has diverged significantly from its origins. It is now a fully independent project with no intention of maintaining backward compatibility. Our focus is solely on evolving gs-madrona into a robust and efficient batch renderer for Genesis.

Scope and Objectives

gs-madrona aims to provide a general-purpose high-throughput batch renderer that supports both rasterization and single-bounce ray-tracing pipelines.

It is a renderer used in Genesis to provide native support of batched processing. With gs-madrona, multiple environments and cameras can be rendered offscreen in parallel, significantly improving performance compared to renderers doing sequential processing.

At present, batch rendering supports only basic materials, lighting, and shadows. However, we aim to expand its capabilities to include more advanced rendering features.

While gs-madrona currently depends on Genesis, we plan to decouple it in the near future to support broader use cases through a more generic interface.

Features Added Since Fork

  • Support for non-square resolutions
  • Shadow rendering in the rasterizer pipeline
  • Anti-aliasing support for rasterizer output
  • Lighting support (rasterizer and ray tracer) using Genesis-defined light sources
  • Unified lighting model between rasterizer and ray tracer
  • Support for spot lights and directional lights with intensity and shadow-casting flags
  • Automatic mipmap generation for all textures
  • CUDA kernel caching with dirty-check rebuild
  • Fixed vertex normal computation in the ray tracer
  • Benchmark scripts comparing Madrona with other batch renderers, including IsaacLab and ManiSkill
  • Support for normal and semantic/instance segmentation output
  • Per-camera dynamic FOV, near/far plane control
  • Light color specification and attenuation based on distance and angle

Removed Features

  • Legacy depth-only rendering via color buffer
  • Batch rendering pipeline based on JAX

Known Limitations

  • Shadows are only cast from the first light with castshadow=true
  • When rendering multiple cameras with different resolutions, the first camera’s resolution is used for the entire batch

Roadmap / Future Plans

gs-madrona will continue evolving to support higher-quality rendering and broader functionality. Upcoming features include:

  • Batch rendering support for cameras with varying resolutions
  • Dynamic light parameters (position, direction, intensity, color, enable/disable)
  • Ambient lighting control (color and intensity)
  • PBR material and texture support
  • Output rendering results to video files

Supported Platforms and Environments

gs-madrona should be compatible with any Linux distribution and Python>=3.10. However, it has been tested only with Ubuntu 22.04 and Ubuntu 24.04 for Python 3.10 and 3.12. The rendering pipeline also depends on CUDA, so an NVIDIA graphics card with CUDA 12.8+ support is required for running it. There is no plan to support Windows OS and Mac OS at the moment.

Performance

FPS comparison of rendering Franka with gs-madrona rasterizer and raytracer

Resolution: 128x128

FPS of gs-madrona rasterizer vs raytracer

FPS of gs-madrona rasterizer vs raytracer

Install (Linux Only)

Pre-requisite

Please first install the latest version of Genesis to date following the official README instructions.

Easy install (x86 only)

Pre-compiled binary wheels for Python>=3.10 are available on PyPI. They can be installed using any Python package manager (e.g. uv or pip):

pip install gs-madrona

Build from source

Please first install CUDA toolkit (>= 12.8) following the official instructions.

git clone --recurse-submodules https://github.com/Genesis-Embodied-AI/gs-madrona.git
cd gs-madrona
pip install --no-build-isolation -Cbuild-dir=build -v -e .

Make sure that the version of torch installed on your system that has been pre-compiled against a version of CUDA Toolkit that is equal or newer than the one available on your system. Otherwise, gs-madrona will crash at import (segmentation fault). Please follow the official instructions.

Testing (Optional)

  1. Clone Genesis Simulator repository if not already done
git clone https://github.com/Genesis-Embodied-AI/Genesis.git
  1. Run the following example script provided with Genesis
python Genesis/examples/rigid/single_franka_batch_render.py

All the generated images will be stored in the current directory under ./image_output.

  1. To use ray tracer, change the use_rasterizer=False in single_franka_batch_render.py
renderer = gs.options.renderers.BatchRenderer(
    use_rasterizer=True,
)

Acknowledgments

The development of gs-madrona is actively supported by Genesis AI.

Metadata

Release files for gs-madrona 0.0.11

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 gs-madrona 0.0.11
File Interpreter ABI Platform
gs_madrona-0.0.11-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
gs_madrona-0.0.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
gs_madrona-0.0.11-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details

Total release size: 113.3 MB

Release files / gs_madrona-0.0.11-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gs_madrona-0.0.11-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 37.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
05480d729fd669d5cc5d10a90ac5c89d106c2831c866a69f581a84b9da28f70e
BLAKE2b-256 checksum
How to use checksums
7b57708e76140dffc1ca3bcf887907bd01f2b866e092d6ee1933384a4acd69e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.8

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 Sep 23, 2026.

Transparency log

Release files / gs_madrona-0.0.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gs_madrona-0.0.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 37.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
81f11414117ec129428adb4145224f2f4b83a67481a0a0ad5a3d4b59e22f49c1
BLAKE2b-256 checksum
How to use checksums
50a684b38cf571f128de84384c6def33f96085492e940c7080f8fbbdf920e942
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.8

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 Sep 23, 2026.

Transparency log

Release files / gs_madrona-0.0.11-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gs_madrona-0.0.11-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 37.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
6a0e20c008d5095405d2b69e17de1ab453caadf53f6a6a187a784bfdcfc7433d
BLAKE2b-256 checksum
How to use checksums
1ce5e9236deb76c57eb30f8e6f2436955d74fa9d888a0b75e3388b3aac6b0768
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.8

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 Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.11 This release

3 release files

0.0.10

3 release files

0.0.9

3 release files

0.0.8

3 release files

0.0.7

3 release files

0.0.6

3 release files

0.0.5

3 release files

0.0.4

3 release files

0.0.3

3 release files

0.0.2

3 release files

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