public Vector2Type(Scope scope, string scalar) : base(scalar + "2") { Colums = 2; _scalarType = scope.GetType(scalar); scope.AddFunction(new StdFunctionDeclaration(Name, this, new ParameterDeclaration(_scalarType, "x"), new ParameterDeclaration(_scalarType, "y"))); Members = new MemberDeclaration[] { ShaderRuntime.DeclareMember(this, "x", 0, _scalarType), ShaderRuntime.DeclareMember(this, "y", 1, _scalarType), }; ReflectionType = new Graphics.ShaderReflectionType { Class = Graphics.TypeClass.Vector, Columns = 2, Name = Name, Register = Graphics.RegisterSet.Float4, Elements = 1, Type = ShaderRuntime.GetShaderType(scalar) }; }
public StringType() : base("string") { Size = -1; ReflectionType = new Graphics.ShaderReflectionType { Class = Graphics.TypeClass.Object, Type = Graphics.ShaderType.String, Name = "string", Register = Graphics.RegisterSet.Undefined }; }
public BoolType() : base("bool") { Size = sizeof(int); ReflectionType = new Graphics.ShaderReflectionType { Class = Graphics.TypeClass.Scalar, Columns = 1, Elements = 1, Name = this.Name, Register = Graphics.RegisterSet.Float4, Type = Graphics.ShaderType.Bool }; }
public override void CheckSemantic(Scope scope, ErrorLog log) { base.CheckSemantic(scope, log); if (Members != null) { int offset = 0; foreach (var item in Members) { item.DeclaringType = this; item.CheckSemantic(scope, log); item.Offset = offset; offset += item.Type.Size; } Size = offset; } ReflectionType = new Graphics.ShaderReflectionType { Name = Name, Columns = 0, Rows = 0, Class = Graphics.TypeClass.Struct, Register = Graphics.RegisterSet.Float4, Type = Graphics.ShaderType.UserDefined, }; ReflectionType.Members = new Graphics.ShaderReflectionVariable[Members.Length]; for (int i = 0; i < Members.Length; i++) { Graphics.ShaderReflectionVariable v = new Graphics.ShaderReflectionVariable { Name = Members[i].Name, Size = Members[i].Type.Size, Location = Members[i].Offset, Semantic = Members[i].Semantic, Type = Members[i].Type.ReflectionType }; } }