Exemplo n.º 1
0
 public bool TryGetFromat(ref string name, Type type, out ShaderFieldFormat format)
 {
     if (TargetType.IsAssignableFrom(type))
     {
         format = Format;
         return(true);
     }
     format = ShaderFieldFormat.None;
     return(false);
 }
Exemplo n.º 2
0
        private static ShaderFieldFormat GetShaderFieldFormat()
        {
            ShaderFieldFormat formats = ShaderFieldFormat.None;

            foreach (var item in formatAccessors)
            {
                formats |= item.Format;
            }
            return(formats);
        }
Exemplo n.º 3
0
        public static IShaderField GetFormatAccessor(ShaderFieldFormat format)
        {
            foreach (var formatAccessor in formatAccessors)
            {
                if (formatAccessor.Format == format)
                {
                    return(formatAccessor);
                }
            }

            throw new ArgumentOutOfRangeException(format.ToString());
        }
Exemplo n.º 4
0
            public bool TryGetFromat(ref string name, Type type, out ShaderFieldFormat format)
            {
                if (type == TargetType)
                {
                    foreach (var pair in KeywordPairs)
                    {
                        if (name.EndsWith(pair.Suffix, StringComparison.Ordinal))
                        {
                            name   = name.Remove(name.Length - pair.Suffix.Length, pair.Suffix.Length);
                            format = pair.Format;
                            return(true);
                        }
                    }
                }

                format = ShaderFieldFormat.None;
                return(false);
            }
Exemplo n.º 5
0
        /// <summary>
        /// 获取到C#类型所表示的着色器参数类型,若未知格式则返回false,确定格式则返回true;
        /// </summary>
        private static bool TryGetFormat(ref string name, Type type, out ShaderFieldFormat format)
        {
            foreach (var pair in formatTypes)
            {
                if (pair.TryGetFromat(ref name, type, out format))
                {
                    if (format == ShaderFieldFormat.None)
                    {
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
            }

            format = ShaderFieldFormat.None;
            return(false);
        }
Exemplo n.º 6
0
 public FormatBySuffix(string keyword, ShaderFieldFormat format)
 {
     Suffix = keyword;
     Format = format;
 }
Exemplo n.º 7
0
 public FormatBySuffix(ShaderFieldFormat format)
 {
     Suffix = string.Empty;
     Format = format;
 }
Exemplo n.º 8
0
 public FormatByEquals(Type targetType, ShaderFieldFormat format)
 {
     TargetType = targetType;
     Format     = format;
 }
Exemplo n.º 9
0
 public ShaderField(string name, int mask, ShaderFieldFormat format, IReflectiveField fieldAccessor) : base(mask, fieldAccessor)
 {
     ShaderFieldName = name;
     ShderFieldID    = Shader.PropertyToID(name);
     FormatAccessor  = GetFormatAccessor(format);
 }