- Home /
Possible to improve quality of UV gradient?
Hello all,
I am trying to create a gradient programmatically and I have done so successfully via this question and answer: http://answers.unity3d.com/questions/51283/is-there-a-way-to-make-a-gradient-material-white-t.html .
I generate the standard Unity Plane via GameObject->Create Other-> Plane. I change the material's shader with one from EZGUI its called Sprite/Vertex Colored, Fast. Then I throw a test script on it that looks like this:
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector2[] meshUV = mesh.uv;
Color[] colors = new Color[meshUV.Length];
for(int index = 0; index < meshUV.Length; index++) {
colors[index] = Color.Lerp(bottom, top, meshUV[index].y);
}
mesh.colors = colors;
This code is executed in the start method.
Now here's where my problem comes in. For a colorful Color Lerp like magenta to cyan it works fine. Actually I would say it works perfectly! Here's an image to prove that: http://i.imgur.com/WPRNuJd.png
But when I try to Lerp from black to a dark grey I get lines on the plane as it gets to the dark grey color. Here's an image to show what I'm talking about. http://i.imgur.com/Ro3diGr.png
I went a little further and tried a gradient black to white and the result was even worse than the black to dark grey. Then I tried black to red and white to red and the quality was just as good as the first image I showed. The code is the exact same so I know its not the code. Which leads me to believe it has to do with the colors black and white. Since they are the inclusion or exclusion or all colors I guess that gives the GPU or maybe the shader a hard time? I'm not exactly sure which is why I'm here asking the question. Is there any way I can fix this or is this just an innate problem with lerping dark colors and how rendering works?
Thank you for your time. -Ethan