Documentation for versions 0.3.X - 0.4.X
Minimum System Requirements
Each computer you use with Crowdrender needs to also be able to run the hosting application. Currently that is Blender. You can find minimum hardware requirements and supported Operating systems for Blender at this link.
For V0.3.0 the current supported versions of Blender are 2.83 through to 2.92. No compatibility is guaranteed beyond this, check our downloads page for release notes and new versions though :).
Crowdrender supports the same OS types as Blender, Windows 10, 8.1 and 7, MacOS and Linux
Some extra requirements beyond those needed to run Blender are;
More than 1 computer! Each one needs to be able to run Blender
A network that each computer can connect to, 100Mbps minimum, 1Gbps recommended
A NAS (Network Attached Storage) is recommended if you intend to use lots of textures, external simulation caches
Please note, each computer MUST run the SAME version of both Crowdrender and Blender
Sufficient free disk space on both your master/client and render nodes, you will need enough space to store a copy of your blend file, plus all rendered frames. Frames can add up really quickly, for e.g. a 1080P frame can be 100MB on disk since Crowdrender uses the openEXR format for transferring rendered images to your master/client node. This means 250 frames will require 25 GB of space!
Master or Client and Render nodes
Those new to network rendering or distributed rendering, as its sometimes called, would benefit from learning a few naming conventions used throughout these docs :)
Usually you will work on one computer, and render on many others. The computer you work from we refer to as either the master or client. The computers you use to do the render are usually referred to as render nodes, or where its obvious that there will be no confusion, nodes for short.
Crowdrender allows for rendering on every node, including the master or client. We refer to this as the local machine. You can see the controls for this 'special' node below
Local /"This Machine" is literally the machine you are seeing this on!
Render nodes are other computers you connect to for using their hardware to render
Installing in Blender
Each computer you wish to use for rendering will need to the Crowdrender addon installed and enabled. Installing is made easy using Blender's addon installation tool. You can find pre-packaged zip files that are compatible with Blender's addon system and you can install our software into Blender using a single click.
Use the "install" button in Blender's addon preferences page as shown below.
Once the addon is installed, you will need to enable it. Its recommended you then save your user preferences for Blender so that the addon will start automatically.
Crowdrender also has docker containers available for headless rendering, you can find these on our GitHub site along with documentation for setting them up to run on headless servers. They come with drivers for Nvidia GPUs so you can use multi-GPU servers.
Configuring your network
Your network is at the heart of any distributed or network rendering solution. So it is worth paying some attention to, even though most of the time, Crowdrender should work without needing to change settngs in your switch or router.
Connecting your computers to a network
Each of your computers should be connected to the same physical or wifi network. Make sure each computer is either plugged into the same switch/router, or is connected to the same wireless access point. You can ensure that they are by finding their IP address and then running a ping command. If ping works between two machines then you have proved there is a viable way to connect the two computers.
With most home or office networks, each computer gets their IP or network address assigned automatically, if you're new to network administration, its best to let each computer get its IP address this way.
Keep it simple, the best configurations have the fewest variables, so if you can, stick to just having one router or switch that all computers are connected to, either via a cable, or wirelessly. Once you start introducing more equipment, like extra routers, it becomes more likely that you will run into issues with addressing and have to troubleshoot why computers can't talk to each other.
If you have firewalls running on your computers, you will need to configure them to allow Blender to listen for incoming traffic. For windows and mac, usually this is made easier with a pop-up asking for authorisation to make the necessary changes, however, if you are using linux, you will most likely have to configure your firewall manually. Also, you may need to point your IT admin to this page in order for them to allow Crowdrender to work if you can't make these changes yourself.
The required firewall settings are;
Application - Blender,
Protocol - TCP,
Permission - allow traffic in on ports 9669-9694
The above settings are the most restrictive, you can actually let blender listen on all TCP ports, but, this is unnecessary for Crowdrender to work. Please remember, having a firewall enabled without making sure blender has the right permissions/rules in your firewall will mean that Crowdrender will not work.
Configuring Projects for rendering
External Assets - Packing
Before launching into trying to render, first assess if you are using any external assets such as;
Textures or other image data that is in a separate file to your project's blend file
Simulation data, usually called a cache
Other blend files that have been linked to your current project
All such data is not inside the blend file you are working with, unless you explicitly pack it. Some data is not able to be packed at all, such as image sequences or video textures. Check the documentation for Blender for more information about packing assets.
Packing data is usually the quickest way to ensure that all the data needed to render correctly is in the blend file before you start using Crowdrender. You should pack all external data you need to render into your blend file before you start to use the project with Crowdrender.
If you've already started using the addon with a project and then pack afterwards, please see the "Setting Up to Render" section, which covers resyncing your render nodes after you have made changes to your scene.
External Assets - When you can't pack, or don't want to
Sometimes its impossible or impractical to pack all external assets into your blend files. In this case you may wish to share those assets from a location on your network that all your computers can access.
Sharing assets has some advantages and disadvantages. When you host assets on a shared drive or from a server, you can update the data instantly for every computer that will render, simply by saving the changes to the shared location. This makes managing changes you make simple. For larger projects, with many assets, this makes the most sense as the ease of updating different parts of the scene far outweighs the performance gain of packing all the assets into the blend file.
The disadvantages are speed and setup costs. It typically costs more to setup in terms of time, but also money. Since the data you need to render is served across your network at render time, you may wish to upgrade your network so that the data is served quickly. You may also have to invest in a NAS (Network Attached Storage) or a powerful file server. The more computers you have rendering, and the more data is involved, the more expensive this method is.
Configuration for sharing assets is also not as easy as just packing, setup must be done carefully. The basic principle for sharing assets successfully in Blender is to note that the path to the asset is stored in Blender as a string, it is not changed automatically, so you must make sure if you setup a mapped drive it has the same path on every computer, for example;
Lets say that S:\ is the letter you use for the mapped drive on your main computer where you work, the master or client computer as we refer to it. You MUST make sure that each computer uses the same drive letter when mapping the same network shared folder on each computer.
If you use a different letter, Blender will not be able to find that network folder.
Also, you will find that this makes it impossible to mix linux, macos and windows with this technique since unix-like operating systems use a different syntax for their file paths. There are workarounds for this, but this is considered outside the scope of this documentation.
Setting Up to Render
Assuming that you have the same version of Blender and Crowdrender installed on both your master/client node, and also on each render node, you can now render.
This step may sound obvious, but sometimes it trips up devs, so you've been warned :). You will need to start blender on each computer. The Crowdrender addon also needs to be running, it is not enough for it to just be enabled.
To check if the addon is actually running on each node, you can do one of two things, either inspect each computer manually, or use your cloud account (to use the cloud account, each node needs to be logged in to your account). Nodes that are ready to connect, sync and render will be shown in bold in your user interface. Otherwise, make sure each computer shows the crowdrender panel as shown below.
This node is ready to connect
nodes that are grey are either logged out or not ready to be used
If you don't see something similar to the image above, you may need to troubleshoot.
Connecting, Syncing and Rendering
With all your nodes running properly, you can now start to connect, sync and render. These steps are sequential, you typically connect first, then crowdrender automatically synchronises the data on your master/client node with all your render nodes. Synchronisation usually involves sending some data from the master/client node to the render nodes. You must make sure your render nodes are in the 'synced' state for them to be able to render.
Adding a render node
To render on more than one computer, you'll need to first add them to your scene as render nodes. There are two ways render nodes can be added. The first is simple, you just press the "+" button (See below). This creates a new, unconnected render node with no name. You can then rename the node, which, if you like things to be easy, we recommend using the render nodes' host name. Otherwise you can use a nick name, but this means you must supply that node's IP address before you can use it.
Press this to add a new node
The recommended way to add render nodes is to make sure they are logged into your cloud account. To log a node into your cloud account, simply check the box "Open Cloud Rendering Panel", which will show the login section of the Crowdrender panel. You use your User name and Password for the https://discovery.crowd-render.com/login part of our website which is the cloud account you download the addon from.
Once a render node is logged into your cloud account, you will see it appear in bold in the list on your master/client node. This usually takes no more than 20 seconds, often less. Adding nodes this way is simple as you will not have to save your scene or startup file to make them appear the next time you start Blender.
!IMPORTANT! If you are using computers in a publicly accessible space, always logout of your cloud account in the addon before leaving. Logging out ensures no one else will have access to your account from Blender on that computer.
This render node is logged in to the same cloud account
Pressing the chain link icon next to a node in the crowdrender panel will attempt a connection to that node. This honestly is a lot easier if you log each computer into your cloud account as you'll be able to see each node that is ready to connect in bold, and you won't have to guess its host name which is important as you're about to find out.
When you press connect, Crowdrender does a check to try and lookup the IP address of that node using the name you see in the list of nodes in Blender. If you've named the node with the same name as that node's host name then this usually succeeds and you'll see the IP address automatically populated in a pop-up (see the screen shot above).
The pop-up can take several seconds and sometimes even longer to complete because it is looking up the name you entered (this is especially so if you're doing this lookup on every node in your list if you chose to connect all nodes). If you entered something that isn't a host name for your network, then the lookup will take longer.
There are valid reasons why you might want to avoid using the host name as the name of the node. If successful, the lookup overwrites the IP address that was saved, so you may want to enter a nick name and then manually enter a different address if the automatic lookup delivers an IP address that isn't usable or the wrong one for your needs if you have multiple networks. You can easily create a new node and name it as you please by clicking the "+" button near the bottom of the Crowdrender panel.
Basically this means that the node you wanted to connect to, simply failed to respond within thirty seconds. Checking that you have the nodes running Blender and Crowdrender, that there haven't been any errors reported, and that your network is still up and working for other applications like the ping command, or file sharing, can help track down where the problem is.
This process involves making sure all the nodes that will render have the same data as your master/client node. It is important to note that Crowdrender ONLY synchronises your blend file and not other external files (see configuring projects for rendering above). If you have external files, please ensure you have them either packed or shared across your network.
Once a node is successfully connected, synchronisation is done automatically. The render node will first check if it already has a saved copy of your project on its disk. If it does, the file is loaded and checked to see if its data is still the same. If there is no file, or the data is different, the node will request the file be transferred to it again. This process is automated and the time it takes depends on the network speed and size of the file, as well as how many other nodes or processes are uploading or using the same network. You can synchronise multiple nodes at once, there's no need to do this one at a time.
You can re-upload your blend file at any time, so long as the nodes you wish to resynchronise are connected. You can either resynchronise all your nodes or just one node, depending on your needs.
To resync all your nodes, press the large "resync" button in the Crowdrender panel in Blender as shown above. To resynchronise a particular node only, click the gear icon and then click the rotating arrows to resynchronise just that one node. See the image below for what this looks like.
Rendering - Basics
New User Interface Changes in V0.3.0
With the new UI updates for V0.3.0, we have listened to your feedback, or at least tried to! To render using Crowdrender you must first ensure that the 'Crowdrender" engine is selected.
Select Crowdrender from the render engine drop down menu
Choosing which render engine Crowdrender will use
Before rendering a frame, you should make sure that you have chosen the correct engine to render with. By default, Crowdrender will select Cycles, should you want to render with something else, make sure you change the engine selected in the Crowdrender panel as shown below.
Select the engine you want Crowdrender to use
With the Crowdrender render engine selected, you can now use F12 for rendering stills, or Ctrl-F12 for rendering animations, just as you would normally when using the Cycles or Eevee engines.
Render Hot keys
There are render hot keys assigned to make it quick to switch to Crowdrender and render if you need to. Just press Alt-F12 for rendering a still or Shift-Alt-F12 to render your animation with Crowdrender without having to manually switch Blender's render engine selection manually. It will save you a teensy bit of time, but it does help if you're doing lots of preview renders in between using Cycle's rendered viewport.
You can also edit the key bindings for these hot keys if you prefer to use some other combination. You can find them easily enough in Blender's preferences (see the screen shot below).
Currently you cannot use multiple nodes to accelerate view port rendering. This is something we are keen to exploit in the future though, for now, please make sure, if you can't render in your viewport, that you switch back your render engine to cycles or Eevee.
You also won't be able to edit shaders whilst Crowdrender is the selected engine. This means you will need to edit shaders with Blender's render engine set appropriately, i.e. not to Crowdrender.
Baking in cycles is currently not supported.
Multiple sessions of Blender on your master/client node are not supported. If you require to run more than one session of blender at a time, please disable the addon in your Blender preferences and save this setup as your preferred preferences configuration. To render with Crowdrender, you will then need to open Blender, with your project to be rendered, and enable, then start the Crowdrender addon in that session only.
Any other sessions of Blender must NOT be running the addon.
Performance Considerations and tweaks
Crowdrender uses the Blender application in background mode in order to render. This means Crowdrender will take slightly longer to start rendering than if you were using Blender by itself because a new process has to start, and the blend file be loaded. Larger blend files increase this delay, however it is usually very small compared to render times overall.
Rendering on the local machine will require Crowdrender to make a temporary copy of the blend file on your hard drive. This introduces extra delay in starting the render. This is increased if you use Blender's file compression as the file has to be compressed as it is saved. This step is skipped if you disable rendering on the local machine.
You can disable any render node so it will not participate in the render by clicking the camera icon.
Crowdrender uses tile splitting for rendering, this means that a single frame is split into tiles and each tile is rendered on a different node. By default, Crowdrender uses an automatic method to determine how much of the total image area each tile should be for optimal render times. The current method will assign equal area to each node that is synced on the first frame rendered for the current session of Blender. If you add a new node, that node will initially get a very small tile, only one pixel wide, to get a sample of how many samples per pixel that node can do.
Open the load balancing menu here
It is recommended to use automatic load balancing for animations, and manual for single frames. It is also recommended that you carry out a test render to test the load balancing before you start potentially long renders. A test render should be done at 100% resolution, but a lower sample count. Typically only 30 samples are needed to give you an idea of how well balanced the assigned screen areas are.
Set the amount of screen area for each render node here, 0 = none, 1.0 = the whole image
Manual mode allows you to edit how much screen area each node will be given. This can be used to tune single frame renders as the automatic mode will usually take up to 25 rendered frames to balance.
Compression Type for Tile Images
Unlike rendering on just one machine, how fast a render completes depends on how long it takes all the tiles for a frame to make it from the render nodes, to the master/client node. There are many factors that influence this, but the main ones are
the available bandwidth of your network, and;
the size of the image tile; and
how many passes and layers are enabled; and
the compression algorithm used
The tiles can be quite large, 100MB is not uncommon for 1080p format frames, and this can be even larger. If you are previewing frames that you won't be keeping or using in a compositor until later, you can reduce the quality of these tiles, and save time, this might be desirable if you want to render a sequence quickly for debugging or showing your producer/boss or enthusiastic followers on social media :).
You can choose from the full range of open exr compression formats available to you in Blender. The screenshot below shows where in our panel you can change the setting. By default, it is set to ZIPS, which is a lossless compression format. You can choose others, like either DWAA (Dream Works Animation A) or pixr24 (Pixar). Both of these are lossy, meaning some colour information will be lost. However for previews, this is hardly noticeable, and the size reduction of pixr24 is nearly a factor of ten times!!
NOTE! This setting is actually the same setting that Blender uses for the compression format for its own output. If you change this setting, either in Blender's render properties output tab, or in the Crowdrender panel, you will be changing it for both settings!
You can choose the type of compression used on image tiles here, NOTE, this changes the compression type used on Blender's file output settings, they are the same setting!!
What to Expect Performance wise
You can expect performance to vary depending on what is in your scene. If you have a blank background and a complex model either centred or aligned with the rule of thirds composition guides, you will find that Crowdrender will take longer to automatically balance and that when apparently balanced, the render times can fluctuate quite a lot.
This is an artefact of the predictive method of load balancing. FYI, we're going to be replacing this system with a frame splitting method soon which will not suffer from such fluctuations frame to frame. For the time being, generally we find that for a scene that does have more or less the same amount of stuff visible throughout the frame, we get close to linear speed ups for adding nodes with the same hardware. That is if you add two computers, you see almost a halving of the render time.
The reason we can't quite get to perfect linear scaling, where rendering on two identical systems would perfectly halve the render time is due to overheads. When any distributed rendering system attempts to render, there are parts of the render that cannot be sped up by splitting the task over more computers. Loading the scene, for examples, takes the same amount of time, since each node has to load the scene. There are many steps like this before the computer will start to draw pixels that cannot be sped up and these reduce the scaling of speed in a render farm.
Crowdrender will get better though :) we're upgrading our system to do something similar to Blender's tile stealing for single frame renders, and introducing frame splitting (where each computer will render a batch of frames, rathr than tiles) for animations. This will greatly increase Crowdrender's efficiency and speed. If you'd like to support this, check out https://www.crowd-render.com/crowdfunding
Rendering - Cycles, Devices and Passes Support
Crowdrender integrates quite tightly with Blender's cycles engine, for example, all of the render passes that Cycles has, Crowdrender can support, even AOVs and debug passes. In fact, if you have setup the layers and passes you want in cycles already, you can simply switch your scene to using Crowdrender. Our addon uses the same settings, there's no need to reconfigure anything.
Cycles Render Devices
When it comes to render devices, however, that's a different story. Cycles has always had a somewhat odd layout in that the render devices, CPU, CUDA, OPTIX and OPENCL, are all chosen from Blender's preferences, where as whether or not you render on the CPU or GPU is directly visible in the render properties panel.
In Crowdrender we thought we'd put everything in one place. If you open the settings panel for a render node, you can choose both the render device and which of them are enabled. As you can see in the screenshot above, CUDA has been chosen and every device enabled, both CPU and GPU.
Click the gear icon to open a node's settings panel
Select the type of cycles device here, You can then toggle devices on/off for rendering
Render Tile size
If you desire, you can change the size of the render tiles used by cycles when it is rendering. You can achieve better performance if you size your tiles appropriately. You can override the size used in the scene by entering a non-zero value, larger than 8 pixels. Tip, CPUs like smaller tiles, usually around 10-30 pixels ish. GPUs do reasonably well from 30 pixels upwards, and like 100+ pixels, but be careful how large you go, experiment first before committing to an all night render :)
When using hybrid rendering, be aware that your CPU will be able to grab many more tiles than your GPU. This can lead to the slower CPU rendered tiles taking ages and the GPU idle once it has rendered all the remaining tiles the CPU didn't grab. Newer versions of Blender are said to be using a feature called tile stealing to prevent this, for now though, please make sure that you are aware of this before you start rendering, with Crowdrender or otherwise as it can cause quite slow renders, you may be better off just using the GPU in this case.
Click the gear icon to open a node's settings panel
You can change the tile size that cycles uses here.
When rendering using the CPU, you may wish to not use all the threads the node has available. If you would like to set a custom number of threads, change the mode to "Fixed" and then type how many threads you will allow Blender to use in the box below.
Click the gear icon to open a node's settings panel
Change the mode and number of threads the CPU is allowed to use here