We try to get a stack of layers an passes via Movie Render Graph. Currently the biggest challenge is Transparency. Our current approach:
set the visibility of the object we want to render (e.g. Hero object or Environment)
Render (deferred) one layer with post process materials (Normals, depth, … ) and disable Translucency via the show flags
Render (deferred) two more layers with view modes for reflections and detailed ligthing and disable Translucency via the show flags
Now we have 2 issues
how to render all translucent objects to a separate layer ? The challenge here is that these are static mesh components of the Vehicle. We have code to isolate them, but the question is how to execute our custom code on a layer track (I tried to implement it in various nodes via C++ but without any success). Or is there an easier way, to do the reverse we do with the show flag for hiding translucency ?
The Reflection pass is rendered as everything is chrome, how could you reconstruct “correct” reflections in a post step via photoshop or davinci resolve? Or do we need to render it differently?
The Lighting or Detailed lighting pass looks kind of strange, it seems to have some other Information in it, for example some Clearcoat color or also other darker parts.
Unfortunately, the gbuffer does not hold the type of information you are looking for, so you would have to make all that yourself. Like, if you wanted the lighting only pass, you would have to swap materials to generate a clean one. Same with reflection passes.
To isolate the translucent static mesh components you should just be able to use the holdout flag on all the other components of that car. Is that not working for you?
Depending on exactly what type of passes you want, yes, you’ll probably have an easier time in Pathtracer. If you look at the Pathtracer node in Movie Render Graph, you’ll see what’s available out of the box under the Light Components section.
And yes, unfortunately, script nodes are per job, not per layer.
Regarding the passes, would it be possible out of the box when using the path tracer ?
Regarding the Isolate functionality, the issue is not the actual C++ logic, which we have already in place its more about where to execute it. I would like to execute it like a modifier node in one of the layers tracks but script nodes can only be executed globally. I already tried to make a Script node which can be used in the layers track but it will just not execute the script there, I guess since its hard coded what functions will be called.
But for now we just allocate an additional job and isolate the Translucent objects first.