public BoundingBoxRenderableComponent(IVeldridShaderSpecification shader, DeviceBufferesUpdater deviceBufferes, BoundingBox box) : base(shader, deviceBufferes) { EntityTag = new ElementTag("BoundingBox"); Box = box; geometry = new Geometry3D(); var corners = box.GetCorners(); var points = new List <Vector3>() { corners.NearBottomLeft, corners.NearBottomRight, corners.NearTopLeft, corners.NearTopRight, corners.FarBottomLeft, corners.FarBottomRight, corners.FarTopLeft, corners.FarTopRight }; geometry.Positions = points; var index = 0; geometry.Indices = new List <int>(geometry.Positions.Select(x => index++)); var lb = new Std.Engine.Helpers.LineBuilder(); geometry = lb.Build(points); }
public static void Build(IContextState context, Vector3[] points) { IShaderInfo[] lineShaders = { new D3DShaderInfo( Path.Combine(AppContext.BaseDirectory, "Shaders", "Line"), $"line-{ShaderStages.Vertex}", ShaderStages.Vertex.ToString(), "VShaderLines"), //new ShaderInfo{ Path= $"{Path.Combine(AppContext.BaseDirectory, "Shaders", "Line", "line")}-{ShaderStages.Geometry}.hlsl", // Stage = ShaderStages.Geometry.ToString(), EntryPoint = "GShaderLines"}, new D3DShaderInfo( Path.Combine(AppContext.BaseDirectory, "Shaders", "Line"), $"line-{ShaderStages.Fragment}", ShaderStages.Fragment.ToString(), "PShaderLinesFade") }; var mb = new Std.Engine.Helpers.MeshBulder(); //var box = mb.BuildBox(Vector3.Zero, 1, 1, 1); var lb = new Std.Engine.Helpers.LineBuilder(); //var box = lb.Build(mb.BuildBox(Vector3.Zero, -20, 20, 20).Positions);// points.ToList().GetRange(0,20)); var dd = points.ToList().GetRange(0, 5).ToList(); var box = lb.Build(points); var shader = new LineShaderSpecification(new[] { new ShaderTechniquePass(lineShaders) }); // var line = context.GetEntityManager() .CreateEntity(new ElementTag("LineEntity")) .AddComponent(new LineGeometryRenderComponent( shader, new LineDeviceBufferesUpdater(shader), box // new Std.Engine.Helpers.LineBuilder().Build(box.Positions.GetRange(0,3)) )); context.EntityOrder.RegisterOrder <VeldridRenderSystem>(line.Tag); }