There are 2 ways I know of that can let you use mesh textures that change colour without needing to make new images:
You can use the MaterialManager to make MaterialVariants to create custom Textures under a preset material. These textures are affected by change in the Part / mesh’s colour.
1. Open MaterialManager:
2. Find the Material you want to create a Variant under, select it:
3. Select the ‘+’ icon to create a Variant. The Base Material will be the material you selected. You can change the name if you need to.
4. Import Texture Maps, and tweak any other options you want to, such as Studs Per Tile which changes the size of the texture per stud, or the Physics for custom Friction, etc.
for the sake of speed I will import a random Color map
5. Now you can select your MaterialVariant under any part or FileMesh. When you change the Colour, the texture will change colour too.
Footnote: the Colour Map’s Texture will be offset by the Part / Mesh’s colour, so if you want it to become the same colour as the part, make sure those sections of the Texture are completely white.
SpecialMesh VertexColor (much less variable but an option nonetheless)
A less advanced option is to use a SpecialMesh instead and change the VertexColor (darker must be a float from 0 to 1). Not sure if you can use PBR with those though.
SpecialMesh with VertexColor at 1, 1, 1 (regular appearance):
SpecialMesh with VertexColor at 0.5, 0.5, 0.5 (appears to be shadowed):
SpecialMesh with VertexColor at 5, 5, 5 (appears to be under bright light):
Now, with either of these options, you can use iteration to dynamically change the colour of the Texture!