EDIT: @DShot92 has shared a script that accomplishes the case presented below:
@DShot92 Has the script available in Blender Market, thank you very much! Great price too!
Hello friends!
In my current project, I noticed a peculiar thing.
Letās say we have just one workstation with 64Gb of main ram, a GPU that has 12Gb of ram and one animation to render with the following specifications:
900 frames long;
Uses 4 Gb of video ram;
takes 30 seconds to render each frame.
Now, what surprised me, to begin with, was the very low resources I was using to render it. Most of the PC wasnāt doing much and didnāt feel particularly tired.
So I experimented with opening a second Blender with the very same file loaded.
Blender A ā renders frames from 0 to 450
Blender B ā renders frames from 450 to 900
Was expecting a major slow down in both Blendersā¦
But such did not happen, it kept rendering each session at 30 seconds by frame! So I had just reduced the rendering times to half.
What do we do when such a thing happens!? We open a 3rd Blender of course!
Blender A ā renders frames from 0 to 300
Blender B ā renders frames from 300 to 600
Blender C ā renders frames from 600 to 900
And guess what, because it still has available video ram 4*3 is effectively 12Gb⦠it kept rendering all 3 sessions at 30 seconds by frame!
Iāve therefore reduced to 1/3 my animation render time!
Now the obvious question is:
Wouldnāt be possible to automate this in the same blender session, like using some kind of virtual sessions, so that instead of taking 30 seconds by frame it would take only 10 seconds by frame?
This would use the same video ram, the full potential of the graphic card, but would save the CPU ram of the need of having 3 Blender windows open.
Makes any sense!?
As long thereās free memory why doesnāt Eevee load more than one frame at a time on an animation!? Seems that it could load 3 just fine in my case!
Hummm! Thanks! But aināt this for multiple machines!?
Iām using the very same workstation, just with 3 Blender open at the same time on it.
⦠My description wasnāt clear, sorry! Iāve improved it a bit now!
You can also use that with multiple Blender instances on the same machine as long as they all point to the directory where your files / placeholders are.
Just on a side note -when- rendering one scene on multiple machinesā¦
Blender does NOT lock a blend file within the OS, so a accidental file save with a change on one of the many machines will be possible. āNormallyā a app and OS will lock the file, so accidental changes cannot happen when a file is opened twice or more.
Thanks for the feedback!
But what surprised me the most was really the fact I could render things 3 times faster on the same computer So⦠why not use all that PC power on the original file!?
Eevee canāt deal with tile render right!?
But couldnāt it process 3 (or more) frames at the same time, as long thereās memory available?
It is a interesting find indeed.
With CPU rendering, Blender would use all available cores and RAM if possible, so a second Blender would be dog slow to render.
Not sure how Eevee is dealing with this on GPU level, but it looks like the VRAM and GPU rendering has āroom to spareā to render all three at once on the GPU.
Yeah, seems that itās exactly that! As long it has Vram it will renderā¦
ā¦but why has the graphic card room for processing all 3 and keeping the same render speed!?
This means that the graphic card (in my case an Nvidia RTX 3060) has a lot of parallel processing power that aināt be used most of the graphic card during a single Eevee render seems to be sleeping what a waste!
By the way, all this is going to be fixed in Eevee Next. Itās a known thing that Eevee doesnāt fully utilize the GPU or multi-threading, hence the rewrite theyāre working on
Yeah, the current Eevee is more of a minimal viable product than a final version. Donāt get me wrong, itās incredible, Iām a huge fan of Eevee. It just has never officially been āfinishedā. I donāt remember the whole story of why Eevee took a back seat to geometry nodes, other than āeverything nodesā is a huge priority for the foundation, but luckily Eevee Next is being actively worked on right now
Eevee wastes a lot of resources and this has been discussed before as well as running multiple instances of Blender to get around this problem. It should be done in some dirty way before Eevee Next to be able to run multiple rendering instances within Blender project with a single click. I think it should be fairly easy to do such an addon. Unfortunately I am not a coder.
For Eevee Next for PC you will have to wait for a very long time. Mac users are probably in a slightly better situation, because Apple is involved in Blender Cycles/Eevee development. Anyway in a meantime multiple instances rendering should be build into current Blender version.
AFAIK, EEVEE never took a backseat, it just that bugfixing issues like the OP mentioned requires a full rewrite, due to the nature of GPU rendering itself. Also fixing and/or adding certain features will require some modern GPUās, and thus, EEVEE next will not be limited to openGL 3.x anymore. Also notice that no render engine of any kind will ever be a finished work, since research is ongoing for several features people want/needs for production use.
GeoNodes, by their nature, is orders of magnitude easier to code than a physically based GPU render engine, so itās not surprising that more developers are on board on this project. Render engines (GPU or not) requires certain knowledge of math, physics, optics and image processing that not every developer has, and for GPU rendering, also requires quite a lot of knowledge of GPU tech, and itās limitations. Thatās probably why thereās only one developer working on EEVEE.
Yeah! There are a lot of people that have old hardware (me included a few months ago ), so thereās always that need to balance features with compatibility!
Meanwhile, Iāll just keep todayās discovered method of opening multiple blenders! I didnāt know this had already been discovered For me, it was a shock!
By the way, no need to set different frame ranges in the different Blender instances. At least I assume thats what Format64 was talking about above. Just uncheck Overwrite and check Placeholder. That way before a frame starts rendering, the (empty) output image is created. Once rendering completes, the (finished) rendered frame replaces the empty file. Since Overwrite isnāt activated, the other Blender instances will skip each frame thatās already being rendered by another instance.
At least thatās how I understand it (and how other software does it)
It is indeed! Iāve used it before for one of the companies I worked for.
We rendered in a render farm of 6 computers if I remember correctly, and that would do exactly what you describe⦠the thing is that if one frame fails, youāll then have an empty image file.
We had a lot of frames failing, so we often ended up with a lot of empty files that we had to delete by hand Thatās why I donāt enjoy that option very much!