Render same model with different material settings on new layer - possible?

I am trying to solve the following problem:

I have several models, each with it’s own material. But all of these materials share a nodegroup. These models are on RenderLayer 1 and Renderlayer 2.

I want to render RenderLayer 1, then change a mix node in the material from 0 to 1, then render RenderLayer 2.

Currently, I can do this through the compositor by manually hitting render on one layer, then manually changing the mix node, and then manually rendering the other layer. But I’m looking for a way to automate it, as I am working with complex projects with many layers and scenes, and I want to be able to batch render via the command line.

I have looked into using a driver on the mix node as a solution, but there doesn’t seem to be any value that changes when a new layer is being rendered, so there’s nothing to drive it.

It should be possible to make a macro script of some sort that will render one layer, change the material, and then render the other. But this won’t work with batch rendering.

So what I’m trying to find out is if there’s some solution that can be implemented either by running a script or as an addon, that could let the renderer change a number that I can then use as a driver within the material. Does anything like this exist? Or can anyone propose an alternate solution?

(Note: I am aware that it’s possible to use instanced models or scenes to solve this problem via a different method, but all of those require a ton of manual setup which gets really time consuming.)

Render layer are quite limited for the moment. You can override all the shaders with a new one on all objects but not change individual settings.
Even if you don’t want that, I recommend you to work with scenes instead of renderlayers.

Yes…

Copy the model on second layer and give it the other material. Than make two render layers. In the first render leyer tell blender to render the layer with first model and exclude the layer with the second model. And vice versa for the second render layer. Output both render layers with compositor.

Take care