La forma en que haría esto se basa en los mapas de textura que está aplicando a las unidades. Para la mayoría de las cosas, tendrá algunas regiones que deben teñirse y otras que no. Entonces, por ejemplo, es posible que tenga un tanque normal, pero solo desea cambiar el color de algunas banderas.
Si pinta la textura como si las regiones coloreadas fueran en escala de grises, puede usar el canal alfa para designar qué regiones deben colorearse.
Entonces, en su sombreador, podría ir (de la manera más simple):
float3 finalColor;
if (colorFromTex.a > 0)
finalColor = colorFromTex.rgb;
else
finalColor = colorFromTex.rgb*myTintColor.rgb;
Sin embargo, eso no es óptimo, ya que tendrás una transición difícil y tendrás una rama en tu sombreador. En cambio, es mejor ir:
float3 finalColor = lerp(colorFromTex.rgb,
colorFromTex.rgb*myTintColor.rgb, colorFromTex.a);
Error 1 Missing asset "C:\Users\Kai\AppData\Local\Temp\fbx.shader.temp.1064.2756\ReplaceColor.fx"
. No entiendo cómo puedo hacer eso correcto.