Question by
icad123 · Jul 26, 2017 at 04:36 PM ·
shadergraphicsbackground
How to reduce gradient banding?
I made a changing gradient background for my mobile game, however there are noticeable banding even though i use 32-bit depth-buffer. How to reduce this?
basically i attach this script to a quad using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Gradient : MonoBehaviour {
public Color[] color = new Color[2];
private static Color[] iColor;
private static Color[] fColor;
public float changeColorTime;
private float timer;
public static Gradient _instance;
private void Awake()
{
if (_instance == null)
{
_instance = this;
}
else
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
}
private void Start()
{
iColor = new Color[]{ color[0],color[1] };
fColor = new Color[] { GenerateColor(), GenerateColor() };
}
void Update()
{
//Just to make the quad follow the camera
transform.position = new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y, transform.position.z);
//change color
timer += Time.deltaTime;
if (timer > changeColorTime)
{
timer = 0f;
for (int i = 0; i < 2; i++)
{
iColor[i] = fColor[i];
fColor[i] = GenerateColor();
}
}
_instance.color[0] = Color.Lerp(iColor[0], fColor[0], timer / changeColorTime);
_instance.color[1] = Color.Lerp(iColor[1], fColor[1], timer / changeColorTime);
MeshFilter thisMeshFilter = GetComponent<MeshFilter>();
thisMeshFilter.mesh.colors = new Color[] { color[0], Color.black, color[1], Color.black };
}
Color GenerateColor(float max=0.6f)
{
float r = UnityEngine.Random.Range(0.05f, max);
float g = UnityEngine.Random.Range(0.05f, max);
float b = UnityEngine.Random.Range(0.05f, max);
Color color = new Color(r, g, b);
return color;
}
}
and i also use this shader
Shader "BackgroundPlaneShader" {
SubShader {
Pass {
ColorMaterial AmbientAndDiffuse
}
}
}
I hope someone can help me, as for the moment, i will try to learn about shader more. also, do tell me if you also have another solution to make a changing gradient background thanks.
note:I'm completely new to shader
Comment