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); }
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); }
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); }
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); }
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); }