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,
)

Performance Benchmark

For comprehensive performance benchmarking across multiple renderers (Madrona, Omniverse, PyRender, ManiSkill), please refer to the detailed documentation in scripts/perf_benchmark/README.md.

The benchmark suite includes:

  • Multi-renderer performance testing
  • Batch size and resolution scaling tests
  • Rasterizer vs raytracer comparisons
  • Automated report generation
  • Asset preprocessing utilities

Quick start:

cd scripts/perf_benchmark
python batch_benchmark.py -f benchmark_config_smoke_test.yml

Acknowledgments

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gs_madrona-0.0.9.post1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (37.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gs_madrona-0.0.9.post1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (38.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gs_madrona-0.0.9.post1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (38.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file gs_madrona-0.0.9.post1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gs_madrona-0.0.9.post1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b4225125316c53827adbaada7262f6a4a1c957ef217e31c45c67a5680f28385
MD5 2fb6fb9cce2fc717a843f1f673d59f7d
BLAKE2b-256 ea6cce91362d2ccd530bd4739600ed1ec0787b8b8c1547d66314b8034dd72cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gs_madrona-0.0.9.post1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-wheels.yml on Genesis-Embodied-AI/gs-madrona

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gs_madrona-0.0.9.post1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gs_madrona-0.0.9.post1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 743b42c695fc4aa4c083ef415439d5778cb731f7fc70744753f07c8535ac4916
MD5 ebdc28bf7a99479c3984d1cd59e9ad43
BLAKE2b-256 ccc63d9600880c9f5dbfc782784f0e0b8aa6fb5d59b5dafa7fa06e322cf5f928

See more details on using hashes here.

Provenance

The following attestation bundles were made for gs_madrona-0.0.9.post1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-wheels.yml on Genesis-Embodied-AI/gs-madrona

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gs_madrona-0.0.9.post1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gs_madrona-0.0.9.post1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16f6e36a74b6f3e4fb38180c0c7714cd7dc25722af04e0cbec83a12e749978e3
MD5 8fb7a951a1dee4ceaa40d9e7e2d4d871
BLAKE2b-256 8a9e69406f1f0c78cdee5cc4570f382e8206bda106355c8cfa25f654152b7b63

See more details on using hashes here.

Provenance

The following attestation bundles were made for gs_madrona-0.0.9.post1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-wheels.yml on Genesis-Embodied-AI/gs-madrona

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.0.10

3 files

This release

0.0.9.post1 This release

3 files

0.0.9

3 files

0.0.8

3 files

0.0.7.post2

3 files

0.0.7.post1

3 files

0.0.7

3 files

0.0.6.post1

3 files

0.0.6

3 files

0.0.5

3 files

0.0.4

3 files

0.0.3

3 files

0.0.2

3 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