public bool TryGetFromat(ref string name, Type type, out ShaderFieldFormat format) { if (TargetType.IsAssignableFrom(type)) { format = Format; return(true); } format = ShaderFieldFormat.None; return(false); }
private static ShaderFieldFormat GetShaderFieldFormat() { ShaderFieldFormat formats = ShaderFieldFormat.None; foreach (var item in formatAccessors) { formats |= item.Format; } return(formats); }
public static IShaderField GetFormatAccessor(ShaderFieldFormat format) { foreach (var formatAccessor in formatAccessors) { if (formatAccessor.Format == format) { return(formatAccessor); } } throw new ArgumentOutOfRangeException(format.ToString()); }
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); }
/// <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); }
public FormatBySuffix(string keyword, ShaderFieldFormat format) { Suffix = keyword; Format = format; }
public FormatBySuffix(ShaderFieldFormat format) { Suffix = string.Empty; Format = format; }
public FormatByEquals(Type targetType, ShaderFieldFormat format) { TargetType = targetType; Format = format; }
public ShaderField(string name, int mask, ShaderFieldFormat format, IReflectiveField fieldAccessor) : base(mask, fieldAccessor) { ShaderFieldName = name; ShderFieldID = Shader.PropertyToID(name); FormatAccessor = GetFormatAccessor(format); }