Skip to main content

Contributing to RenderScope

RenderScope is open source and community-driven. Whether you want to add a renderer, submit benchmarks, fix a bug, or improve the code — here's how to get started.

Adding a New Renderer

Each renderer in the RenderScope catalog is a single JSON file in /data/renderers/. Contributing a new renderer means copying a template, filling in the fields, validating, and submitting a pull request. No code changes needed.

1

Fork & Clone

Fork the RenderScope repository on GitHub, then clone your fork locally.

git clone https://github.com/YOUR-USERNAME/renderscope.git
cd renderscope
2

Copy the Template

Copy _template.json and rename it to your renderer's slug (lowercase, hyphens).

cp data/renderers/_template.json data/renderers/your-renderer.json
3

Fill in the Data

Open the file and fill in the fields. Here's a condensed example showing the most important fields:

{
  "id": "your-renderer",
  "name": "Your Renderer",
  "version": "1.0.0",
  "description": "A one-line description of what this renderer does.",
  "technique": ["path_tracing"],
  "language": "C++",
  "license": "MIT",
  "platforms": ["linux", "macos", "windows"],
  "repository": "https://github.com/org/repo",
  "homepage": "https://example.com",
  "features": {
    "global_illumination": true,
    "gpu_acceleration": false,
    "python_api": true
  },
  "strengths": [
    "Physically accurate spectral rendering",
    "Well-documented codebase"
  ],
  "limitations": [
    "No GPU acceleration",
    "Limited scene format support"
  ],
  "best_for": "Research and educational use"
}

See the Data Schema documentation for the complete field reference. Fields like strengths and limitations are where the most valuable editorial content goes — be honest and specific.

4

Validate

Run the validation script to check your JSON against the schema. CI will also run this on your pull request.

python scripts/validate_data.py
5

Submit a Pull Request

Create a branch, commit your file, push, and open a PR on GitHub. The PR template will guide you through the checklist.

git checkout -b add-renderer/your-renderer
git add data/renderers/your-renderer.json
git commit -m "data: add Your Renderer profile"
git push origin add-renderer/your-renderer

Not comfortable with Git? You can also open a GitHub Issue using our “New Renderer Request” template, and a maintainer will create the JSON file from your information.

Submitting Benchmark Results

Benchmark results let the community compare renderers on standardized scenes under controlled conditions. Results are more valuable when they come from diverse hardware — your contribution matters.

Prerequisites

  • A renderer installed and working on your system
  • Python 3.10+ installed
  • The RenderScope CLI: pip install renderscope
1

Install the CLI

pip install renderscope
2

Download Benchmark Scenes

renderscope download-scenes
3

Run Benchmarks

# Single scene + selected renderers
renderscope benchmark --scene cornell-box --renderer pbrt mitsuba

# Full suite
renderscope benchmark --scene all --renderer all
4

Review Results

renderscope report results.json --format html --output report.html
5

Submit

Copy the results JSON into data/benchmarks/ and submit a pull request, or open a GitHub Issue with the “Benchmark Submission” template and attach the file.

See the Methodology page for details on how to ensure fair, reproducible results. Close other applications, let the system reach thermal equilibrium, and run multiple iterations.

Reporting Issues

Data corrections — Found wrong information about a renderer? Open a GitHub Issue with the “Bug Report” template, or submit a PR with the corrected JSON.

Website bugs — Broken page, missing image, rendering glitch? Open a GitHub Issue with the “Bug Report” template. Include your browser and OS.

Feature requests — Have an idea for a new feature? Open a GitHub Issue with the “Feature Request” template.

Contributing Code

Development Setup

Web App

cd web
npm install
npm run dev        # Starts at http://localhost:3000

Python Package

cd python
pip install -e ".[dev]"
pytest             # Run tests

npm Component Library

cd packages/renderscope-ui
npm install
npm run build      # Build the library
npm run storybook  # Component playground

Code Style

PackageLinterFormatterType Checker
Web / npmESLintPrettierTypeScript strict mode
PythonRuffRuffmypy (strict)

Testing Requirements

  • Web: Vitest for unit tests, Playwright for E2E
  • Python: pytest with coverage
  • All PRs must pass CI before merging

Pull Request Process

1

Create a feature branch from main

git checkout -b feature/my-change
2

Make your changes and write tests

Keep changes focused. One feature or fix per PR is ideal.

3

Run linting and tests locally

# Web
npm run lint && npm run type-check

# Python
ruff check . && mypy . && pytest
4

Push and open a PR

The PR template will guide you through the checklist. A maintainer will review within a few days.

5

Address feedback and merge

Once approved and CI passes, your contribution will be merged.

Looking for something to work on? Check our issues labeled good first issue on GitHub.