v1.8: Python API and Distributed Parallel Rendering
What's Changed (Pull 10#)
Exported python API via nanobind:
PythonRenderer
class is defined and can be imported in Python when compiled.PythonRenderer
supports exporting CUDA torch.Tensor (output buffer and variance buffer), as well as the running-mean of frame time.- The structure of the CMake project is utterly changed. The core functions and classes are compiled to a static lib (RenderCore) now.
Add scripts that supports distributed parallel rendering:
- Based on PyTorch DDP module.
pyrender/ddp_render.py
supports rendering with multiple GPUs (on a same device). Multiple devices can be trivially supported, but it is not implemented yet. - The script writes output buffer (RGB image), variance buffer (single channel image), variance curves (Welford's algorithm), frame time (different processes) and average frame time curves to a tensorboard log. The variance estimation buffer can be used for adaptive sampling in the later updates.
Tested the compilation on Ubuntu 22.04, fixed several bugs that are exclusive on Linux.
Variance Image | Variance Curves | Frame Time (ms) Curves |
---|---|---|
Full Changelog: v1.7...v1.8