Tuesday, June 23, 2015

Glimpse of Distributed Bucket Rendering (DBR)


After busy few weeks, recently I have stumbled upon a render that really pushed my workstation to its limit. It had nearly 20 high detailed tree geometry that are animated. With some RnD I found out that rendering time per one frame in acceptable quality is around 40 to 50 mins; in mental ray. With 250 frames to render, the waiting is going to be so long. But then I decided to switch to distributed bucket rendering. Which the idea is to directly use mental ray satellite services installed in my spare workstation and laptop to add their computing power to the total rendering.

Unlike in backburner like software based network rendering, where the 'job' is divided by frames and are sent to each render node to render an one whole frame, distributed bucket rendering gets the 'help' of other render slaves to render a 'bucket' or a small portion of the rendered frame. (The size if this 'bucket' can be manually set in both vray and mentalray.) Setting up a distributed bucket rendering setup is fairly easy. All we have to do is assign static i.p adresses to all the slave nodes and write them down, and put them under ip list in “Distributed Bucket Rendering” rollout in mentalray render settings- processing tab. And its recommended to check use placeholder objects and use mental ray map manager ticks before we hit render. The reason for this can be found here.

So after all, we just have to hit render and if all goes well you will see that render window showing up with number of buckets more than you see when rendering with your hosting workstation. This number of buckets is directly linked with the number of processing units (physical or logical) you have in your workstation and render slaves. So if you are using better hardware, you will end up with high number of buckets rendering your frame. But keep in mind that this method is not the suitable method for all the scenarios. For an example, in a situation with less per frame time, but large amount of frames, this method can even increase your render times. This is because even though your frame is simple, mental ray have to send and receive data/ communicate with its render slaves in order to render out that frame. So in situations like this, methods like backburner become more effective.