Eevee renders faster with multiple sessions open on the same PC | Can't it be a feature!?

The word “hack” comes to mind.

as i understand, rasterising is pretty much limited to 1 or 2 cpu cores, so if the animation is light enough to not fully burden the gpu, having more blenders use more of the obscene amount of cpu cores are pc have.

you are still hard limited by the gpu, any monitor like msi afterburner will be able show how much resources are being used. in fact, i have the detachable graph window permanently stationed on the far side of my second monitor.

2 Likes

I use the Nvidia Xserver Settings and Linux mint system monitor to monitor all the resources :slight_smile: also Psensor for the temperature!

Interesting
I have also tried rendering with multiple runs.
I think it depends a lot on the blend file to be rendered.

HW: Ryzen 9 3900X 12core(24thread), Geforce 2080Ti
blend: 400 frame animation (eevee)

  1. Rendered from normal UI
    6 min 12 sec

  2. Comman line render
    blender -E BLENDER_EEVEE -b “test.blend” -s 1 -e 400 -a
    6 min 29 sec (CPU 9% / GPU 30%)

  3. Comman line render in 2 processes

start blender -E BLENDER_EEVEE -b "test.blend" -s 1 -e 200 -a
start blender -E BLENDER_EEVEE -b "test.blend" -s 201 -e 400 -a

4 min 20 sec (CPU 20% / GPU 50%) * after 2 min 40 sec, only one process

  1. Comman line render in 4 processes
    3 min 00 sec ( CPU 36% / GPU 78%)

  2. Comman line render in 8 procceses
    2 min 54 sec (CPU 64% / GPU 80%)

If eevee’s implementation of multi-threaded rendering is still taking time, it might be nice to have this ability to perform multiple renderings in the background.

1 Like

Hello everyone, i actually use a script for myself that does this excact thing.

Render with multiple instances
image

You need to render to image sequence (.mp4 will not work).
Make sure to:

  • uncheck Overwrite
  • check Placeholders

image

On the N panel you can choose a frame range and if the render should start automatically or no.

New blender instances will be launched so they will use current save state of your work.

It works on linux and windows, i have no clue on macos.

Create Render Script

10 Likes

Great test @molmol! Thanks for posting your results!
Yeah! On my job, I mostly work with “light” scenes, on average they take about 3Gb of video ram, and the polygon count is always under 500’000.

WOW! Thank you very much @DShot92! Looks exactly what I was dreaming with!
I’ve downloaded it and I’ll test it tomorrow! :slight_smile:
Will also update the first post with a link to yours.


You my friend are the most awesome person on the planet! And don’t let anyone say otherwise!
This was just SO FAST! :smiley: :exploding_head: :partying_face:

Ahahah Thank you.

I’ve refactored it a bit and added a fast x265 ffmpeg with a slider quality to quickly preview the sequence.

The .mp4 file gets created in the same level as the folder with the images.

2 Likes

I made a script to run multiple blender instances per GPU one time, found it was about optimal for 2 - 4 blender instances per GPU

so for a 4 GPU instance machine running 8 - 16 blender instances would render a lot faster.

1 Like

@DShot92!

I’ve used your render script the entire day at work (I make those publicity videos for cell phone video games, that you surely have seen on social networks) and I’m certifying it for production! :slight_smile: It’s completely stable and deployed many render jobs during the day! I’ll use it for all my render jobs from here on!

Thanks once again, you’re a Pal!
You surely could sell this add-on as everyone wants to save time! Why not place it on Blender Market or Gumroad!? :slight_smile:

1 Like

This script is amazing- and you can easily copy the start and end frames as drivers, to make it even more perfect. That way, you never have to adjust those numbers again :smiley:
2022-05-20 13_34_26-Blender
Great work on this @DShot92 !

1 Like

WOW! Awesome idea @joseph ! :smiley:

1 Like

As you may recall, I’m Windows 10 with the onboard Intel(R) HD Graphics 4600. (I know - bargain basement). :weary:

Will this script do me any good?

It couldn’t hurt to try :sweat_smile: I imagine you’ll run out of VRAM pretty quickly, maybe just 2 instances would work

1 Like

Maybe a button to “Get frame range from scene” would be a nice addition to that, so no need for drivers. Also correctly setting the overwrite and placeholder checks could be automated via a button.

Yes, i was thinking the same.

Not everyone knows about drivers and it could complicate things.

For the overwrite and placeholder toggles is not clear either.
There’s no way to let the user know what happened visually, and they might have troubles after while trying to render manually.

I was thinking of setting them correctly, saving the file, launching the render and setting them off again after.

Need to test

You could also very easily have the start and end frames update automatically in the script, with the depsgraph_update handler. I personally prefer using drivers, but you need one of the two for sure. Having to manually set the frames is super easy to forget, and I would imagine it would generate a lot of user frustration

Thinking more about this, I can’t actually see any good reason to NOT use the scene frame range (which could be accessed via scene.frame_start and scene.frame_end). But IF you want to have a frame range setting in the script, you could have a “Override scene frame range” checkbox (disabled by default), which, once activated, allows you to set a custom range. And about placeholder and overwrite, yeah, ideally those should be automatically set correctly once you send it to render, and set back to whatever it was before when that’s done.

1 Like

Unfortunately I’m getting an error message when running the script:

“C:\Program” could not be found.

Is it possible that the script doesn’t play well with non-English versions of Windows? Or it somehow has problems with the space in the path, because even in German Win10 the folder is called “Program Files”.

EDIT
I found the problem in the generated batch file:

start C:\Program Files\Blender Foundation\Blender 3.1\blender.exe -b C:\scene.blend -s 0 -e 500 -a

should be turned into this

start "" "C:\Program Files\Blender Foundation\Blender 3.1\blender.exe" -b "C:\scene.blend" -s 0 -e 500 -a

That way paths with spaces in their names don’t cause problems. Also I’ve found that you need to add two " in front of the path, because once you use quotes, that first argument defines the name of the console window (or you could use a proper name as well). Like this:

grafik

1 Like