Problem or Use Case
Currently the scheme used to divide the frame between machines only takes into account the relative power of the computers taking part in the render. This can have the effect of reducing performance when a scene has complexity only in one part of the screen. The image below shows this situation.
In this scene, where two computers with similar performance (cores in our case) render this scene, one machine will end up with a much higher workload since it will render most (if not all) of the planet with the othe machine only rendering the background.
Take account of the contents of the scene to ensure a balanced load between all machines on every frame. This will give maximum performance regardless of how the scene is composed.
Thanks Stephane, I'll be sure to check it out :D
Such a thing is done in here :
It's not an addon but more a python script to run outside blender.
One big difference from your addon is that the render is done in background. This can be very usefull for connecting to machine without graphical interface (such as clusters for instance). However, you can't sycn between machines and you have to pay the transfert cost of the blend file.
Hi Stephane, both great suggestions! Thanks for sharing your thoughts :D
Moreover to better balance the workload, you can split the render on multiple tiles. Then each machine renders only a tile at the time. When a machine finishes rendering a tile, it search for the next available one until the image is fully rendered.
For machines with different cpu frequencies, you can do a benchmark render of a simple scene once when setting up the addon on each machine. Then the render time of each benchmark can be use to define the workload of each machine.
one solution could be to split the frame in a checker pattern, less scene would cause this problem.