Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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;
     }
 }
Esempio n. 3
0
 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");
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
		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;
		}
Esempio n. 7
0
		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");
		}