public void DeclareParamAndBind( MidAttributeWrapperDecl attr, ITypeHLSL attrType, string semantic, ref bool firstParam, Span span, string prefix = "") { var attrName = attr.Name.ToString(); // \todo: Insist that the type // is a "real" type (rather than // a synthetic one that might be zero or more // real parameters...) var attrVal = DeclareParam( attrName, attrType, span, ref firstParam, semantic == null ? "" : ": " + semantic, prefix: prefix); BindAttr(attr, attrVal); }
public void AddField( string name, ITypeHLSL type) { _fields.Add(new Field { Name = name, Type = type }); }
// Declaration helpers public void DeclareFields( ITypeHLSL type, Span span, string name, string prefix = "", string semantic = null, string suffix = "") { var val = type.CreateVal(name); var decls = DeclareBase( val, prefix, semantic, suffix + ";").ToArray(); foreach (var d in decls) { span.WriteLine(d); } }
public EmitValHLSL( ITypeHLSL type) { _type = type; }
public PseudoArrayTypeHLSL( ITypeHLSL elementType, EmitValHLSL elementCount) { _elementType = elementType; _elementCount = elementCount; }
private ITypeHLSL MakePseudoArrayElemType( ITypeHLSL type, EmitValHLSL count) { return MakePseudoArrayElemTypeImpl( (dynamic)type, count); }
private EmitValHLSL GetField( EmitValHLSL objVal, ITypeHLSL fieldRep, string fieldName, int fieldIndex, Span span) { return GetFieldImpl( (dynamic)objVal, (dynamic)fieldRep, fieldName, fieldIndex, span); }
private EmitValHLSL DeclareParam( string name, ITypeHLSL type, Span span, ref bool first, string semantic = null, string prefix = "") { var val = type.CreateVal(name); DeclareParam( val, prefix, semantic, ref first, span ); return val; }
private ITypeHLSL DeclareConnectorFields( ITypeHLSL rep, string name, string semantic, Span span, EmitValHLSL[] arrayDims = null) { DeclareFields( rep, span, name, semantic: semantic); return rep; }
public ITypeHLSL MakeArrayType( ITypeHLSL elementType, EmitValHLSL elementCount) { if (elementType is RealTypeHLSL) { return new ArrayTypeHLSL( (RealTypeHLSL)elementType, elementCount); } else { return new PseudoArrayTypeHLSL( MakePseudoArrayElemType(elementType, elementCount), elementCount); } }