Skip to content

v1.8: Python API and Distributed Parallel Rendering

Compare
Choose a tag to compare
@Enigmatisms Enigmatisms released this 15 Jan 02:31
· 20 commits to master since this release

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
diamond-variance Screenshot 2025-01-14 234708 frame-time

Full Changelog: v1.7...v1.8