October update for our 3d Rendering | Distributed Rendering plugin for Blender
Welcome to the October update for our little 3d rendering | distributed rendering addon project for Blender!! First, oh sh&*t it’s October…🎃🎃 oh wait, no! It’s November 🦃🦃!!, not sure about the rest of you, but this is cray🦞 cray🦞 how fast this year is going.
If you're new to CrowdRender, we're a small group of developers with a big ambition of making a platform and plugin system to let you use the computer power of ANY computer that you can connect to a network. Our Blender addon was first released in 2017 and we're currently doing a major update in preparation for putting the "Crowd" back into what we're doing, but enough stalling, here's what we got done this month!
Now, without further ado, here’s the wrap up of what we got done this month!
V0.6.4 launched - Bug fixes, Check for updates button and supports more platforms/Blender versions
V0.6.5 for Blender 4.0 compatibility - How we're preparing to support Blender 4.0
Progress on V0.7.0 - Progress on the next big update
Discord server in progress - We're moving to Discord and retiring our forum
Docker - Use Docker to make setup easier across many machines and in the cloud
V0.6.4 launched! 🚀🚀
V0.6.4 was launched and made available for Pro and above subscribers, and good news for everyone on the basic tier, you now get V0.6.3. A special thanks to everyone supporting us, it goes without saying that without you, this project would not exist. Highlights for V0.6.4 are
Works on any system that can run Blender 3.0 or above 👍
Has a new ‘check for updates’ button that both downloads and installs new versions 💾
Fixed a bug that prevented removing the addon from windows systems 🐛
The biggest takeaway for those of you using V0.6.4 though is that to install it, you now also need to do a second step to install the addon’s dependencies. This is just a button you click when prompted, you can see this in action here -> New update for CrowdRender!! | V0.6.4
New patch update to support Blender 4.0 🎁
Blender 4.0 had some minor changes to it’s python API that meant our current addon didn’t work. So, we’re creating a patch update to fix this. V0.6.5 will be released once Blender 4.0 becomes the official stable build (which looks like the 14th, and yeah, this news update is being released the 13th, so tomorrow basically!)
If you’re in our CrowdRender slack channel, there’s already a preview of V0.6.5 available if you’d like to try it. This will be officially released as the latest stable build once Blender 4.0 is released, we'll be bumping the free version to V0.4.5 which will support Blender 3.0 (right now it only supports Blender 2.93 and its a bit old to boot).
If you're not yet a supporter of our project, check out the different perks you get and what versions are available here -> https://discovery.crowd-render.com/download
Progress Update for V0.7.0
In one sentence, is fricken huge! This is the largest overhaul of our software we’ve done yet.
Rendering on the local machine is now working for single frames!
Work has commenced on rendering animations
Update coming soon on distributed rendering using multiple computers
In a bit more detail;
October was a pretty huge month, the addon’s core has had some dramatic changes, pretty much a complete re-engineering effort has been undertaken, all driven by the following;
CRESS is coming, but is uses event driven architecture, so V0.7.0 is adopting that
The current architecture is old, and very difficult to modify, so we’ve taken the plunge to do away with it so we can add new features much faster.
The new speed boost feature was going to be very hard to implement unless we made big changes, regardless of the desire to move to EDA
What is Event Driven Architecture?
One way of writing software is to write lines and lines of instruction, one after another in the order you expect the program to run. This will drive you bat shit insane trying to do anything more than a simple script though.
For complex systems like ours, breaking up jobs you want done into little programs that can be called is a nice way to make your life more pleasant. That is what our current architecture is like. Lots of little programs.
One program might want to have another do something, like fetch a file, so there’s a ‘fetch-a-file’ program. The main program wanting the file will call the fetch-a-file program to go do its thing and return whatever is in the file.
This is all well and good, but quite quickly things get out of control if you have to start stringing lots of these interactions together. Let’s imagine now that a new file becomes available, and we’ve written a program to tell others of the changes.
This would be useful if you change a texture file for e.g. and you want all your computers to update to reflect your edits. The little program that scans for these changes runs constantly, but then it finds a change and has to tell all the other potentially interested programs.
This part is hard without events. The little program is just a series of instructions, part of which would be a list of all the programs that are interested and that it should call, simple enough. But, what about new programs that come along? What if we need to update the list? We’ll need to edit the list of ‘interested programs’.
This is where event driven architectures come in. Rather than having to write out a list of all the programs that our little program needs to notify, all programs can publish and subscribe to events that are available throughout our addon. This does two things, 1. It means we no longer have to keep track of who is interested in what all over the place, and 2. none of the programs need to even be aware of each other.
This makes development far less time consuming and less error prone which for you guys means more rapid roll out of new features and fixes, and more stable operation to boot.
Thanks to your feedback, we’re now in the process of setting up a discord server. This will replace the currently old and out of date forum we have on our website which is going to be archived, the posts will be kept for posterity’s sake, but no new accounts are being created and posts will be turned off once we’ve migrated to Discord.
If you need to ask questions in the meantime, the best way is to email us. We'll be giving another update come December as to when we'll officially close the forum for posts and have Discord ready for beta testing.
First, why bother with Docker? Its another thing to learn and you might spend considerable time getting it to work.
Why Docker matters is that using it means you only have to configure your software once, then deploy it everywhere you want to run it, without needing to repeat all the setup work. The more computers you want to run your unique setup on and/or the more software you want to run on them, the more it makes sense to switch to running your setup in a ‘container’. Unless you really enjoy installing Blender and all your supporting software, MULTIPLE times!
Docker is software that lets you run ‘images’ which are deploy-able packages of software and data. A bit like running a virtual machine, images run in self-contained environments called containers that are separate from the host computer’s operating system.
It also allows you to run your setup in the cloud, AWS, Google and Microsoft's cloud services all support docker, so you could have easy access to an ocean of compute when you need it without needing to individually configure each server you start. If your interested, here’s where to start.
First, our images are configured to run Blender (see the repository on GitHub for more details on which versions are available) and support using Nvidia GPUs on linux and windows. Check the repo readme doc for more info on the requirements, especially for windows since support for GPU use in docker is still pretty new on that OS. More than likely you will need to install extra software like the WSL2 (Windows Subsystem for Linux), up to date drivers for your graphics card, and be on either windows 11 or Win10 21H2.
If you just want to pull our pre-built images ...
...and use them without modification, you can do this pretty easily. Assuming you have installed docker and confirmed the docker engine can run, just do ;
docker pull crowdrender/blender-plugin:<tag>
The tags are listed here and for a quick example, you can pull a container supporting Blender 3.6 on Linux by doing;
docker pull crowdrender/blender-plugin:bl_3.6
the same for windows would be;
docker pull crowdrender/blender-plugin:bl_3.6-DockerDesktop
The suffix "-DockerDesktop" is required for running docker on windows since this is what we've been developing with and in all likelihood, is a bit easier than the alternative. If you don't want to install Docker Desktop, you can try running docker using WSL instead.
If you'd like to modify the images, then ...
...on our GitHub page, you’ll find our cr_docker repository. Fork or clone the repository repository which is hosted at https://github.com/crowdrender/cr-docker.git you can modify the Dockerfile or Dockerfile.Cuda for tailoring the images for Linux or Windows respectively (Dockerfile.Cuda is for windows since we are using Nvidia's Cuda base image for compatibility with windows).
That's all for the month of October, promising that we'll be a bit earlier with November's update, which will be hopefully published in early December, not half way through like this time!
If you like what we do and aren't supporting us yet, you can checkout our downloads page where you'll be able to see all the tiers of supporter subscriptions and what perks are available, many thanks!