Skip to content

Remote Multi-GPU Path Tracer built with C++ and CUDA.

Notifications You must be signed in to change notification settings

3DevApps/MRTracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MRTracer

MRTracer is a real-time path tracer that renders scenes remotely on a selected environment and streams the results to a client application running in the browser.

MRTracer utilizes a GPU-based path tracing implementation using CUDA, requiring the remote rendering environment to be equipped with NVIDIA GPUs with CUDA support.

Rendering results are displayed in the client application within the browser. MRTracer supports multi-GPU rendering and allows users to choose from various load-balancing algorithms based on frame splitting to distribute the workload efficiently among devices.


Client Application Overview
Client Application Overview

Architecture

MRTracer consists of three components: the Client Application, Relay Server, and Compute Node.

  • Client Application – Runs in the browser, allowing users to choose rendering parameters and select the scene to be rendered. It displays the rendering results and enables users to move the camera around the scene. Additionally, it provides key metrics to evaluate the performance of the rendering algorithm.

  • Relay Server – Manages connections between Client Application instances and Compute Nodes running in Compute Environments. It initializes the connection to the remote environment selected by the user, starts the Compute Node, and facilitates data transfer between the Compute Node and Client Application, including rendered frames and configuration updates.

  • Compute Node – Runs in a remote Compute Environment, executing rendering algorithms. It manages and distributes the workload across GPUs while also collecting performance metrics.

MRTracer Architecture
MRTracer Architecture

Build and Run

Compute Node:

$ cd ./ComputeNode
$ conan profile detect --force
$ conan install . --build=missing --output-folder=build
$ cmake -S . -B build
$ cmake --build build
$ ./build/mrtracer

Relay Server:

$ npm install
$ npm run dev

Client App:

$ npm install
$ npm run dev

Usage

MRTracer’s parameters can be configured in the Client Application via the left-side panel. The panel is divided into four sections: Load Balancing Parameters, Path Tracing Algorithm Parameters, Scene Parameters, and Miscellaneous Settings.

MRTracer Settings Panel
MRTracer Settings Panel


The Render Statistics Panel on the right side displays real-time metrics essential for evaluating the quality of the rendering process. By default, the panel shows a chart with the FPS (frames per second) metric. Users can add additional charts to track desired metrics by clicking the Add New Chart button.

Each chart has:

  • X-axis: Represents the timestamp of the recorded metric values.
  • Y-axis: Displays the metric values.
MRTracer Render Statistics Panel
MRTracer Render Statistics Panel


MRTracer enables the execution of the Path Tracing algorithm across multiple GPUs. When the user selects the option to visualize frame splitting in the settings, borders will highlight the areas rendered by each device in every frame.

image
Frame Splitting Visualization

MRtracer was used for the bachelor thesis project "Platform for investigating scheduling algorithms and resource utilization for Path Tracing in multi-GPU environments"

About

Remote Multi-GPU Path Tracer built with C++ and CUDA.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •