Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

169 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PriZm

C++ CMake OpenGL Docker

Headless OpenGL compute shader Path Tracer using EGL

An renderer that runs entirely without a display server, using EGL for GPU-accelerated rendering in headless environments

Demos

Glass fox Barry
Flight helmet Monument

Key features:

  • GLSL compute shaders for path tracing
  • Physically based rendering
  • EGL for headless rendering
  • glTF 2.0 loading
  • Open Image Denoiser
  • Debug images output: raw, albedo, normals
  • Logging system
  • Unit tests with googleTest
  • Docker ready

Build Options

Build Modes

Mode CMake Flag Output Description
Core -DBUILD_MODE=CORE - Build only core rendering library for testing
CLI -DBUILD_MODE=CLI renderer_cli Standalone CLI application
Microservice -DBUILD_MODE=MICROSERVICE renderer_web Build renderer worker for web service
Both -DBUILD_MODE=BOTH renderer_cli + renderer_web Build both CLI and Web service

Build Options

Option CMake Flag Description
Tests -DBUILD_TESTS=ON Build unit tests

1. CLI version

Build

Docker

docker build -t priZm --build-arg BUILD_MODE=CLI  .

CMake

cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=CLI
cmake --build .

Usage

CMake

./renderer_cli <width> <height> <samples> <input_scene> [OPTIONS]
# example
./renderer_cli 1920 1080 50 tests/data/test-scene.glb -o scene.png --plane 15 --verbose

Docker

docker run --rm priZm renderer_cli

Command line arguments

Argument Type Description
width int Output image width
height int Output image height
samples int Number of samples per pixel
input_scene string Path to .glb/.gltf scene file

Command line options

Option Type Description
-h, --help - Show help message
-o, --output string Output image path (default: output.png)
-v, --verbose - Enable detailed logging
-d, --debug - Save debug images (raw, albedo, normals)
-p, --plane float Add ground plane at scene center with specified size
-c, --camera vec3 vec3 float Set camera: position lookAt fov

2. Microservice version

Build

Docker

docker build -t priZm --build-arg BUILD_MODE=MICROSERVICE  .

CMake

cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=MICROSERVICE
cmake --build .

Usage

Docker

docker run --rm priZm renderer_web

CMake

./renderer_web

3. Testing

Docker

docker build -t priZm --build-arg BUILD_MODE=CORE  --build-arg BUILD_TESTS=ON .
docker run --rm priZm test

CMake

cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=CORE
cmake --build .
./test

Releases

Packages

Contributors

Languages