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
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
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
Option
CMake Flag
Description
Tests
-DBUILD_TESTS=ON
Build unit tests
docker build -t priZm --build-arg BUILD_MODE=CLI .
cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=CLI
cmake --build .
./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 run --rm priZm renderer_cli
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
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
docker build -t priZm --build-arg BUILD_MODE=MICROSERVICE .
cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=MICROSERVICE
cmake --build .
docker run --rm priZm renderer_web
docker build -t priZm --build-arg BUILD_MODE=CORE --build-arg BUILD_TESTS=ON .
docker run --rm priZm test
cd renderer
mkdir build && cd build
cmake .. -DBUILD_MODE=CORE
cmake --build .
./test