VS_GS VS_Line(VS_GS input) { //invert y axis. input.Pos.Y = -input.Pos.Y; input.Size.Y = -input.Size.Y; // y position of 2nd line point. return(input); }
void GS(VS_GS[] input, TriangleStream <PS_IN> spriteStream) { PS_IN v = new PS_IN(); VS_GS g = input[0]; v.Color = g.Color; Matrix2x2 rot = GetRotation(input[0].Rotation); Vector2 origin = g.Origin.XY; Vector2 pos = g.Pos.XY; Vector2 size = g.Size.XY; Vector2 uv = g.UV.XY; Vector2 p; for (int i = 0; i < 4; i++) { p = Mul(size * (spriteCorners[i] - origin), rot); p += pos; v.Pos = new Vector4(p, 0, 1); v.Pos = Mul(v.Pos, wvp); v.UV.X = uv[uvTable[i].X]; v.UV.Y = uv[uvTable[i].Y]; v.UV.Z = g.ArraySlice; spriteStream.Append(v); } }
VS_GS VS_Tri(VS_GS input) { //invert y axis. input.Pos.Y = -input.Pos.Y; input.Size.Y = -input.Size.Y; input.Origin.Y = -input.Origin.Y; return(input); }
VS_GS VS(VS_GS input) { input.UV.XZ /= textureSize.X; input.UV.YW /= textureSize.Y; //invert y axis. input.Pos.Y = -input.Pos.Y; // Invert Y origin input.Origin.Y = -input.Origin.Y; return(input); }
VS_GS VS_Circle(VS_GS input) { //invert y axis. input.Pos.Y = -input.Pos.Y; return(input); }