Blender 4.0 is here | we updated our 3d rendering addon to support it
Blender 4.0 and our 3d rendering addon - quick overview
Our 3d rendering addon is designed to speed up rendering for Blender's cycles and eevee engines. Blender 4.0 has just been released, and we've updated our addon and released a new patch revision to support it.
If you've not heard of CrowdRender before, or not had the chance to learn more than a quick summary, we are a group of four people based in Australia, New Zealand and Ukraine. We're all developers and have been using or working with Blender for a long time. We decided to make our addon when we couldn't find a quick and easy way to setup a render farm.
That is essentially what defines our software. Its quick and easy, perhaps not the most feature rich, but certainly we strive to make it very easy to use and we provide support if you get stuck. The addon itself allows you to connect computers together to make a render farm. Technically, our software is classed as render farm software.
A render farm, or in our case our 3d rendering addon, works by sending individual frames of an animation to multiple computers. The resulting images are then combined back into your animation inside Blender in exactly the same way as if you'd just rendered them on one machine without our software, only this happens in less time thanks to the fact you're able to use more computers at once.
We also support rendering single images, in this case we break up the image into tiles and send those tiles to each machine to be rendered, and then the entire image is recombined inside blender, again, just as if it were rendered on one machine (there is a limitation with denoising though, you may notice artifacts along tile boundaries, so its usually recommended to not use denoising, though stay tuned, we're working on a way around this).
What changed to support Blender 4.0?
It was actually the most minor change you could imagine, or at least, we had the impression that 4.0 was a going to be a headache. Honestly though in terms of Blender's python API, the biggest issue was the removal of one of the shader nodes, the Glossy and Anisotropic shaders now being combined meant that we needed to update our scripts that synchronise blend file data.
Our RTX2070 series cards no longer supported?? 😱😱
We fired up our test workstation to make sure our addon was working well with Blender 4.0, only to find that Blender refused to use our RTX2070 Super card with the OptiX render device. Big no bueno ☹️
Needless to say this was a heart stopping moment 💔 ☹️had we just witness our expensive workstation being obsoleted? The error message suggests that our card either has a driver version that is old (current drivers for our card at the time of writing are at 546), or that the compute capability is too low.
As you can see from the chart below, a RTX2070 Super has compute capability 7.5, in fact, most modern cards are well above the minimum spec Blender requires. I'd also recently updated the drivers to 546, so in theory the card should be well within the required specs for the compute capability and drivers.
Nothing in the Blender 4.0 release notes...
I did a quick check to see if there was any mention of changes to support in Blender 4.0s release notes for cycles and there was nothing. There was also no mention on devtalk.blender.org and also nothing I could find about others complaining about their cards not working.
So it seemed like it was just me having issues. Which was puzzling. Perhaps it was a bug? But that didn't make sense either, a bug would have surely affected others, and Blender is downloaded by literally over a million people per release, someone else would surely have noticed.
Check your drivers!! ⚠️⚠️
I checked the drivers, despite having updated them to 546 recently, and blow me down, the drivers had been rolled back to 456! There was no warning that this had happened, other than Blender refusing to use the card for OptiX. The only thing I can put this down to was that I recently upgraded to windows 11 and a lot of updates had been carried out since then.
Once I installed the latest drivers from Nvidia, rebooted, and started Blender, the card was once again able to be used for OptiX!!
In Conclusion 🤔
Always check the minimum requirements, and check that your hardware, plus drivers, meet them! Also beware the windows can silently roll back drivers on you, without asking you, and this can throw you off the scent of the real problem.
There is a thread on answers.microsoft that provides a way of preventing this kind of rollback, but I've not tested that.
Utility Scripts 📜🪛
We've bundled two utility scripts with V0.6.5. These two scripts are to help with installing and using the addon with machines that aren't able, or its awkward to run a graphical user interface. These scripts solve two important problems when installing or running on a computer without a UI.
Installing the addon's dependencies
The addon now has a two step install process. First the addon is installed in Blender using the "Install" button in Blender's preferences > addon section. Then you need to install the dependencies, which used to be bundled with the addon, but are now installed for your specific machine. If you are able to run Blender's graphical interface, then you can simply press a button when the addon prompts you, nice and easy.
If you're working with a server, or a machine that doesn't have a display (and you can't or don't want to run a remote desktop), then installation can be a pain, you can do it by using Blender's CLI (Command Line Interface) by executing...
blender -b --python-console
Which will launch a python blender's python interpreter. You can then install the addon and dependencies like this;
>>>import bpy # imports blender's python module >>>bpy.ops.preferences.addon_install(filepath=<path to the addon>) >>>bpy.ops.preferences.addon_enable(module="crowdrender") >>>bpy.ops.wm.save_userpref() >>>bpy.ops.crowdrender.install_deps() # installs our dependencies >>>import crowdrender >>>from crowdrender.bootstrap import persistent >>>persistent.update_persistent_files(Path(crowdrender.crowdrender_path))
Or you can run the script that is bundled with V0.6.5, which pretty much runs the same commands.
blender -b -P <path to headless_install.py script> -- --file_path <path to addon zip file>
This script is located inside the addon's zip file that you download from our website.
Extract the script first before you run it!
Running a headless server
You can use our addon on a computer without needing to have Blender's interface visible. Blender allows you to run it in background mode and we use this to start a server on each machine the addon runs on. This server responds when you request to connect to that computer.
Normally this server is started automatically when you open Blender. However, you can just run the server without running Blender's interface, and, on servers without a display, this is exactly what you want/need.
The process to run such a server has been documented before in our docs section, but I'll repeat it here as we've changed it a bit;
blender -b -noaudio --factory-startup -P <path to installed addon directory>/bootstrap/blender_process.py -- --type server_interface --addon-dir <path to crowdrender addon folder>
We've bundled a script that does this for you. However, it only works on windows, those of the linux or macOS affiliations will need to wait a bit longer.
Similar to the install script, the server start script is located inside the zip file you download from our website.
If executed without any arguments, the script will find the most recent/highest version of Blender that is installed, and then start a server. You can of course provide it with a single argument like this;
>server_start.bat "C:\Program Files\Blender Foundation\Blender 3.6\blender.exe"
This overrides the search for the latest version and runs the blender executable you provide, in the example above, this would be Blender 3.6, when you run the script, you should see something similar to the following output;
>bootstrap\server_start.bat "Using Blender 4.0.0" Blender 4.0.0 (hash 878f71061b8e built 2023-11-14 01:20:37) Using the currently configured auth token. Setting the access key to: "" Using the host's hardware uuid. Persistence is set to True
Once you see the server has started, you should be able to connect to it from your main/client computer.
You can get access to V0.6.5 through our website, just got to our downloads page, access requires a paid subscription. If you create a new annual subscription, you can get Creature Kitbash bundled with ongoing access to our addon.
Cheerio till next time 🥰
To everyone supporting our project, using it and providing feedback, many, many thanks! Stay tuned for more updates by subscribing to our website, which you can do here.