public static string GetDescription(this ComponentMask value) { string result = string.Empty; result += (value.HasFlag(ComponentMask.X)) ? "x" : " "; result += (value.HasFlag(ComponentMask.Y)) ? "y" : " "; result += (value.HasFlag(ComponentMask.Z)) ? "z" : " "; result += (value.HasFlag(ComponentMask.W)) ? "w" : " "; return(result); }
public void WriteMaskedValue(Number4 value, ComponentMask mask) { if (mask.HasFlag(ComponentMask.X)) { Number0 = value.Number0; } if (mask.HasFlag(ComponentMask.Y)) { Number1 = value.Number1; } if (mask.HasFlag(ComponentMask.Z)) { Number2 = value.Number2; } if (mask.HasFlag(ComponentMask.W)) { Number3 = value.Number3; } }
public Number GetMaskedNumber(ComponentMask mask) { if (mask.HasFlag(ComponentMask.X)) { return(Number0); } if (mask.HasFlag(ComponentMask.Y)) { return(Number1); } if (mask.HasFlag(ComponentMask.Z)) { return(Number2); } if (mask.HasFlag(ComponentMask.W)) { return(Number3); } throw new ArgumentOutOfRangeException("mask"); }
public static string GetDescription(this ComponentMask value) { string result = string.Empty; if (value.HasFlag(ComponentMask.X)) { result += "x"; } if (value.HasFlag(ComponentMask.Y)) { result += "y"; } if (value.HasFlag(ComponentMask.Z)) { result += "z"; } if (value.HasFlag(ComponentMask.W)) { result += "w"; } return(result); }
public static int GetNumSwizzleElementsWithMask(this Operand operand, ComponentMask mask) { switch (operand.OperandType) { case OperandType.InputThreadIDInGroupFlattened: return(1); case OperandType.InputThreadIDInGroup: case OperandType.InputThreadID: case OperandType.InputThreadGroupID: return(operand.NumComponents); case OperandType.Immediate32: case OperandType.Immediate64: case OperandType.OutputDepthGreaterEqual: case OperandType.OutputDepthLessEqual: case OperandType.OutputDepth: // Translate numComponents into bitmask // 1 -> 1, 2 -> 3, 3 -> 7 and 4 -> 15 ComponentMask compMask = (ComponentMask)(1 << operand.NumComponents) - 1; compMask &= mask; return(compMask.GetNumberOfFlagsSet()); } int count = 0; if (operand.NumComponents != 1) { if (operand.SelectionMode == Operand4ComponentSelectionMode.Mask) { var compMask = operand.ComponentMask & mask; if (compMask == ComponentMask.All) { return(4); } if (compMask.HasFlag(ComponentMask.X)) { count++; } if (compMask.HasFlag(ComponentMask.Y)) { count++; } if (compMask.HasFlag(ComponentMask.Z)) { count++; } if (compMask.HasFlag(ComponentMask.W)) { count++; } } else if (operand.SelectionMode == Operand4ComponentSelectionMode.Swizzle) { for (int i = 0; i < 4; i++) { if (((int)mask & (1 << i)) == 0) { continue; } if (operand.Swizzles[0] == Operand4ComponentName.X) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.Y) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.Z) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.W) { count++; } } } else if (operand.SelectionMode == Operand4ComponentSelectionMode.Select1) { if (operand.Swizzles[0] == Operand4ComponentName.X && mask.HasFlag(ComponentMask.X)) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.Y && mask.HasFlag(ComponentMask.Y)) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.Z && mask.HasFlag(ComponentMask.Z)) { count++; } if (operand.Swizzles[0] == Operand4ComponentName.W && mask.HasFlag(ComponentMask.W)) { count++; } } } if (count == 0) { var compMask = (ComponentMask)((1 << operand.NumComponents) - 1); compMask &= mask; return(compMask.GetNumberOfFlagsSet()); } return(count); }
public void WriteMaskedValue(Number4 value, ComponentMask mask) { if (mask.HasFlag(ComponentMask.X)) Number0 = value.Number0; if (mask.HasFlag(ComponentMask.Y)) Number1 = value.Number1; if (mask.HasFlag(ComponentMask.Z)) Number2 = value.Number2; if (mask.HasFlag(ComponentMask.W)) Number3 = value.Number3; }
public Number GetMaskedNumber(ComponentMask mask) { if (mask.HasFlag(ComponentMask.X)) return Number0; if (mask.HasFlag(ComponentMask.Y)) return Number1; if (mask.HasFlag(ComponentMask.Z)) return Number2; if (mask.HasFlag(ComponentMask.W)) return Number3; throw new ArgumentOutOfRangeException("mask"); }