示例#1
0
        public RenderMode(ulong words)
        {
            int[] BlendMode0 = new int[4], BlendMode1 = new int[4];
            Words = words;

            RenderModeFlags flags = (RenderModeFlags)((int)words & ((1 << MODE_NAMES.Length) - 1));

            for (int i = 0; i < BLENDER0_SHIFTS.Length; i++)
            {
                BlendMode0[i] = (int)(words >> BLENDER0_SHIFTS[i]) & 0b11;
            }

            for (int i = 0; i < BLENDER1_SHIFTS.Length; i++)
            {
                BlendMode1[i] = (int)(words >> BLENDER1_SHIFTS[i]) & 0b11;
            }

            HalfMode tmpMode0 = new HalfMode(flags,
                                             (BlenderColorInput)BlendMode0[0],
                                             (BlenderAlphaInput)BlendMode0[1],
                                             (BlenderColorInput)BlendMode0[2],
                                             (BlenderAlphaInput)BlendMode0[3]);

            HalfMode tmpMode1 = new HalfMode(flags,
                                             (BlenderColorInput)BlendMode1[0],
                                             (BlenderAlphaInput)BlendMode1[1],
                                             (BlenderColorInput)BlendMode1[2],
                                             (BlenderAlphaInput)BlendMode1[3]);

            (Mode0, Mode1, Known) = FindModes(tmpMode0, tmpMode1);
        }
示例#2
0
        public RenderMode(BlenderColorInput P0, BlenderAlphaInput A0, BlenderColorInput M0, BlenderAlphaInput B0,
                          BlenderColorInput P1, BlenderAlphaInput A1, BlenderColorInput M1, BlenderAlphaInput B1,
                          RenderModeFlags flags)
        {
            HalfMode tmpMode0 = new HalfMode(flags, P0, A0, M0, B0);
            HalfMode tmpMode1 = new HalfMode(flags, P1, A1, M1, B1);

            (Mode0, Mode1, Known) = FindModes(tmpMode0, tmpMode1);
        }
示例#3
0
 public HalfMode(RenderModeFlags Flags, BlenderColorInput P, BlenderAlphaInput A, BlenderColorInput M, BlenderAlphaInput B)
 {
     this.P     = P;
     this.M     = M;
     this.A     = A;
     this.B     = B;
     this.Flags = Flags;
     Combined   =
         ((int)Flags << 2 * 4) |
         ((int)P << 2 * 3) |
         ((int)A << 2 * 2) |
         ((int)M << 2 * 1) |
         ((int)B << 2 * 0);
 }
示例#4
0
 private static (HalfMode, bool) FindReplacement(HalfMode toReplace, HalfMode otherHalf)
 {
     foreach (var kvp in HalfMode.BASE_MODE_NAMES)
     {
         HalfMode        modeToCheck   = kvp.Key;
         RenderModeFlags combinedFlags = modeToCheck.Flags | otherHalf.Flags;
         if (combinedFlags == otherHalf.Flags)
         {
             if (modeToCheck.P == toReplace.P &&
                 modeToCheck.M == toReplace.M &&
                 modeToCheck.A == toReplace.A &&
                 modeToCheck.B == toReplace.B)
             {
                 return(modeToCheck, true);
             }
         }
     }
     return(toReplace, false);
 }
示例#5
0
        public RenderMode(BlenderColorInput P, BlenderAlphaInput A, BlenderColorInput M, BlenderAlphaInput B, RenderModeFlags flags)
        {
            HalfMode tmpMode0 = new HalfMode(flags, P, A, M, B);
            HalfMode tmpMode1 = new HalfMode(flags, P, A, M, B);

            (Mode0, Mode1, Known) = FindModes(tmpMode0, tmpMode1);
        }