private static void DoTonemapping(Color[] colors, float exposureAdjustment, TonemappingType tonemappingType) { if (exposureAdjustment >= 0f) { if (tonemappingType == TonemappingType.Linear) { for (int i = 0; i < colors.Length; i++) { colors[i] = colors[i].RGBMultiplied(exposureAdjustment); } } else { for (int j = 0; j < colors.Length; j++) { colors[j] = DoTonemapping(colors[j], exposureAdjustment); } } } }
private static Texture2D Update1DSlider(Texture2D tex, int xSize, float const1, float const2, ref float oldConst1, ref float oldConst2, int idx, bool hsvSpace, float scale, float exposureValue, bool forceUpdate, TonemappingType tonemappingType) { if (((tex == null) || (const1 != oldConst1)) || ((const2 != oldConst2) || forceUpdate)) { if (tex == null) { tex = MakeTexture(xSize, 2); } Color[] retval = new Color[xSize * 2]; Color black = Color.black; Color rightGradient = Color.black; switch (idx) { case 0: black = new Color(0f, const1, const2, 1f); rightGradient = new Color(1f, 0f, 0f, 0f); break; case 1: black = new Color(const1, 0f, const2, 1f); rightGradient = new Color(0f, 1f, 0f, 0f); break; case 2: black = new Color(const1, const2, 0f, 1f); rightGradient = new Color(0f, 0f, 1f, 0f); break; case 3: black = new Color(0f, 0f, 0f, 1f); rightGradient = new Color(1f, 1f, 1f, 0f); break; } FillArea(xSize, 2, retval, black, rightGradient, new Color(0f, 0f, 0f, 0f)); if (hsvSpace) { HSVToRGBArray(retval, scale); } else { ScaleColors(retval, scale); } DoTonemapping(retval, exposureValue, tonemappingType); oldConst1 = const1; oldConst2 = const2; tex.SetPixels(retval); tex.Apply(); } return tex; }