示例#1
0
 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);
             }
         }
     }
 }
示例#2
0
        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;
        }