Skip to content

Xayah-Graphics/spectra

Repository files navigation

Spectra

Spectra v1.1.0

Windows Arch Linux License

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
Cornell Box Cloth Simulation Instant NGP

Highlights

  • Shared scene model: PBRT files and runtime scene plugins resolve into the same spectra.scene data 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.

Requirements

  • CMake 4.3+
  • C++23 compiler with modules support
  • Vulkan SDK 1.4+
  • CUDA Toolkit 13+
  • NVIDIA OptiX SDK 9+
  • Ninja is recommended

Build

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSPECTRA_OPTIX_PATH=/path/to/OptiX-SDK
cmake --build build --parallel

The main desktop executable target is spectra.

Run

Open an empty workspace:

./build/spectra

Open a PBRT scene or scene plugin directly:

./build/spectra --scene /path/to/scene.pbrt
./build/spectra --scene /path/to/plugin.dll

You 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.

Project Layout

  • 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.

License

Spectra is distributed under the GNU General Public License v2. See LICENSE.

About

Spectra is a modern visualization workspace with a Vulkan based rasterizer and CUDA based pathtracer for graphics research.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages