How to override material color at render time

I have a bunch of objects that are animating using a custom shader that changes the vertex positions using a texture.
I need to also render a second image of the same animation but using a different colour for the material.

If the objects weren’t animating I can setup a second camera and give it a different forward renderer asset with an override material. But in that case every object is given the same material and in my case every object is animated using it’s own texture map.

How can I create a pass that keeps the vertex fragment but overrides the shading fragment only?

Is it possible in URP or do I need to switch to a different pipeline entirely?

It sounds like what you want to do is adjust the color tint property of the material yeah?
If so you’ll want to simply do that via the material property block Unity - Scripting API: MaterialPropertyBlock

If you only want this for specific gameobjects, you can get access to the renderer and then .material - however if you want to change it once for ALL objects using that material, you can change this via the .sharedMaterial property of the renderer. This will then affect all objects using that material.

I would but doing that inside a render pass seemed highly inefficient.

What I’ve ended up with at the moment is a duplicate set of objects with the colour changed and then having 2 renderers that render different layers. The first material objects are on one layer and the second on another.