Manual Startup Overview If you know which host is your graphics server, you can start the Sun Shared Visualization 1.1 server manually. You will either need to know which graphics device or X server on that host will be used, or you will use the server’s default.
Note - VirtualGL’s default is used if neither the vglrun -d option is used nor the VGLDISPLAY environment variable is set on the graphics server when vglrun is invoked. For more on VGLDISPLAY, see. The procedures in this chapter assume that the graphics server already has Sun Shared Visualization 1.1 software installed and configured as described in Chapter 3 and Chapter 4 of the Sun Shared Visualization 1.1 Server Administration Guide. When the server is configured that way, access to the graphics accelerator device (and to the server’s X server, if necessary) is granted either to all users or to the vglusers group. In the latter case, you need to verify that the administrator has added your login to that group. Instructions for use of VirtualGL can vary, depending on:.
Your desired Image Transport (the alternatives are described in ). Your client type (Sun Ray thin clients, Solaris and Linux UNIX clients - including Mac OS X clients, and Windows clients). For more information, see. Whether you are using TurboVNC.
For more information, see. In this chapter, use of VirtualGL’s Sun Ray Image Transport and VGL Image Transport is described first, followed by information on using TurboVNC While this chapter describes manual starting of the Sun Shared Visualization 1.1 software, self-selection of a graphics device in a shared environment is not advised, as other users might be using or about to use that device. If you select a device that others are using, any process sharing the device could exhaust resources (for example, memory on the graphics accelerator). This exhaustion would cause that process to quit or all processes sharing the device to become unreasonably slow. Therefore, sites might prefer to let Sun Grid Engine perform the allocation, as described in the Sun Shared Visualization 1.1 Software Server Administration Guide, 820-3256. Describes using Shared Visualization software with Sun Grid Engine. VirtualGL Startup Sequence There are two components to be started for remote visualization using VirtualGL’s VGL or Sun Ray Image Transports:.
VirtualGL runs on the graphics server, and starts the graphics application. Vglrun interposes between the application and the GLX and OpenGL® libraries, so VirtualGL can read back completed images from the graphics accelerator and pass the images to the client for display. The VirtualGL client software runs on the client (host), receiving images from the graphics server and displaying the images.
If the client is a Sun Ray, the Sun Ray hardware and firmware performs this action instead. The following sections describe use of VirtualGL for Sun Ray, UNIX (Solaris, Linux, or Mac OS X) clients, and Windows clients. When the graphics application starts to use OpenGL on the server, VirtualGL connects to the VirtualGL client (or Sun Ray) and starts streaming compressed image sequences to the client. This mode is not recommended for use on low-bandwidth or high-latency networks. Note - To use TurboVNC, which is better for low-bandwidth or high-latency networks, see. Vglrun Syntax Summary Within a session to the graphics server, you start your application under control of vglrun.
The command’s syntax is. Vglrun vglrun-options application application-arguments You can provide vglrun options prior to the name of the graphics application, and options for the application afterward.
For example, vglrun options can improve image quality at the expense of performance and network bandwidth. See for vglrun options. Vglrun Verification Before attempting a more complex graphics application, you might want to verify that VirtualGL can communicate with your client.
To verify communication efficiently, first run a simple application, such as /opt/VirtualGL/bin/glxspheres. Using VirtualGL From a Sun Ray Client If your client is a Sun Ray thin client, the VirtualGL Sun Ray plug-in will use the Sun Ray image transport. That is, the plug-in will compress images for Sun Ray and send these images directly to the Sun Ray DTU for Sun Ray client hardware decompression and display. The Sun Ray environment does not use VirtualGL client software ( vglclient). There are two cases for using the Sun Shared Visualization 1.1 software from a Sun Ray client, depending on whether the graphics server is also your Sun Ray server. To Use VirtualGL From a Sun Ray Client When the Sun Ray Server and the Graphics Server Are Different Hosts 1.
Open a new terminal window that will be dedicated to the graphics server session. In the same terminal window, open a Secure Shell (SSH®) session into the graphics server with the ssh command.
Graphics-server% /opt/VirtualGL/bin/vglrun vglrun-options my-program my-arguments VGL NOTICE: Automatically setting VGLCLIENT environment variable to VGL 100.200.30.45, the IP address of your SSh client. The VirtualGL Sun Ray Image Transport will be used. Ssh will set your DISPLAY environment variable for you to the graphics-server end of an X tunnel. The result is that the X command stream is encrypted and routed to your Sun Ray server.
However, VirtualGL detects this situation and transmits images directly to your Sun Ray DTU. To Use VirtualGL From a Sun Ray Client When the Sun Ray Server Is the Graphics Server In any terminal window, start any graphics application using vglrun.
Using VirtualGL From Other Clients This section describes using VirtualGL’s VGL Image Transport from Solaris, Linux, Mac OS X, and Windows clients. Use this mode on local-area networks. Procedures in this section assume you are already logged into the client.
This section has slight variations based on your security choice:. X11 Forwarding, VGL unencrypted - The X11 traffic is encrypted, but the VirtualGL image stream is left unencrypted to maximize performance. SSL-Encrypted VGL Images - Both X11 traffic and the VirtualGL image stream are encrypted.
However, enabling SSL (Secure Socket Layer) encryption can reduce VirtualGL performance by as much as 20% on a high-speed network such as fast (100 Mbps) Ethernet. X11 Forwarding, ssh -Encrypted VGL - Both X11 traffic and the VirtualGL image stream are tunneled through the ssh connection, providing a secure solution. The design of your network and your security policy might regulate you to use encrypted VGL Image Transport. However, using ssh tunneling can reduce VirtualGL performance by 20-40% on a high-speed network such as fast (100 Mbps) Ethernet, especially for Windows clients.
Also, in this case, vglconnect will make two ssh connections into the server (the first to find an open port on the server and the second to create the secure image tunnels and open the Secure Shell). If you are not using an ssh agent to create password-less logins, then this mode will require you to enter your password twice. Before each use, start by deciding which security choice you will use. To Use VirtualGL From a UNIX or Mac OS X Client 1. Start the client’s X server and log into the client.
On a Mac OS X client, start the X11 application that was installed in Applications/Utilities/X11. Open a new terminal window that will be dedicated to the graphics server session. On a Mac OS X client, you might need to start an X terminal window ( xterm) with the Command-N key combination within the Mac OS X X11 application. In the same terminal window, open a Secure Shell session into the graphics server using vglconnect.
Graphics-server% /opt/VirtualGL/bin/vglrun vglrun-options graphics-program my-arguments VGL NOTICE: Automatically setting VGLCLIENT environment variable to VGL 100.200.30.45, the IP address of your SSh client. Your vglrun-options value depends in part on your security choice: Security Choice vglrun-option Value X11 Forwarding, VGL unencrypted (no vglrun-option value is used) SSL-Encrypted VGL Images +s X11 Forwarding, ssh-Encrypted VGL (no vglrun-option value is used) Replace graphics-program with your graphics program’s executable file name, script name, or pathname. Provide any options or arguments to the graphics program at the end of the command line. No action is required on the client as long as the SSL port traffic is not blocked by the client’s firewall.
By default, the client automatically accepts SSL or unencrypted connections. Using VirtualGL From a Windows Client A PC running Windows can be a client with Exceed 2006 or newer.
For applications that use stereographic or transparent overlays, Exceed 3D is required on the client. The client desktop must be configured to display true color (24-bit pixels). Instructions for installing and configuring VirtualGL on Windows are in, or the VirtualGL User’s Guide. Ensure that Exceed has been configured. This section describes using VirtualGL’s VGL Image Transport from a Windows client.
This mode is not recommended for use on low-bandwidth or high-latency networks. Those networks require the Exceed (or Exceed 3D) X server to be installed on the Windows client.
To Use VirtualGL From a Windows Client 1. Start Exceed if it isn’t already started.
Hover the mouse pointer over the Exceed taskbar icon and note the Exceed display number (for example, Exceed 0.0 Multiwindow Mode.) 2. Open a new command prompt window and set the DISPLAY environment variable.
C cd /d 'c: program files virtualgl -version-build ' C vglconnect vglconnect-option user @ graphics-server Your vglconnect-option value depends on your security choice: Security Choice vglconnect-option Value X11 Forwarding; VGL unencrypted (no vglconnect-option value is used) SSL-Encrypted VGL Images (no vglconnect-option value is used) X11 Forwarding; ssh-Encrypted VGL -s vglconnect -s can be used to create multilayered ssh tunnels. For instance, if the VirtualGL server is not directly accessible from the Internet, you can use vglconnect -s to connect to a gateway server, then use vglconnect -s again on the gateway server to connect to the VirtualGL server. Both the X11 and the VGL image traffic will be forwarded from the VirtualGL server through the gateway and to the client.
Replace user with your user account name on the graphics server. Replace graphics-server with the hostname (or IP address) of that graphics server. Within the ssh session, start a graphics application using vglrun. Graphicsserver% /opt/VirtualGL/bin/vglrun vglrun-options graphics-program my-arguments VGL NOTICE: Automatically setting VGLCLIENT environment variable to VGL 100.200.30.44, the IP address of your SSh client. Your vglrun-options value depends in part on your security choice: Security Choice vglrun-option Value X11 Forwarding, VGL unencrypted (no vglrun-option value is used) SSL-Encrypted VGL Images +s X11 Forwarding, ssh-Encrypted VGL (no vglrun-option value is used) Replace graphics-program with your graphics program’s executable file, script name, or pathname.
Provide any options or arguments to the graphics program at the end of the command line. No action is required on the client as long as the SSL port traffic is not blocked by the client’s firewall. By default, the client automatically accepts SSL or unencrypted connections. Client% /opt/VirtualGL/bin/vglconnect myserver vglclient is already running on this X display and accepting SSL connections on port 4243. Vglclient is already running on this X display and accepting unencrypted connections on port 4242. This output is fine.
Vglclient is designed to stay active in the background and available for subsequent connection from any number of remote applications. VirtualGL Server Messages vglrun marks its innocuous messages with NOTICE. If the VGLCLIENT environment variable is not set, but ssh environment variables are set, VirtualGL will set VGLCLIENT from the ssh variables, and print this message to remind you, in case you intended to do something else.
Man -M /opt/TurboVNC/man vncserver You can read additional related man pages by substituting the following for vncserver:. Xvnc. vncviewer. vncconnect.
vncpasswd On a Mac OS X host, the only man page is for vncviewer. Note - For Windows, after installing TurboVNC, use the embedded help feature. The icon for help is a question mark in the upper-right corner of the TurboVNC viewer window. There are two components to be started:. TurboVNC (Virtual Network Computing) server running on the graphics server.
One or more clients viewing the TurboVNC session using one of these types of TurboVNC client viewing software:. The Java based Web VNC viewer software runs within a web browser on the client (simple - requires no installation). A dedicated TurboVNC vncviewer client software component (much better-performing) Some users can use the TurboVNC vncviewer client while others sharing the same VNC session use the Java based Web VNC viewer. TurboVNC Process Overview To run your application within a TurboVNC session hosted on the graphics server, you use these six steps: 1. Set TurboVNC’s password using vncpasswd.
Note - Do this step upon the initial execution. The step does not need to be repeated for later runnings. Access the graphics server. Start a TurboVNC session on the graphics server. Start a TurboVNC viewer on your client (host). Additional viewers can be started by collaborators.
This step is dependent on which TurboVNC viewer is used. Start your application within the TurboVNC session on the graphics server. Invoke the application using vglrun, so the application is under the control of VirtualGL.
Eventually, terminate the TurboVNC server session (and all clients). These steps differ slightly depending on whether you choose to use the vncserver command or the RUN.vncserver script, which is part of the optional Sun Grid Engine Additions. RUN.vncserver might be easiest, but requires the same home directory to be shared by the client host and the graphics server. The procedures to follow for either choice are listed in. The third and fourth procedures in each sequence are different. TABLE 3-1 Procedure Sequence for Manually Using TurboVNC Procedure Order With the vncserver Command With the RUN.vncserver Script 1 2 3 4 5 6. Client% /opt/TurboVNC/bin/vncpasswd Using password file /home/ susieq /.vnc/passwd Password: Verify: Would you like to enter a view-only password (y/n)?
N If /opt/TurboVNC/bin is in your $PATH, then you can start vncpasswd. The view-only password is an alternate password to be given to a collaborator you want to enable to join your TurboVNC session. This collaborator can only view your session, not move the mouse, nor enter keyboard or mouse events. The TurboVNC password (and any view-only password) will be used by all sessions started by this user using the same $HOME directory. The password can be changed before any session. To Access the Graphics Server Take one of the following actions:.
On a Solaris, Linux, or Mac OS X client: Open a new terminal window. Within the window, use ssh to access the graphics server. C 'c: program files turbovnc putty' user @ graphics-server Password: Last login: Wed May 12 13: from client Sun Microsystems Inc.
SunOS 5.10 Generic January 2005 Replace user with your user account name on the graphics server. Replace graphics-server with the hostname (or IP address) of that graphics server. The DISPLAY environment variable on the graphics server shell is irrelevant to the TurboVNC session you are about to establish. The TurboVNC server is itself an X server. Within the TurboVNC session all windows have a DISPLAY value starting with my-server. To Start the TurboVNC Server Session Start the TurboVNC server on the graphics server host using the vncserver script.
If the graphics server is running Solaris software, the submission looks like the following. Myserver% /opt/TurboVNC/bin/vncserver New ’X’ desktop is myserver:1 Starting applications specified in /home/ susieq /.vnc/xstartup Log file is /home/ susieq /.vnc/server:1.log If you add /opt/TurboVNC/bin to your $PATH, you can start vncviewer without typing the path.
You can specify a size (in pixels) for the vncserver’s created desktop using its -geometry w x h option. If the size is too small, applications might not fit. But if the size is too large, you are not able to display all of the desktop at once on your client, so you will get scroll bars. The terminal window shell displays the vncserver’s output. The key line of output displays the TurboVNC display name (and is set off by blank lines).
Note the server name ( myserver in this example) and X display number (1 here). You can think of the values, separated by the colon, as the display name, such as myserver:1 in this example. The ssh session to the graphics server can now be exited, if desired. However, you might want to use this session as a reminder to eventually kill the VNC server.
To Start a TurboVNC Viewer and Connect to Your TurboVNC Session This procedure differs, based on which TurboVNC viewer you use on your client:. The Java based TurboVNC viewer software runs within a web browser on the client (simple). A dedicated vncviewer client software component (much better-performing) Once your TurboVNC viewer is connected to your TurboVNC session, within this TurboVNC X session you can create multiple terminals (shell windows) and start graphics applications. Decide which VNC viewer you will use. To use a simple Java-based TurboVNC client viewer in your web browser, continue with. To use a TurboVNC viewer that performs better, continue with.
Connect your web browser to your TurboVNC session. In your web browser, type the URL containing the server name and the port number, which is 5800 + the display number noted previously. For the previous example ( myserver:1, where the display number is 1), the URL is The web server displays a separate TurboVNC Java applet window.
This window enables you to set options. (You also can change options using the Options button at the top of the TurboVNC session window.) This window will prompt you for the TurboVNC password before it enables you to view the TurboVNC session. After the viewer is enabled, continue with the next procedure,.
Locate your TurboVNC server’s display name. This display name is the graphics server name and the X display number, separated by a colon. (The name myserver:1 is used in the examples in this procedure.) This name is available when you start your TurboVNC server. You will include this display name as an option to the TurboVNC viewer, so the viewer can connect to your TurboVNC server. Start a TurboVNC viewer connected to your TurboVNC session. VNC offers a client program specifically for use on the client host as a remote TurboVNC viewer, which can offer better window system integration and much better performance than the web browser technique. On a Solaris, Linux, or Mac OS X client, the TurboVNC viewer ( vncviewer) is in /opt/TurboVNC/bin/.
If you add this directory to your $PATH variable, you can start vncviewer without typing the path. On a Solaris, Linux, or Mac OS X client, your command and the vncviewer output might be the following. Client% /opt/TurboVNC/bin/vncviewer myserver:1 Connected to RFB server, using protocol version 3.7 Enabling TightVNC protocol extensions Performing standard VNC authentication Password: VNC authentication succeeded If you do not put your graphics server’s VNC display name on the vncviewer command line, a small vncviewer window will prompt for it. Enter the display name and press the Return key. The TurboVNC viewer prompts you for your TurboVNC password and then enables you to view the TurboVNC session. On a Windows client, select TurboVNC Viewer in the TurboVNC Start Menu group.
Select a connection profile in the dialog. FIGURE 3-1 TurboVNC Connection Dialog on a Windows Client b. When prompted, enter your password and click OK.
For more information on connection profiles, which allow control of the tradeoff between quality and performance, see. A TurboVNC session window appears on your client host. This client window views the TurboVNC X server on the TurboVNC server host. Within this TurboVNC session, you can launch X Windows applications that will run on the server host. To Start a Graphics Application Within a TurboVNC Session Within the TurboVNC session, you might type commands to the graphics server’s shell windows normally. However, when you are ready to run a graphics application, you must use VirtualGL’s vglrun command. Vglrun interposes between the application and the GLX library so vglrun can read back completed images from the graphics accelerator and pass the images to the TurboVNC server.
The vglrun command can be in your $PATH. Otherwise, you need to use a full path to the vglrun command. VirtualGL avoids compressing the graphics images VirtualGL gives to the TurboVNC server on the same host. TurboVNC compresses images it sends to its viewer. TurboVNC also sends images to clients only as fast as the client can display the images. Therefore, the VNC server will not necessarily send every updated frame to every client.
Use a vglrun command to start your graphics application. For example, enter this command from within a terminal window in the TurboVNC session. Myserver% /opt/VirtualGL/bin/vglrun myprogram Note - If you have used the RUN.vncserver script, the vglrun command should be in your $PATH, since RUN.vncserver added vglrun‘s directory. But the.cshrc or.profile in your $HOME might have overridden the $PATH the file inherits. In that case, you need to use a full path to the vglrun command. If you attempt to run an OpenGL application from within your TurboVNC session without remembering to use vglrun (but with $DISPLAY directing the application to your TurboVNC session), you might get an error message such as.
Xlib: extension 'GLX' missing on display 'myserver:1.1' To Terminate the TurboVNC Session Do not forget to save your work and terminate the TurboVNC session when you are done with it. You cannot just exit the viewer (quit your web browser, leave the TurboVNC page, or exit the vglviewer) because the TurboVNC server continues to run.
When you have saved your work, you must cause the TurboVNC session and all TurboVNC foreground processes to exit. Take one of the following actions:.
Use the TurboVNC session’s window manager logout procedure. From within the TurboVNC session or from any session to the same graphics server, issue a kill command to the graphics server host. Include the display number noted upon startup of the TurboVNC session ( 1 in the example). Manually Using the RUN.vncserver Script Even without submitting a job to Sun Grid Engine, the RUN.vncserver script that is an optional part of Shared Visualization 1.1 server installation can help start the TurboVNC server. This script is available to clients that have mounted the Sun Grid Engine installation from the grid’s NFS server. This process is nearly identical to the process described in. However, a file holds the TurboVNC server’s DISPLAY value, relieving the user of this burden.
Because the file is under the user’s $HOME, it also has these two disadvantages:. The client host and the graphics server are assumed to share the same home directory. The user can have no more than one script-started TurboVNC session active at a time. The first two procedures in the sequence are the same whether you are using the vncserver command or the RUN.vncserver script:. First, to select a TurboVNC password, see. This procedure must be performed sometime prior to using the RUN.vncserver command.
Second, to access the graphics server, see. When you use the RUN.vncserver script, the third and fourth procedures in the sequence are different and easier:. Third, to start the TurboVNC server session, see. Fourth, to connect a viewer to the session, see. The final two procedures are the same in both cases:.
Fifth, to start an application, see. Finally, to terminate the TurboVNC or RUN.vncserver session, see. The procedures included in this section are the two that are different when you use RUN.vncserver.
To Start the TurboVNC Server Session Using RUN.vncserver Note - This section substitutes for. Type the RUN.vncserver command. Myserver% /gridware/sge/graphics/RUN.vncserver & The output and any errors from the RUN.vncserver script is in $HOME/vncserver.log. If your personal configuration files, such as $HOME/.profile or $HOME/.cshrc do not override the $PATH or csh $path established by the RUN.vncserver script, then vglrun (used to start a graphics application) is in your $PATH. Add the configuration files to the $PATH the files receive, rather than replacing that path. Your grid can have a different script for this purpose, specific to your environment. Note - The files written by the RUN.vncserver script are in your $HOME on the execution host (graphics server), if that differs from your $HOME on your client (host).
After starting the VNC server, the ssh session to the graphics server can now be exited, if desired. However, you might want to use this session as a reminder to eventually exit the VNC server.
To Connect a Viewer to Your RUN.vncserver Session Note - This section substitutes for. This step depends on your TurboVNC viewer. Either viewer should be convenient, as long as the graphics server host and the client host share the same $HOME directory. Connect your web browser to your TurboVNC session. The RUN.vncserver script creates files in your $HOME directory starting with vnc.
The file $HOME/vncurl should redirect your browser to the execution server and port number for your TurboVNC session. If your web browser expands $HOME, you could simply enter (or select a bookmark for) $HOME/vncurl or file://$HOME/vncurl. If neither of these methods work, you can expand $HOME yourself and type file:// and your home directory followed by /vncurl (for example, file:///home/susieq/vncurl).
This action redirects your browser to the URL contained in your vncurl file. Note - The files written by the RUN.vncserver script are in your $HOME on the execution host (graphics server), if that $HOME differs from your $HOME on your client (host). You can also view your $HOME/vncurl file and use your browser to view the URL contained in that file (for example, The web page prompts you for the TurboVNC password and then enables you to view the TurboVNC session. Within this TurboVNC X session, you can create multiple terminals (shell windows) and start graphics applications.
Start a TurboVNC viewer connected to your RUN.vncserver session. The script saves the graphics server name and port number in the file $HOME/vncserver in a format useful to the TurboVNC viewer. You can start the TurboVNC viewer on your client (host) by appending ‘cat $HOME/vncserver‘ as an option to your vncviewer starting. If your client is running Linux, your command might be. Performance and Measurement This section describes controlling and measuring VirtualGL performance.
Additional information is in. Spoiling By default, VirtualGL discards frames when it is already busy sending a frame. This behavior, called spoiling, allows the most recent frame to appear sooner at the client. The most recent frame need not wait behind older frames. However, this behavior means that the application and graphics accelerator spend time producing frames that will be discarded.
The -spoil option to vglrun disables spoiling. This behavior forces every distinct frame that is produced by the application to be transported to the client and displayed. Therefore, this behavior slows the application to the speed at which the frames can be compressed, transmitted, decompressed, and displayed. In this way, the application’s stated performance matches the client’s results. The vglrun +profile option outputs (typically, to the vglconnect log file) lines that show its performance for compression, transmission, decompression, display, and overall (total) performance in frames per second (fps) and megapixels per second. For example, an application with spoiling enabled might produce 60 frames per second, of which 10 are displayed for the user.
The application reports that its performance is 60 frames per second. However, the vglrun profile output shows a total of only 10 fps. If you rerun vglrun with -spoil, the application’s performance will match the profile performance of vglrun. Because resources are not spent producing discarded frames, more than 10 fps might now reach the client (depending on where the bottleneck was). This example might now produce, transmit, and display to the client 20 fps. TurboVNC also spoils frames, but its behavior cannot be controlled by VirtualGL options or environment variables.
Each VNC client pulls a frame from the server when it is ready, rather than the server pushing images to the clients when the image has been updated by an application. TurboVNC Quality Controls TurboVNC supports both static and dynamic controls over quality and performance tradeoffs.
BS Editor: VirtualGL is an open source package which remote display software the ability to run OpenGL applications with full 3D hardware acceleration. Some remote display software, such as VNC, lacks the ability to run OpenGL applications at all. Other remote display software forces OpenGL applications to use a slow software-only OpenGL renderer, to the detriment of performance as well as compatibility.
The traditional method of displaying OpenGL applications to a remote X server (indirect rendering) supports 3D hardware acceleration, but this approach causes all of the OpenGL commands and 3D data to be sent over the network to be rendered on the client machine. This is not a tenable proposition unless the data is relatively small and static, unless the network is very fast, and unless the OpenGL application is specifically tuned for a remote X-Windows environment.
With VirtualGL, the OpenGL commands and 3D data are instead redirected to a 3D graphics accelerator on the application server, and only the rendered 3D images are sent to the client machine. VirtualGL thus 'virtualizes' 3D graphics hardware, allowing it to be co-located in the 'cold room' with compute and storage resources. VirtualGL also allows 3D graphics hardware to be shared among multiple users, and it provides 'workstation-like' levels of performance on even the most modest of networks. This makes it possible for large, hot 3D workstations to be replaced with laptops or even thinner clients. More importantly, however, VirtualGL eliminates the workstation and the network as barriers to data size.
Users can now visualize gigabytes and gigabytes of data in real without needing to copy any of the data over the network or sit in front of the machine that is rendering the data.