Пример #1
0
        public ShaderIOVariable(ShaderIOVariableInterpolation interpolation, ShaderValueType type, string name, IEnumerable<KeyValuePair<string, string>> specialParameters)
            : base(name, specialParameters)
        {
            if (type == null)
                throw new ArgumentNullException("type");

            this.interpolation = interpolation;
            this.type = type;
            if (!type.TryGetBaseType(out baseType))
                throw new ArgumentException("Type of a shader IO variable must have a base type");
        }
Пример #2
0
 public FieldDescriptor(string tag, string name, string define, ShaderValueType type,
                        string semantic = "", string preprocessor = "", StructFieldOptions subscriptOptions = StructFieldOptions.Static)
 {
     this.tag              = tag;
     this.name             = name;
     this.define           = define;
     this.type             = type.ToShaderString();
     this.vectorCount      = type.GetVectorCount();
     this.semantic         = semantic;
     this.preprocessor     = preprocessor;
     this.subscriptOptions = subscriptOptions;
 }
Пример #3
0
        public static int GetVectorCount(this ShaderValueType type)
        {
            switch (type)
            {
            case ShaderValueType.Float2:
                return(2);

            case ShaderValueType.Float3:
                return(3);

            case ShaderValueType.Float4:
                return(4);

            default:
                return(0);
            }
        }
Пример #4
0
 public static string ValueTypeToString(ShaderValueType type)
 {
     switch (type.Class)
     {
         case ShaderValueTypeClass.Scalar:
             return ScalarTypeToString((ShaderValueScalarType)type);
         case ShaderValueTypeClass.Vector:
             return VectorTypeToString((ShaderValueVectorType)type);
         case ShaderValueTypeClass.Matrix:
             return MatrixTypeToString((ShaderValueMatrixType)type);
         case ShaderValueTypeClass.Array:
             var arrayType = (ShaderValueArrayType)type;
             return string.Format("{0}[{1}]", ValueTypeToString(arrayType.ElementType), arrayType.Length);
         case ShaderValueTypeClass.Structure:
             return ((ShaderValueStructureType)type).Name;
         default:
             throw new ArgumentOutOfRangeException();
     }
 }
Пример #5
0
        public static string ToShaderString(this ShaderValueType type, string precisionToken = PrecisionUtil.Token)
        {
            switch (type)
            {
            case ShaderValueType.Boolean:
                return(precisionToken);

            case ShaderValueType.Float:
                return(precisionToken);

            case ShaderValueType.Float2:
                return($"{precisionToken}2");

            case ShaderValueType.Float3:
                return($"{precisionToken}3");

            case ShaderValueType.Float4:
                return($"{precisionToken}4");

            case ShaderValueType.Matrix2:
                return($"{precisionToken}2x2");

            case ShaderValueType.Matrix3:
                return($"{precisionToken}3x3");

            case ShaderValueType.Matrix4:
                return($"{precisionToken}4x4");

            case ShaderValueType.Integer:
                return("int");

            case ShaderValueType.Uint:
                return("uint");

            case ShaderValueType.Uint4:
                return("uint4");

            default:
                return("Error");
            }
        }
Пример #6
0
 public static string ValueVariableDeclaration(ShaderValueType type, string name)
 {
     if (type.Class != ShaderValueTypeClass.Array)
         return string.Format("{0} {1}", ValueTypeToString(type), name);
     var arrayType = (ShaderValueArrayType)type;
     return string.Format("{0} {1}[{2}]", ValueTypeToString(arrayType.ElementType), name, arrayType.Length.ToString(CultureInfo.InvariantCulture));
 }