Skip to content

Latest commit

 

History

History
141 lines (99 loc) · 8.82 KB

File metadata and controls

141 lines (99 loc) · 8.82 KB

Developer Documentation

Internal reference for contributors to the NVIDIA RTX Remix Toolkit.


Quick Start

Prerequisites

  • Windows 10 or 11
  • Git
  • GPU with RTX support
  • ~50 GB free disk space

For full hardware and software requirements, see Technical Requirements.

Get the Source Code

git clone https://github.com/NVIDIAGameWorks/toolkit-remix.git
cd toolkit-remix

Build the Project

.\build.bat

The first build downloads all dependencies (Kit SDK, Python 3.10, tools) automatically via packman. Subsequent builds are incremental. See Tech Stack Overview for how the build pipeline works.

Run the App

.\_build\windows-x86_64\release\lightspeed.app.trex_dev.bat

Developer mode — includes verbose logging and extension hot-reload. See Repo Tools → Run for all launch options and flags.

Format Your Code

.\format_code.bat

Auto-formats all Python files with ruff (style + import sorting) and C++ files with clang-format. Run before every commit to avoid formatting-only diffs in review. See Repo Tools → Root Scripts for all available scripts.

Lint Your Code

.\lint_code.bat all

Runs ruff checks with auto-fix. Catches common errors, unused imports, and style violations that formatting alone doesn't cover. Both format and lint can be automated with pre-commit hooks — see Repo Tools → Root Scripts.

Run Tests

.\_build\windows-x86_64\release\tests-<extension.name>.bat -n default

Runs user-written tests for a single extension. See Running Tests for filtering, coverage, and troubleshooting.

Build the Documentation

.\build_docs.bat

Builds the Sphinx documentation locally. Output lands in _build/docs/. Useful for previewing doc changes before submitting. See Repo Tools → Root Scripts for all available scripts.

Submit a Pull Request

Before opening a PR, check every item in the Review Checklist: branch naming ( dev/<user>/<feature>), version bumps for modified extensions, changelog entries, and ≥75% test coverage on new code.

External Contributors

Fork this repository, create a development branch, and submit a Pull Request against main. An automated bot will prompt you to sign the Contributor License Agreement via your PR's comment page.


Table of Contents

Getting Started

Page Description
Tech Stack Overview How repoman, packman, Kit SDK, premake, and Python fit together. The build pipeline from build.bat to a running app.
Git Workflow Branch naming, commit format, and merge request process.
Running Tests Test commands, filtering with -f, troubleshooting (registry sync, timeouts), and coverage reports.
Review Checklist Pre-submission checklist: action undoability, USD context compatibility, dependency management, docstrings, version bumping, and changelog updates.
Learning Resources Kit SDK, USD, and Omniverse documentation and video tutorials.

Architecture & Design

Page Description
Code Architecture USD contexts, extension lifecycle, design principles, event subscriptions, and system-level patterns (Commands, Factory/Plugin, Settings, Job Queue, Pip Archive).
Extension Guide Extension naming, dependency direction, namespaces, directory layout, extension.toml reference, premake5.lua boilerplate, Python stubs, and docs/README.md structure.

Code Quality Standards

Page Description
Code Style Python 3.10, max 120 chars, black + isort + ruff, naming conventions, no lazy imports, __all__, license headers, and Google-style docstrings.
Engineering Standards Fix root causes, never paper over. Anti-patterns table and smell tests for broken async, swallowed exceptions, and design problems.
Testing Standards 75% coverage requirement, plan-before-code, unit vs E2E, Arrange/Act/Assert, test naming, and anti-patterns.

Implementation Patterns

Page Description
Building UI Components omni.ui layout guidelines: alignment, spacing, dimensions, and Remix stylesheet conventions.
Implementing Commands Undoable user actions with omni.kit.commands.Command: do()/undo(), grouping, dispatch, and testing.
Implementing Service Endpoints REST endpoints with ServiceBase and omni.flux.service.factory: routing, registration, and testing.
Implementing Stage Manager Plugins The Stage Manager plugin system: 8 plugin types, schema config, and Flux/Lightspeed layering.
Implementing Ingestion Pipeline Plugins Validation framework: 4 plugin types, execution flow, DataFlow, and mass validation.
Adding Pip Package Dependencies Third-party packages via omni.flux.pip_archive: OSRB requirement, pip_flux.toml, and post-merge steps.

Development Tools

Page Description
Repo Tools All root-level scripts: build, run, format, lint, build docs, pre-commit hooks, repo subcommands, and CLI launchers.
VSCode / Cursor Setup Workspace setup, recommended extensions, tasks, debug config, and agent commands.
PyCharm Setup Python path, run profiles, scope config, and external tools for format/lint.
Debugging Attaching debuggers to Kit: debugpy (VSCode) and PyCharm Professional. The break flag trick for tests.
Profiling Performance profiling with Tracy: app-start and on-demand (F5).