- Home /
Color specific sections of a texture
Hello, everyone.
I have this code, which allows the user to choose the colors of certain sections of the character's clothes. It works by taking a base color-coded texture and replacing the colors in it for the ones the player chooses, but I have a problem.
public void Gen()
{
ShirtColor = MyPicker.corShirt;
ShortsColor = MyPicker.corShort;
SocksColor = MyPicker.corSocks;
DetailColor = MyPicker.corDetail;
int contx = 0;
int conty = 0;
foreach (Color32 pixel in tex1.GetPixels())
{
if (pixel.r < 120 && pixel.g > 100 && pixel.g < 250 && pixel.b > 230)
{
Finaltex.SetPixel(contx, conty, ShirtColor);
}
if (pixel.r < 120 && pixel.g > 140 && pixel.b < 10)
{
Finaltex.SetPixel(contx, conty, ShortsColor);
}
if (pixel.r < 115 && pixel.g < 115 && pixel.b > 140)
{
Finaltex.SetPixel(contx, conty, SocksColor);
}
if (pixel.r > 130 && pixel.g < 90 && pixel.b < 90)
{
Finaltex.SetPixel(contx, conty, DetailColor);
}
if (contx < tex1.width - 1)
{
contx++;
}
else
{
conty++;
contx = 0;
}
}
Rp = MyPicker.R;
Gp = MyPicker.G;
Bp = MyPicker.B;
Finaltex.Apply();
gl.generated = Finaltex;
}
It works, but it's too slow. I only call it once, when the player confirms the color they want, but still, the delay is too uncomfortable in smartphones.
Is there a better way to do this? Can a shader be used for that?(I understand nothing of shaders...) Or maybe a more efficient algorithm instead of checking each pixel?
Answer by DaveA · Feb 07, 2013 at 06:14 PM
Instead of modifying the texture, use a whole different one. Or better yet, separate out the sections that need to be changed into a different material and affect the base color.
Your answer
Follow this Question
Related Questions
Color specific sections of a texture 1 Answer
Unity Standard Shader Detail Albedo x2 Own Colour 0 Answers
Why Does My Scene Do This? 1 Answer
Built in shaders - FX? 1 Answer