Units used an 'Uber' shader that I had shared responsibility over, with my main areas of responsibility being functionality, performance, emissive behavior, and army coloring tech.
The Army Color approach was one of a dedicated tint texture authored in a DCC that would define masked areas that would override diffuse, metalness, and smoothness channels. Provided the base diffuse was a neutral grey, this would give us the latitude to recolor a surface to any PBR value via data. Emissive color maps could also optionally be forced to greyscale and have their hue and saturation shifted to a target color with an HSV conversion.
Given the complexity to author, I spent a great deal of time porting the shader behavior to multiple DCC packages, including Substance painter (GLSL + user channel pipeline), Marmoset Toolbag (custom HLSL), and Arnold (in Maya and 3DSMax). I also wrote simple tooling in Unity and worked with our tools engineers to integrate army color features into our unit authoring pipeline tools.
I built a simple tool to quickly iterate on the data and create dozens of bespoke options for us to choose from.
The first external shader was for Substance painter, allowing artists to paint and export masks directly without the need for guesswork.
The Marmoset custom shader included presents for our factions and overrides matching our internal data structure, giving artists direct previewing and prototyping of our shader's expected visuals.
Another implementation included Arnold for artists and external vendors.
Example of the full shader and event based texture swap in action. Note the change in liveries, damage amounts, and PBR surface types.