private WorkingTexture GenerateMipmap(WorkingTexture source) { int sx = Mathf.Max(source.Width >> 1, 1); int sy = Mathf.Max(source.Height >> 1, 1); WorkingTexture mipmap = new WorkingTexture(Allocator.Persistent, source.Format, sx, sy, source.Linear); mipmap.Name = source.Name; for (int y = 0; y < sy; ++y) { for (int x = 0; x < sx; ++x) { Color color = new Color(); int x1 = Mathf.Min(x * 2 + 0, source.Width - 1); int x2 = Mathf.Min(x * 2 + 1, source.Width - 1); int y1 = Mathf.Min(y * 2 + 0, source.Height - 1); int y2 = Mathf.Min(y * 2 + 1, source.Height - 1); color += source.GetPixel(x1, y1); color += source.GetPixel(x1, y2); color += source.GetPixel(x2, y1); color += source.GetPixel(x2, y2); color /= 4; mipmap.SetPixel(x, y, color); } } return(mipmap); }
private void RemapTexture(WorkingTexture source, Color min, Color max) { for (int y = 0; y < source.Height; ++y) { for (int x = 0; x < source.Width; ++x) { var color = source.GetPixel(x, y); color = color * max + min; source.SetPixel(x, y, color); } } }
private void ApplyTintColor(WorkingTexture texture, Color tintColor) { for (int ty = 0; ty < texture.Height; ++ty) { for (int tx = 0; tx < texture.Width; ++tx) { Color c = texture.GetPixel(tx, ty); c.r = c.r * tintColor.r; c.g = c.g * tintColor.g; c.b = c.b * tintColor.b; c.a = c.a * tintColor.a; texture.SetPixel(tx, ty, c); } } }