This tutorial will walk you through the process of setting up and rendering images in V-Ray for Maya with DR (Distributed Rendering).
Sometimes rendering an image is a fast and simple process. Other times, rendering a good quality image can take quite a bit of time. This is why breaking up the task of rendering over multiple computers can be helpful for completing long renders much faster. In this tutorial, we go over setting up and using Distributed Rendering (DR) to utilize other computers on a network (normally referred to as a render farm) to complete a rendered image faster. The workstation/computer used to start a DR job in Maya is referred to as the render client and the computers on the network that are sent rendering tasks are known as render servers or render slaves.
The render client starts the rendering process in Maya, then divides the frame into small regions (called buckets), and tasks rendering these regions to available render servers. The servers calculate their part of the task and then send the finished data back to the client for assembly. Then, the servers request additional tasks to render next, until the entire image is completed and the client has assembled all the image data back together for the full image. If the DR job is a sequence of frames, then this process is repeated until all frames for the job are completed.
Similar to the process to get V-Ray for Maya installed on your workstation, you'll need to install V-Ray for Maya on any computers to which you wish to distribute your render jobs. But instead of the Full install option, the Standalone only option works if you only plan to use that machine as a render slave only.
Make sure to use the same version installer as the workstation from which you plan to render. This helps ensure that the V-Ray Core is the same version used on all servers, and prevent any mismatch of supported features. V-Ray standalone can also be used on a render machine that doesn't have Maya installed.
Registering the slave service
If you want to make your render nodes ready to render DR jobs anytime they are online, it is recommended to register the V-Ray render slave application as a service, which can be done at the end of the installation process.
If you choose not to enable the Register V-Ray render slave as a service checkbox, registering V-Ray render slave as a service may be done later. Otherwise, you can run the render slave application manually whenever you wish to use that computer for distributed rendering.
Part 2: Licensing
Next, make sure your license setup is correct, by either installing the online license server on your computer, or by connecting to a license server on your network. Each render server will need access to a V-Ray Render Node license. This process is made easy with the V-Ray Online Licensing System by loading http://localhost:30304/#/ (or use the IP address of the computer running the licensing system, with the port 30304). For more details on this process, please see the Changing your License Settings page in the Set up your V-Ray License section.
Important to note from the image above is the number of Render Node licenses that are Free.
Part 3: Running the Render Slaves
Now that everything is set and ready to go, we need to get the additional computers to start listening for render jobs on the network. Run the V-Ray Render Slave application that is installed with V-Ray for Maya: Launch V-Ray render slave on all desired render machines. This is found in the Start Menu if using Windows as shown in the image below.
For Linux and Mac OS X, the vrayslave command is used and can be found at /usr/autodesk/maya20nn/vray/bin/ and /Applications/Autodesk/maya20xx/vray/bin/.
The executable is a shortcut linked to the vray.exe file with additional flags added to start the render server and open the correct communication port. This manual start process is great if you don't want the computer to render in slave mode all the time. However, you'll have to remember to turn it on every time the computer starts up and you need it to render.
If you don't want to do this manually every time, simply register the slave as a service either through the installation process or by registering the V-Ray render slave application as a service through the OS.
Running Slaves on Different OSes
Cross-platform render jobs are possible with V-Ray. For example, you can start a rendering from a Windows machine, and distribute to any combination of render servers running on Linux, Mac OS X and/or Windows to join the rendering job, as long as they are running their respective render slave application. Any OS can originate arender as the render client, or receive a render job as a render slave.
Using V-Ray Standalone
Alternatively, render servers can be started by running the vray -server command from V-Ray Standalone in a command prompt.
Checking DR nodes
While it's not necessary to check that your render slaves are running properly, vraydr_check is a useful tool if there's a problem with communication among them.
The proper syntax for vraydr_check is from the path C:\Program Files\Chaos Group\V-Ray\Maya 20yy for x64\bin (where 20yy is the version of Maya for which V-Ray is installed), run vraydr_check -host=ip (or computer name) -port=#####. An example is: vraydr_check -host=techdocs04 -port=20207. If the computer is running the render slave, the Status comes back as ready and the version of V-Ray is displayed.
The location of the vraydr_check executable is found at /usr/ChaosGroup/V-Ray/Maya 20nn -x64/bin for the Linux OS, and at /Applications/ChaosGroup/V-Ray/Maya 20nn -x64 for the Mac OS X. For more information on using the vraydr_check tool, please see the Distributed rendering page.
Part 4: Rendering with DR
V-Ray does not need any additional files or directory sharing set up to perform DR. However, if your Maya project is using additional bitmaps or assets, you may wish to locate everything on a shared location on your network. If not, you need to use the Transfer missing assets option, so that all the render slaves will have copies of the project assets transferred to them, before rendering can begin. For efficiency, enable Use cached assets to avoid re-transferring an already copied asset for the next rendering (more details on those options below).
A shared location can be a folder or drive on your workstation with sharing permissions enabled, or it can be on a network server. What's important is that all the computers rendering the scene have access to the project location and can load any required assets. Furthermore, if using mapped network drives in Windows, make sure the same drive letter is used on the workstation and all render slaves to ensure access to the same shared location, unless you are using UNC paths for scene assets.
Once you have your scene in Maya ready to render, turn on Use distributed rendering from the Settings tab of the Maya Render Settings window.
Let's first start with the Settings... button to make sure the nodes are set up in our Maya session.
Enter the name or IP address of the render slaves into the Server name or IP address box in the upper left text box of the Distributed rendering settings window. The default port should be 20207. You can include a description, which is helpful if using IP addresses to help remind you which slave is which.
In case you entered server names instead of IP addresses, you will need to click Resolve servers to convert those entries from names to IP addresses, ensuring that your render client will be able to properly communicate with those machines. This step is not required if you have already entered IP addresses for all your render servers in this list.
Close the window and return to the Render Settings window. The rest of the settings below are optional depending on how you want to render (or work while rendering).
If you prefer to offload the rendering to all the render slaves and leave the resources on your computer more available for other tasks, disable Use local machine, so that your workstation will not help with the rendering process.
If you are using image textures, HDRI files, vray proxy objects or any other kind of external assets, consider enabling Transfer missing assets. This makes local copies on your slaves to ensure that they have access to the project's assets. This can also be used when your project is not saved in a shared location on a network. You can also Use cached assets if you think you need to render more jobs from the same project, and don't want to have to transfer project files every time you render. Cache limits can be set based on time or size to keep the cached assets from piling up and taking up too much hard drive space on the slave machines. However, the commonly preferred workflow is to keep the project and its assets stored on a shared network drive so that renders can take place without having to wait for transfers.
For more details on the render settings for DR, please see the Distributed Rendering Settings page.
- The DR Bucket Render Element is a useful pass to add to your renders when using DR and the Bucket Sampler. This element provides useful information to pinpoint potential issues on specific render servers by providing details on which buckets were completed by certain machines on the farm.
- When cancelling a DR job, it may take some time for the render servers to finish working, and so they might not be immediately available for another render.
- You can add and remove render servers at any time during the rendering itself. Keep in mind that when using the Progressive Sampler, only adding render servers during rendering is supported.