Пример #1
0
        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);
        }
Пример #2
0
        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);
        }