Render setup

This example covers how to deal with RenderPass, Layers, AOVS and tweaking rendering attributes

Add a RenderPass

with Modifier() as mod:
        rp = mod.createnode('NewRenderPass', type='RenderPass')
        rpl = mod.createnode('bg', type='RenderLayer', parent=rp)

Add a Layer

Let’s a two layers to our new render pass

with Modifier() as mod:
    rplo1 = mod.createnode('output1', type='LayerOut', parent=rpl)
    rplo1.PlugName.set('Diffuse')
    rplo2 = mod.createnode('output2', type='LayerOut', parent=rpl)
    rplo2.PlugName.set('Specular')

Note

LayerOut name should always be outputN (where N is an integer)

Special Layers

Here we will add 3 special layers: Z, Occlusion and Id

with Modifier() as mod:

    # Occlusion
    rploOcc = mod.createnode('output3', type='LayerOut', parent=rpl)
    rploOcc.PlugName.set('Occlusion')
    occNode = rp.loadfile('$(LIBRARY)/attributes/occlusion.gnode')
    rploOcc.Plug.adddependency(occNode[0].Output1.Plug)

    # Z
    rploZ = mod.createnode('output4', type='LayerOut', parent=rpl)
    rploZ.PlugName.set('Z')
    # inputNode will be of type ShaderNodeInput
    inputNode = rp.loadfile('$(LIBRARY)/nodes/input/input.gnode')
    inputNode[0].Mode.set('Depth')
    rploZ.Plug.adddependency(inputNode[0].Output1.Plug)

    # Id
    rploZ = mod.createnode('output5', type='LayerOut', parent=rpl)
    rploZ.PlugName.set('Id')

Note

to use the id pass, don’t forget to add either a dynamic color Plug (named Id) on your geometry nodes or a MaterialOverride in your RenderGraph.

Change render attributes

with Modifier() as mod:

    rp.BrdfSamples.set(64)
    # Width, Height and AspectRatio are connected by default
    rp.Width.disconnectall()
    rp.Height.disconnectall()
    rp.AspectRatio.disconnectall()
    rp.Width.set(640); rp.Height.set(480)

Going further