Spectra is a C++23 graphics research workspace for inspecting static PBRT scenes and live plugin-driven scenes.
It owns one shared spectra.scene workspace and lets multiple renderer backends consume the same active scene.
| Pathtracing Rendering | Physical Simulation | Instant NGP |
|---|---|---|
![]() |
![]() |
![]() |
- Shared scene model: PBRT files and runtime scene plugins resolve into the same
spectra.scenedata model. - Live rasterizer: Vulkan renderer for interactive preview, debug overlays, camera visuals, volumes, point clouds, and scene attachments.
- Path tracer: CUDA/OptiX renderer for path-traced snapshots of the active scene.
- Scene plugins: External dynamic libraries can publish dynamic meshes, cameras, volumes, debug attachments, controls, and live HUD state without including Spectra headers.
- Zero renderer-owned loading: renderers receive the active scene; file/plugin loading stays in the application scene layer.
- CMake 4.3+
- C++23 compiler with modules support
- Vulkan SDK 1.4+
- CUDA Toolkit 13+
- NVIDIA OptiX SDK 9+
- Ninja is recommended
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSPECTRA_OPTIX_PATH=/path/to/OptiX-SDK
cmake --build build --parallelThe main desktop executable target is spectra.
Open an empty workspace:
./build/spectraOpen a PBRT scene or scene plugin directly:
./build/spectra --scene /path/to/scene.pbrt
./build/spectra --scene /path/to/plugin.dllYou can also drag a .pbrt, .pbrt.gz, .dll, or .so into the viewport. Plugin libraries first open their declared
setup form in the Scene panel; after opening, controls stay in the Scene panel and runtime status appears in the
viewport HUD.
scene/: scene model, PBRT import, scene plugin host, control/HUD data.rasterizer/: Vulkan preview renderer and debug visualization.pathtracer/: CUDA/OptiX path tracing backend.spectra.ixx/spectra.cpp: application shell and Vulkan lifecycle core.main.cpp: desktop executable entry point.
Spectra is distributed under the GNU General Public License v2. See LICENSE.



