Performance with remote rendering depends primarily on two factors: rendering speed on the remote server machine and the available network bandwidth.
Rendering speed on the remote machine depends on the same things it would depend on if you were sitting at that machine, including CPU speed and graphics performance. In addition, it depends on whether rendering to an off-screen buffer can be accelerated (done in hardware) and whether there is enough accelerated off-screen buffer memory available.
Network bandwidth is usually the real limiting factor because RGB UserGuide_Images are being transmitted and they can be quite large. For example, the image of a 640 by 480 window requires almost one million bytes of data (uncompressed). Here are some general guidelines for improving performance with remote rendering:
If you are using an X server on the local machine, this is not currently
an option. However VNC does it automatically.
Although standard VNC does image compression, its algorithms are optimized for non-graphical applications. You may get better performance using a version of VNC (for example Tridia) that supports zlib compression. Also there is on-going work in the VNC open source community to integrate different image compression algorithms, for example JPEG. See the links on the VNC web site for the latest information. Other commercial remote viewing products, like ThinAnywhere™, also do very efficient image compression.
If you are using VNC on the local machine, this is not currently an
option. However it is an effective technique if the local machine supports OpenGL texture
mapping and has an X server that supports the GLX extension, e.g., Exceed3D™.
The basic idea is to reduce the bandwidth requirement by sending a smaller image across the network. For example, an image that is 70% of the full window size contains approximately half as many pixels as the full image, allowing almost twice the frame rate (if we are bandwidth limited). There are no down scaling artifacts because Open Inventor renders at the smaller image size on the remote machine. Then the image is stretched to the actual window size on the local machine using linear interpolation (OpenGL texture mapping) on the local machine’s graphics board. Increasing or decreasing the image size (as a percentage of the actual window size) allows the user or application to trade image quality for performance. There are three environment variables that control “low res” rendering: