Hello all,
While rendering animations I noticed adding render power to the pool of render slaves gets inefficient fairly quickly, up to a point where adding slaves will hardly influence render times, however powerful these slaves may be. The cause is actually fairly simple. Every slave needs to load the scene into its memory and the render host handles the coordination and saving of frames. This means that while adding rendering power which will speed up the final render helps, the "fixed" time defined by the loading and translation of a scene and coordination and saving remain the same. This causes the actual percentage of time in which the renderslaves are actually rendering an image to reduce, and therefore lose efficiency. In addition rendering small or medium sized frames with many cores becomes innefficient as quite alot of core-time is wasted when a couple of cores are finishing the last buckets of a frame.
To counter this diminishing efficiency as you add rendering power I think it would be nice to add a distributed rendering mode. At this moment all slaves work on 1 and the same frame at a time. In the new mode every machine would be assigned a frame by the host. After finishing a frame it would be assigned the next frame listed to be rendered. This way every scene-state/frame has to be loaded and translated only once for a frame instead of the number of slaves working on it, in addition the slaves would not to wait for one another to finish a frame. If possible every slave would write its own output as well to further reduce dependency on other systems.
I'm very interested to hear if this is possible or not as this could shave off valuable render time, especially when working on animations.
While rendering animations I noticed adding render power to the pool of render slaves gets inefficient fairly quickly, up to a point where adding slaves will hardly influence render times, however powerful these slaves may be. The cause is actually fairly simple. Every slave needs to load the scene into its memory and the render host handles the coordination and saving of frames. This means that while adding rendering power which will speed up the final render helps, the "fixed" time defined by the loading and translation of a scene and coordination and saving remain the same. This causes the actual percentage of time in which the renderslaves are actually rendering an image to reduce, and therefore lose efficiency. In addition rendering small or medium sized frames with many cores becomes innefficient as quite alot of core-time is wasted when a couple of cores are finishing the last buckets of a frame.
To counter this diminishing efficiency as you add rendering power I think it would be nice to add a distributed rendering mode. At this moment all slaves work on 1 and the same frame at a time. In the new mode every machine would be assigned a frame by the host. After finishing a frame it would be assigned the next frame listed to be rendered. This way every scene-state/frame has to be loaded and translated only once for a frame instead of the number of slaves working on it, in addition the slaves would not to wait for one another to finish a frame. If possible every slave would write its own output as well to further reduce dependency on other systems.
I'm very interested to hear if this is possible or not as this could shave off valuable render time, especially when working on animations.
Comment