I have the network render addon setup but it is not working as expected. I have a blend file with a simple cube with a blur composite on it. Using Blender Render it produces the blurred cube. Sending it off to the master to get rendered causes a returned image(s) back to the client that is not blurred.

The master temp exr file is blurred on the server. The tmp exr output files on the slave is blurred, and the temp output.exr file on the client is blurred. However, the final animation/image (regardless of selected format) is not blurred.

in client.py line 446 and a few lines after...

result_path = os.path.join(bpy.path.abspath(netsettings.path), "output.exr")

        folder = os.path.split(result_path)[0]

        f = open(result_path, "wb")



        result = self.begin_result(0, 0, x, y)

This writes out (on client) the output.exr file received from the master (file appears correct[blurred]). But the final output (PNG, AVI,whatever) that the client produces from this is NOT blurred (no composting). From the code I am assuming that self.end_result() loads the output.exr file and handles the integration into whatever format the client is wanting. However, I do not see how to use the composite layer.

The output.exr file has 3 layers (Composite.RGBA,RenderLayer.RGBA, RenderLayer.z). So, again, I am assuming the client is getting the wrong layer off the exr file or only using 1, but do not see where in the code this is happening.

The stdout from blender does show a warning for each output.exr it processes:

warning, channel with no rect set Composite.Combined.A

warning, channel with no rect set Composite.Combined.B

warning, channel with no rect set Composite.Combined.G

warning, channel with no rect set Composite.Combined.R

but the exr file does have a Composite.RenderLayer. Do I need to set something in the self.begin_result call to properly handle the it? set something in the result struc? Somehow set a rect for the Composite layer?

Thanks for any help.


1 Answer 1


Tracking things down led to client.py line 354

class NetworkRenderEngine(bpy.types.RenderEngine):
    bl_idname = 'NET_RENDER'
    bl_label = "Network Render"
    #bl_use_postprocess = False
    bl_use_postprocess = True #turning this to true enabled the blur and layer mask issue (not yet discussed)

I think the network render is a great feature, but could use some optimization. Seems to be a lot faster if you can use a shared directory, placeholders approach with no overwrite, and start multiple instances of blender on multiple machines (pretty fast renders). Cons: no management, oversight, and then have to manually put everything together at the end. Which is why I wanted to use Network Render since it has those features. Might end up needing to custom scripts to maximize speed or integrate multiple calls to background blender render processes (not sure how to do that offhand from the given code)--if anyone has any thoughts on this, please forward them my way.

  • $\begingroup$ have you done any work on this? $\endgroup$ Apr 1, 2017 at 20:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .