This is a prototype remote user-interface that connects to a rendering server running on a remote machine.
It has been tested on Mac OSX 11.6 and Ubuntu 18. It may also work on other platforms where the dependencies can be satisfied.
The following are required system dependencies:
- CMake >3.5 <=4.0 (install a specific version via
pip installif your system defaults to an incompatible version). - Ninja build system for CMake (optional)
- Boost (only tested with 1.78).
- FFmpeg (See README.md in the videolib submodule for instructions and version compatibilty).
- OpenCV
- Ubuntu only: GLFW
- Mac OSX only: Xcode with metal support
- E.g. to install Ubuntu dependencies:
- sudo apt install libglfw3-dev libboost-dev libboost-log-dev libboost-program-options-dev cmake ninja-build libopencv-dev libxinerama-dev libxcursor-dev libxi-dev libboost-test-dev
- E.g. using brew on Mac OSX:
- brew install boost cmake ninja opencv
The following dependencies are cloned and built as submodules (so do not need to be installed manually):
- nanogui: a cross platform toolkit for simple GUI applications.
- packetcomms: a simple TCP/IP communication protocol designed for low latency.
- videolib: A wrapper for FFmpeg that supports TCP video streaming using packetcomms.
On Ubuntu (apt):
sudo apt update
sudo apt install libglfw3-dev libboost-dev libboost-log-dev libboost-program-options-dev cmake ninja-build libucx0 libopencv-dev libxinerama-dev libxcursor-dev libxi-dev libboost-test-dev nasm libx264-dev pkg-configOn Windows (mingw, msys2 pacman):
pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-glew mingw-w64-ucrt-x86_64-glfw mingw-w64-x86_64-boost mingw-w64-ucrt-x86_64-opencv mingw-w64-ucrt-x86_64-libx264 nasm mingw-w64-ucrt-x86_64-python-virtualenv python-pipPython (create a venv):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install nanobind opencv-python diffusers sentencepiece accelerateWith the dependencies above installed, run the following to perform a complete configuration and build from scratch:
git clone --recursive https://github.com/mpups/remote_render_ui.git
cd remote_render_ui/external/FFmpeg/
mkdir ../install
./configure --enable-shared --enable-libx264 --enable-gpl --disable-programs --enable-rpath --prefix=`realpath ../install`
make -j64
make install
cd ../../
mkdir build
cd build
PKG_CONFIG_PATH=`realpath ../external/install/lib/pkgconfig/` cmake -G Ninja ..
ninja -j64Typically you will only run the client application on your local machine and the server runs on a remote machine.
- Launch the server:
PYTHONPATH=./ python ../python/run_server.py --port 4000- Wait until the logs shows waiting for connection.
- E.g.:
[12:26:06.674469] [I] [51157] User interface server listening on port 4000
- Launch the client and connect to the same port:
- (Run with
--helpfor a full list of options).
./remote-ui --host localhost --port 4000