public ColorMapCalculator(ColorMapPrecision precision, Color[] palette, bool[] usedColors, int numColors, System.Action doneCallback) { this.precision = precision; this.palette = palette; this.usedColors = usedColors; this.doneCallback = doneCallback; this.numColors = numColors; progress = 0; pixelProgress = 0; SetupPixelBuffer(); }
public static int GetPrecisionColorsteps(ColorMapPrecision precision) { switch (precision) { case ColorMapPrecision.Low: return 16; case ColorMapPrecision.Medium: return 32; case ColorMapPrecision.High: return 64; case ColorMapPrecision.Overkill: return 128; case ColorMapPrecision.StupidOverkill: return 256; default: return 16; } }
void Reset() { horizontalResolution = 320; verticalResolution = 200; palette = new Color[256]; numberOfColors = 16; usedColors = new bool[256]; colormapPrecision = ColorMapPrecision.Medium; preset = PalettePresets.PresetName.Classic1; strength = 1; autoUpdateColormap = true; ApplyPreset(); UpdateColormap(); }
Texture2D makeColorMap(ColorMapPrecision precision, Color[] palette, bool[] usedColors, int numColors) { Texture2D colormap; float progress; Color32[] pixelBuffer; int colorsteps = 32; int totalPixels = colorsteps * colorsteps * colorsteps; int pixelProgress = 0; //colorsteps = ColormapUtils.GetPrecisionColorsteps(precision); //totalPixels = colorsteps * colorsteps; pixelBuffer = new Color32[totalPixels]; while (true) { if (pixelProgress < totalPixels) { int temp = pixelProgress; int r = temp % colorsteps; temp /= colorsteps; int g = temp % colorsteps; temp /= colorsteps; int b = temp % colorsteps; CalculatePixel(r, g, b, pixelBuffer, pixelProgress, colorsteps, numColors, palette, usedColors); ++pixelProgress; progress = (float)pixelProgress / (float)totalPixels; } else { colormap = new Texture2D(colorsteps, colorsteps * colorsteps, TextureFormat.Alpha8, false); colormap.filterMode = FilterMode.Point; colormap.wrapMode = TextureWrapMode.Clamp; colormap.SetPixels32(pixelBuffer); colormap.Apply(); break; } } return(colormap); }
public static int GetPrecisionColorsteps(ColorMapPrecision precision) { switch (precision) { case ColorMapPrecision.Low: return(16); case ColorMapPrecision.Medium: return(32); case ColorMapPrecision.High: return(64); case ColorMapPrecision.Overkill: return(128); case ColorMapPrecision.StupidOverkill: return(256); default: return(16); } }