| Installation Guide |
| ================== |
|
|
| Python Installation |
| ------------------- |
|
|
| This package is available via ``pip``. |
|
|
| .. code-block:: bash |
|
|
| pip install pyrender |
|
|
| If you're on MacOS, you'll need |
| to pre-install my fork of ``pyglet``, as the version on PyPI hasn't yet included |
| my change that enables OpenGL contexts on MacOS. |
|
|
| .. code-block:: bash |
|
|
| git clone https://github.com/mmatl/pyglet.git |
| cd pyglet |
| pip install . |
|
|
| .. _osmesa: |
|
|
| Getting Pyrender Working with OSMesa |
| ------------------------------------ |
| If you want to render scenes offscreen but don't want to have to |
| install a display manager or deal with the pains of trying to get |
| OpenGL to work over SSH, you have two options. |
|
|
| The first (and preferred) option is using EGL, which enables you to perform |
| GPU-accelerated rendering on headless servers. |
| However, you'll need EGL 1.5 to get modern OpenGL contexts. |
| This comes packaged with NVIDIA's current drivers, but if you are having issues |
| getting EGL to work with your hardware, you can try using OSMesa, |
| a software-based offscreen renderer that is included with any Mesa |
| install. |
|
|
| If you want to use OSMesa with pyrender, you'll have to perform two additional |
| installation steps: |
|
|
| - :ref:`installmesa` |
| - :ref:`installpyopengl` |
|
|
| Then, read the offscreen rendering tutorial. See :ref:`offscreen_guide`. |
|
|
| .. _installmesa: |
|
|
| Installing OSMesa |
| ***************** |
|
|
| As a first step, you'll need to rebuild and re-install Mesa with support |
| for fast offscreen rendering and OpenGL 3+ contexts. |
| I'd recommend installing from source, but you can also try my ``.deb`` |
| for Ubuntu 16.04 and up. |
|
|
| Installing from a Debian Package |
| ******************************** |
|
|
| If you're running Ubuntu 16.04 or newer, you should be able to install the |
| required version of Mesa from my ``.deb`` file. |
|
|
| .. code-block:: bash |
|
|
| sudo apt update |
| sudo wget https://github.com/mmatl/travis_debs/raw/master/xenial/mesa_18.3.3-0.deb |
| sudo dpkg -i ./mesa_18.3.3-0.deb || true |
| sudo apt install -f |
|
|
| If this doesn't work, try building from source. |
|
|
| Building From Source |
| ******************** |
|
|
| First, install build dependencies via `apt` or your system's package manager. |
|
|
| .. code-block:: bash |
|
|
| sudo apt-get install llvm-6.0 freeglut3 freeglut3-dev |
|
|
| Then, download the current release of Mesa from here_. |
| Unpack the source and go to the source folder: |
|
|
| .. _here: https://archive.mesa3d.org/mesa-18.3.3.tar.gz |
|
|
| .. code-block:: bash |
|
|
| tar xfv mesa-18.3.3.tar.gz |
| cd mesa-18.3.3 |
|
|
| Replace ``PREFIX`` with the path you want to install Mesa at. |
| If you're not worried about overwriting your default Mesa install, |
| a good place is at ``/usr/local``. |
|
|
| Now, configure the installation by running the following command: |
|
|
| .. code-block:: bash |
|
|
| ./configure --prefix=PREFIX \ |
| --enable-opengl --disable-gles1 --disable-gles2 \ |
| --disable-va --disable-xvmc --disable-vdpau \ |
| --enable-shared-glapi \ |
| --disable-texture-float \ |
| --enable-gallium-llvm --enable-llvm-shared-libs \ |
| --with-gallium-drivers=swrast,swr \ |
| --disable-dri --with-dri-drivers= \ |
| --disable-egl --with-egl-platforms= --disable-gbm \ |
| --disable-glx \ |
| --disable-osmesa --enable-gallium-osmesa \ |
| ac_cv_path_LLVM_CONFIG=llvm-config-6.0 |
|
|
| Finally, build and install Mesa. |
|
|
| .. code-block:: bash |
|
|
| make -j8 |
| make install |
|
|
| Finally, if you didn't install Mesa in the system path, |
| add the following lines to your ``~/.bashrc`` file after |
| changing ``MESA_HOME`` to your mesa installation path (i.e. what you used as |
| ``PREFIX`` during the configure command). |
|
|
| .. code-block:: bash |
|
|
| MESA_HOME=/path/to/your/mesa/installation |
| export LIBRARY_PATH=$LIBRARY_PATH:$MESA_HOME/lib |
| export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MESA_HOME/lib |
| export C_INCLUDE_PATH=$C_INCLUDE_PATH:$MESA_HOME/include/ |
| export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$MESA_HOME/include/ |
|
|
| .. _installpyopengl: |
|
|
| Installing a Compatible Fork of PyOpenGL |
| **************************************** |
|
|
| Next, install and use my fork of ``PyOpenGL``. |
| This fork enables getting modern OpenGL contexts with OSMesa. |
| My patch has been included in ``PyOpenGL``, but it has not yet been released |
| on PyPI. |
|
|
| .. code-block:: bash |
|
|
| git clone https://github.com/mmatl/pyopengl.git |
| pip install ./pyopengl |
|
|
|
|
| Building Documentation |
| ---------------------- |
|
|
| The online documentation for ``pyrender`` is automatically built by Read The Docs. |
| Building ``pyrender``'s documentation locally requires a few extra dependencies -- |
| specifically, `sphinx`_ and a few plugins. |
|
|
| .. _sphinx: http://www.sphinx-doc.org/en/master/ |
|
|
| To install the dependencies required, simply change directories into the `pyrender` source and run |
|
|
| .. code-block:: bash |
|
|
| $ pip install .[docs] |
|
|
| Then, go to the ``docs`` directory and run ``make`` with the appropriate target. |
| For example, |
|
|
| .. code-block:: bash |
|
|
| $ cd docs/ |
| $ make html |
|
|
| will generate a set of web pages. Any documentation files |
| generated in this manner can be found in ``docs/build``. |
|
|